void ClientUpdater::pushEventToClient(const ServerEvent& event) { if( !active ) return; try { switch(event.getEventType()) { case ServerEvent::Ping: handlerRef->pushPingEvent(event.getTPingEvent()); break; case ServerEvent::Status: handlerRef->pushStatusEvent(event.getTStatusEvent()); break; case ServerEvent::Sequence: handlerRef->pushSequenceEvent(event.getTSequenceEvent()); break; case ServerEvent::Message: // std::cout << event.getTMessageEvent().message << std::endl; handlerRef->pushMessageEvent(event.getTMessageEvent()); break; case ServerEvent::Parse: handlerRef->pushParseEvent(event.getTParseEvent()); break; case ServerEvent::File: handlerRef->pushFileEvent(event.getTFileEvent()); break; case ServerEvent::Controller: handlerRef->pushControllerEvent(event.getTControllerEvent()); break; case ServerEvent::DeviceRefresh: handlerRef->pushDeviceRefreshEvent(event.getTDeviceRefreshEvent()); break; case ServerEvent::DeviceData: handlerRef->pushDeviceDataEvent(event.getTDeviceDataEvent()); break; default: break; } } catch(CORBA::TRANSIENT&) { active = false; } catch(CORBA::SystemException&) { active = false; } catch(CORBA::Exception&) { active = false; } }
String^ Extensions::ToHexChatString(ServerEvent eventName) { switch (eventName) { case ServerEvent::RawLine: return "RAW LINE"; case ServerEvent::ISupport: return "005"; default: return eventName.ToString()->ToUpperInvariant(); } }
void HelloPolycodeApp::handleEvent(Event *event) { for(int i=0; i < players.size(); i++) { if(event->getDispatcher() == players[i]->client) { ServerClientEvent *clientEvent = (ServerClientEvent*) event; Player *player = players[i]; switch(clientEvent->getEventCode()) { case ServerClientEvent::EVENT_CLIENT_DATA: switch(clientEvent->dataType) { case CLIENT_READY: { ServerClientInfo info = player->getClientInfo(); server->sendReliableDataToAllClients((char*)&info, sizeof(ServerClientInfo), PLAYER_JOIN); } break; case PLAYER_SHOOT: { } break; case PACKET_TYPE_CLIENT_DATA: ClientData *clientData = (ClientData*) clientEvent->data; player->turning_state = clientData->turning_state; player->thrusting = clientData->thrusting; break; } break; } } } if(event->getDispatcher() == server) { ServerEvent *serverEvent = (ServerEvent*) event; switch(serverEvent->getEventCode()) { case ServerEvent::EVENT_CLIENT_DISCONNECTED: { for(int i=0;i<players.size();i++) { if(players[i]->client == serverEvent->client) { Player *player = players[i]; players.erase(players.begin()+i); gameScreen->removeChild(player->playerEntity); delete player->playerEntity; delete player; } } } break; case ServerEvent::EVENT_CLIENT_CONNECTED: { Player *newPlayer = new Player(); newPlayer->position.x = 640/2; newPlayer->position.y = 480/2; newPlayer->client = serverEvent->client; newPlayer->client->addEventListener(this, ServerClientEvent::EVENT_CLIENT_DATA); ScreenEntity *playerEntity = new ScreenEntity(); playerEntity->setPositionMode(ScreenEntity::POSITION_CENTER); ScreenShape *playerBody = new ScreenShape(ScreenShape::SHAPE_CIRCLE, 30,30,3); playerBody->setRotation(-90.0); playerEntity->addChild(playerBody); playerEntity->setPosition(640/2,480/2); gameScreen->addChild(playerEntity); newPlayer->playerEntity = playerEntity; players.push_back(newPlayer); printf("Player connected\n"); serverInfo.initialServerState = serverState; server->sendReliableDataToClient(newPlayer->client, (char*) &serverInfo, sizeof(ServerInfo), SERVER_INFO); } break; } } }
void PolycodeRemoteDebugger::handleEvent(Event *event) { for(int i=0; i < debuggerClients.size(); i++) { if(event->getDispatcher() == debuggerClients[i]->client) { ServerClientEvent *clientEvent = (ServerClientEvent*) event; DebuggerClient *client = debuggerClients[i]; switch(clientEvent->getEventCode()) { case ServerClientEvent::EVENT_CLIENT_DATA: switch(clientEvent->dataType) { case EVENT_DEBUG_PRINT: { String printStr = String(clientEvent->data); PolycodeConsole::print(printStr); PolycodeConsole::print("\n"); } break; case EVENT_DEBUG_ERROR: { if(!hasErred) { RemoteErrorData *data = (RemoteErrorData*)clientEvent->data; PolycodeConsole::print("Error in file "+String(data->fileName)+" on line "+String::IntToString(data->lineNumber)+"\n"); PolycodeConsole::print(String(data->errorMessage)+"\n"); PolycodeConsole::print("Backtrace:\n"); CoreServices::getInstance()->getCore()->makeApplicationMain(); } // hasErred = true; } break; case EVENT_DEBUG_BACKTRACE_INFO: { RemoteBacktraceData *data = (RemoteBacktraceData*)clientEvent->data; PolycodeConsole::print("In file "+String(data->fileName)+" on line "+String::IntToString(data->lineNumber)+"\n"); PolycodeConsole::addBacktrace(String(data->fileName), data->lineNumber, projectManager->getActiveProject()); } break; } break; } } } if(event->getDispatcher() == server) { ServerEvent *serverEvent = (ServerEvent*) event; switch(serverEvent->getEventCode()) { case ServerEvent::EVENT_CLIENT_DISCONNECTED: { for(int i=0; i<debuggerClients.size(); i++) { if(debuggerClients[i]->client == serverEvent->client) { DebuggerClient *client = debuggerClients[i]; debuggerClients.erase(debuggerClients.begin()+i); delete client; PolycodeConsole::print("Remote debugger client disconnected...\n"); } } } break; case ServerEvent::EVENT_CLIENT_CONNECTED: { DebuggerClient *newClient = new DebuggerClient(); newClient->client = serverEvent->client; newClient->client->addEventListener(this, ServerClientEvent::EVENT_CLIENT_DATA); PolycodeConsole::print("Remote debugger client connected...\n"); printf("CLIENT CONNECTED\n"); debuggerClients.push_back(newClient); } break; } } }
void ServerShared::logEvent(const ServerEvent &event) { StringPrinter p; event.print(p); appLog(p.getString(), LogOrigin::Server); }
void Server::record(const ServerEvent& event) { if (demostream.get()) event.write(*demostream); }