void RemoteNetworkView::ForwardEvent(IEventDataPtr pEventData) { std::string httpinmsg; if (!pEventData) { GCC_ERROR("Event Invalid"); return; } int socketId = pEventData->VGetSocketId(); std::ostrstream out; pEventData->VSerialize(out); out << std::ends; IPacket *packetBack = NULL; if (!strncmp("HTTP", &out.rdbuf()->str()[0], 4)) { packetBack = GCC_NEW HTTPPacket(out.rdbuf()->str()); } else { //TODO create binary packet } std::shared_ptr<IPacket> ipBack(packetBack); printf("RemoteNetworkView Forward Event socket:%d %s\n", socketId, pEventData->GetName()); g_pSocketManager->Send(socketId, ipBack); if (!strncmp("HTTP", &out.rdbuf()->str()[0], 4)) { IEventDataPtr pCloseSocketHttpEvent(CREATE_EVENT(EventData_CloseSocketHTTP::sk_EventType)); char* id = new char[100]; sprintf_s(id, 100, "%d", socketId); httpinmsg.append(id); std::istrstream in(httpinmsg.c_str(), httpinmsg.size()); pCloseSocketHttpEvent->VDeserialize(in); IEventManager::Get()->VQueueEvent(pCloseSocketHttpEvent); } }
void NetworkEventForwarder::ForwardEvent(IEventDataPtr pEventData) { std::ostrstream out; out << static_cast<int>(RemoteEventSocket::NetMsg_Event) << " "; out << pEventData->VGetEventType() << " "; pEventData->VSerialize(out); out << "\r\n"; std::shared_ptr<BinaryPacket> eventMsg(GCC_NEW BinaryPacket(out.rdbuf()->str(), out.pcount())); g_pSocketManager->Send(m_sockId, eventMsg); }