void NetGameClient::ExecFrame() { if (local_player) { if (local_player->GetObjID() == 0) { SendJoinRequest(); } else if (active) { // check health of server: NetPeer* server_peer = link->FindPeer(server_id); if (server_peer && (NetLayer::GetUTC() - server_peer->LastReceiveTime() > 15)) { NetMsg net_disco(0, NET_DISCONNECT, 0, 0, 0); DoDisconnect(&net_disco); } // if server is still there, else if (server_peer) { // check if any old join announcements still need to be processed: ListIter<NetJoinAnnounce> iter = join_backlog; while (++iter) { NetJoinAnnounce* join_ann = iter.value(); if (DoJoinBacklog(join_ann)) { iter.removeItem(); delete join_ann; } } } } } NetGame::ExecFrame(); }
NetGameClient::NetGameClient() : server_id(0), join_req_time(0) { Print("Constructing NetGameClient\n"); NetHost me; Text server_name; WORD port = 11101; NetClientConfig* ncc = NetClientConfig::GetInstance(); if (ncc) { NetServerInfo* info = ncc->GetSelectedServer(); if (info) { server_name = info->hostname; port = info->gameport; } } if (server_name.length() && port > 0) { Print(" '%s' is a client of '%s'\n", me.Name(), server_name); link = new(__FILE__,__LINE__) NetLink; server_id = link->AddPeer(NetAddr(server_name, port)); SendJoinRequest(); } else if (port == 0) { Print(" '%s' invalid game port number %d\n", me.Name(), port); } else { Print(" '%s' is a client without a server\n", me.Name()); } }
void GatewayStack::ProcessJoinStatus() { if (state == stOperational) return; LOG_INFO_APP("Join flow timeouted. Resending join request."); SendJoinRequest(); }
void GatewayStack::NMSessionSucceeded() { LOG_INFO_APP("session to NM succeeded."); datalink.CreateNeighborSession(NetworkManager_UniqueID(), NetworkManager_Nickname()); datalink.SetNeighborSession(NetworkManager_UniqueID(), clientNM->ActiveSession()); SendJoinRequest(); state = stJoining; }
uint8 Process_Event() { uint8 current_event; current_event = Pop_T(); switch(current_event) { case EVENT_BEACON_HANDLER: BeaconHandler(DataRecvBuffer); break; case EVENT_JOINREQUESTACK_HANDLER: JoinRequestACKHandler(); break; case EVENT_JOINREQUEST_SEND: SendJoinRequest(); break; case EVENT_DATA_SEND: DataSend(); break; case EVENT_DATAACK_HANDLER: DataACKHandler(); break; case EVENT_WAKE_A7139: A7139_WakeToRecv(); break; case EVENT_CSMA_RESEND: CSMADataResend(); break; case EVENT_COLLECT_DATA: CollectData(); break; case EVENT_IDENTIFY_CAR: IdentifyCar(); break; case EVENT_REJOIN_HANDLER: ReJoinHandler(); break; } return current_event; }