#include "ChatServerVoice.h" void ChatServerVoice::onLoad() { ServerModule* sm = (ServerModule*) moduleInstances[ServerModule()]; sm->startServer(9932); } //void ChatServerVoice::run() {} bool ChatServerVoice::onEvent(const Archimedes::Event& event) { unsigned int type = app->getEventType(event); /*if(type == app->getEventType("DataSentEvent")) { //we did this? return true; } else */ if(type == app->getEventType(Archimedes::DataRecievedEvent())) { static ServerModule* sm; { sm = (ServerModule*) moduleInstances[ServerModule()]; } Archimedes::DataRecievedEvent& e = (Archimedes::DataRecievedEvent&) event; static std::string s; if(((char*)e.msg->m_pData)[0] == 'a' && ((char*)e.msg->m_pData)[1] == '0' && ((char*)e.msg->m_pData)[2] == ' ' && ((char*)e.msg->m_pData)[3] == 'o') { s = std::string((const char*)e.msg->m_pData + 4, e.msg->m_cbSize - 4); if(s == "/quit") { sm->disconnectClient(e.msg->m_conn); } else if(s == "/shutdown") { sm->stopServer(); app->end(); } for(auto& it : sm->getClients()) { if(it.first != e.msg->m_conn) sm->sendReliable(it.first, e.msg->m_pData, e.msg->m_cbSize); else sm->sendReliable(e.msg->m_conn, "a0 o\nMessage sent\n", strlen("a0 o\nMessage sent\n")); } } else { s = "audio data"; for(auto& it : sm->getClients()) { if(it.first != e.msg->m_conn) sm->sendReliable(it.first, e.msg->m_pData, e.msg->m_cbSize); } } std::cerr << "Server Recieved: " << s << std::endl; return true; } /*else if(type == app->getEventType("ConnectionStatusChangedEvent")) { //Archimedes::ConnectionStatusChangedEvent& e = (Archimedes::ConnectionStatusChangedEvent&) event; return false; }*/ return false; }