void run() { while(1) { int fd_client; get_sockfd(fd_client); handle_chat(fd_client); } }
// static void LLToolBar::onClickChat(void* user_data) { handle_chat(NULL); }
//��������������������������������������������������������������������������� // TurnerClassic - handle_sysmsg //��������������������������������������������������������������������������� void TurnerClassic::handle_sysmsg (DPID to, DPMSG_GENERIC *pmsg, DWORD size) { assertMyth("TurnerClassic::handle_sysmsg needs valid input", pmsg != 0); switch (pmsg->dwType) { case DPSYS_SETSESSIONDESC: { DPMSG_SETSESSIONDESC *msg = (DPMSG_SETSESSIONDESC*)pmsg; if (!(flags & TURNER_FLAGS_HOST)) { session.dwFlags = msg->dpDesc.dwFlags; session.guidInstance = msg->dpDesc.guidInstance; session.guidApplication = msg->dpDesc.guidApplication; session.dwMaxPlayers = msg->dpDesc.dwMaxPlayers; session.dwCurrentPlayers = msg->dpDesc.dwCurrentPlayers; if (msg->dpDesc.lpszSessionNameA) { session.lpszSessionNameA = sessionName; strncpy(sessionName,msg->dpDesc.lpszSessionNameA, sizeof(sessionName)); } if (msg->dpDesc.lpszPasswordA) { session.lpszPasswordA = password; strncpy(password,msg->dpDesc.lpszPasswordA, sizeof(password)); } session.dwUser1 = msg->dpDesc.dwUser1; session.dwUser2 = msg->dpDesc.dwUser2; session.dwUser3 = msg->dpDesc.dwUser3; session.dwUser4 = msg->dpDesc.dwUser4; } sys_set_session_desc(msg->dpDesc); } break; case DPSYS_HOST: flags |= TURNER_FLAGS_HOST; sys_host (); break; case DPSYS_SESSIONLOST: sys_no_session (); break; case DPSYS_CREATEPLAYERORGROUP: { DPMSG_CREATEPLAYERORGROUP *msg = (DPMSG_CREATEPLAYERORGROUP *)pmsg; switch (msg->dwPlayerType) { case DPPLAYERTYPE_PLAYER: sys_newplayer (msg->dpId, msg->dpnName.lpszShortNameA, msg->dpnName.lpszLongNameA, msg->lpData, msg->dwDataSize, msg->dpIdParent, msg->dwFlags); break; } } break; case DPSYS_DESTROYPLAYERORGROUP: { DPMSG_DESTROYPLAYERORGROUP *msg = (DPMSG_DESTROYPLAYERORGROUP *)pmsg; switch (msg->dwPlayerType) { case DPPLAYERTYPE_PLAYER: sys_delplayer (msg->dpId,msg->dwFlags); break; } } break; case DPSYS_SETPLAYERORGROUPNAME: { DPMSG_SETPLAYERORGROUPNAME *msg = (DPMSG_SETPLAYERORGROUPNAME *)pmsg; switch (msg->dwPlayerType) { case DPPLAYERTYPE_PLAYER: sys_set_player_name(msg->dpId, msg->dpnName.lpszShortNameA, msg->dpnName.lpszLongNameA); break; } } break; case DPSYS_SETPLAYERORGROUPDATA: { DPMSG_SETPLAYERORGROUPDATA *msg = (DPMSG_SETPLAYERORGROUPDATA *)pmsg; switch (msg->dwPlayerType) { case DPPLAYERTYPE_PLAYER: sys_set_player_data(msg->dpId, msg->lpData, msg->dwDataSize); break; } } break; case DPSYS_CHAT: { DPMSG_CHAT *msg = (DPMSG_CHAT*)pmsg; handle_chat(msg->idFromPlayer, msg->idToPlayer, msg->idToGroup, msg->lpChat->lpszMessageA); break; } break; } }