void StateRoom::accessRoom() { INetworkRelay *network = this->_world->getSharedObject<INetworkRelay>("NetworkRelay"); if (network) { Remote *remote = NULL; if (this->_textboxRoom->getString() != "") this->_textboxRoom->setString("defaulte"); if (!(remote = network->getRemote(0))) throw RTException("Invalid remote"); IBuffer *buffer = network->getTCPBuffer(); *buffer << static_cast<char>(INetworkRelay::CHANGE_ROOM_QUERY); *buffer << this->_textboxRoom->getString(); remote->sendTCP(buffer); Thread<INetworkRelay> *thread = new Thread<INetworkRelay>(); thread->start(network, &INetworkRelay::start, Any()); while (42) { LockVector<IBuffer *> &recv_buffer = remote->getRecvBufferTCP(); auto guard = create_lock(recv_buffer); for (auto it = recv_buffer.begin(); it != recv_buffer.end();) { if (this->parsePacket(recv_buffer, it)) return ; } } } else { throw RTException("Invalid network"); } }