CmdResult SplitCommand::Handle(const std::vector<std::string>& parms, User* u) { if (IS_LOCAL(u)) return HandleLocal(parms, IS_LOCAL(u)); if (IS_REMOTE(u)) return HandleRemote(parms, IS_REMOTE(u)); if (IS_SERVER(u)) return HandleServer(parms, IS_SERVER(u)); ServerInstance->Logs->Log("COMMAND", LOG_DEFAULT, "Unknown user type in command (uuid=%s)!", u->uuid.c_str()); return CMD_INVALID; }
void mythVirtualServer::acceptthread(){ /* Loop, waiting for network events */ while (!m_stop) { /* Wait for events */ SDLNet_CheckSockets(socketset, 10); /* Check for new connections */ if ( SDLNet_SocketReady(servsock) ) { HandleServer(); } /* Check for events on existing clients */ //#pragma omp parallel for for (int i=0; i< CHAT_MAXPEOPLE; ++i ) { if (SDLNet_SocketReady(people[i]->sock)) { //ServerDecodeCallBack(&people[i]); HandleClient(i); } } } cleanup(0); }
main(int argc, char *argv[]) { IPaddress serverIP; int i; /* Initialize SDL */ if ( SDL_Init(0) < 0 ) { fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError()); exit(1); } /* Initialize the network */ if ( SDLNet_Init() < 0 ) { fprintf(stderr, "Couldn't initialize net: %s\n", SDLNet_GetError()); SDL_Quit(); exit(1); } /* Initialize the channels */ for ( i=0; i<CHAT_MAXPEOPLE; ++i ) { people[i].active = 0; people[i].sock = NULL; } /* Allocate the socket set */ socketset = SDLNet_AllocSocketSet(CHAT_MAXPEOPLE+1); if ( socketset == NULL ) { fprintf(stderr, "Couldn't create socket set: %s\n", SDLNet_GetError()); cleanup(2); } /* Create the server socket */ SDLNet_ResolveHost(&serverIP, NULL, CHAT_PORT); printf("Server IP: %x, %d\n", serverIP.host, serverIP.port); servsock = SDLNet_TCP_Open(&serverIP); if ( servsock == NULL ) { fprintf(stderr, "Couldn't create server socket: %s\n", SDLNet_GetError()); cleanup(2); } SDLNet_TCP_AddSocket(socketset, servsock); /* Loop, waiting for network events */ for ( ; ; ) { /* Wait for events */ SDLNet_CheckSockets(socketset, ~0); /* Check for new connections */ if ( SDLNet_SocketReady(servsock) ) { HandleServer(); } /* Check for events on existing clients */ for ( i=0; i<CHAT_MAXPEOPLE; ++i ) { if ( SDLNet_SocketReady(people[i].sock) ) { HandleClient(i); } } } cleanup(0); /* Not reached, but fixes compiler warnings */ return 0; }
int main(int argc,char* argv[]) { int ret; int lport=0,rport=0; char* msg=NULL; int sock = -1; if(argc == 1) { fprintf(stderr,"%s OPTIONS\n",argv[1]); fprintf(stderr,"\tlport rport msg for client\n"); fprintf(stderr,"\tlport for server\n"); exit(3); } if(argc >= 4) { signal(SIGINT,SigHandler); signal(SIGTERM,SigHandler); signal(SIGPIPE,SIG_IGN); while(st_RunLoop) { lport =atoi(argv[1]); rport = atoi(argv[2]); msg = argv[3]; DEBUG_INFO("\n"); sock = BindUdp(lport); if(sock < 0) { ret = sock; DEBUG_INFO("bind error %d\n",ret); goto out; } ret = HandleClient(sock,rport,msg); close(sock); sock = -1; sleep(1); DEBUG_INFO("\n"); } } else { lport = atoi(argv[1]); sock = BindUdp(lport); if(sock < 0) { ret = sock; goto out; } ret = daemon(0,0); if(ret < 0) { ret = LAST_ERROR_CODE(); goto out; } signal(SIGINT,SigHandler); signal(SIGTERM,SigHandler); signal(SIGPIPE,SIG_IGN); ret = HandleServer(sock); } out: if(sock >= 0) { close(sock); } sock = -1; return ret; }