enum EAlertAckResult CNSTAlerts::Acknowledge(const string & alert_id, const string & user) { EAlertType type = x_IdToType(alert_id); if (type == eUnknown) return eNotFound; return Acknowledge(type, user); }
void WebController::OnReceiveClientData(const char * content) { int id = -1; int returnValue = -1; //we have a connection. //incoming answer from client if (strlen(content) > 39 && strstr(content, "CB_ACK") == content+9) { // answer looks like this {"type":"CB_ACK","id":<integer>,"returnValue":<integer>} if(sscanf(content, "{\"type\":\"CB_ACK\",\"id\":%d,\"returnValue\":%d}", &id, &returnValue) == 2){ //only poll poll callbacks in here Acknowledge(id, returnValue); } } }
void Message::CheckTouch(HWND wmControl) { if (wmControl == hWndMessageWindow) { // acknowledge with click/touch Acknowledge(0); } }
void ConnectionSystem::Update(Scalar dt) { sf::Packet* packet; sf::IpAddress sender; u16 port; //Handle timing out Scalar DeltaMessageTime = m_Engine->GetElapsedTime() - m_LastMessageTime; if(DeltaMessageTime >= (TIMEOUT_LIMIT * 0.5) && m_Connected && !m_PendingPing) { Ping(); } if(DeltaMessageTime >= TIMEOUT_LIMIT && m_Connected) { Disconnect(); m_Engine->Log("Connection lost: timed out.\n"); } else if (DeltaMessageTime >= TIMEOUT_LIMIT && m_ConnectionAttempted) { Disconnect(); m_Engine->Log("Connection could not be established: timed out.\n"); } if(m_Connected || m_ConnectionAttempted) { bool KeepChecking = true; while(KeepChecking) { packet = m_Socket->Receive(sender, port); if(packet && port == m_ServerPort) { i8 PacketType; u32 PacketID; (*packet) >> PacketID >> PacketType; m_LastMessageTime = m_Engine->GetElapsedTime(); i8 NumCommands = 0; switch(PacketType) { case PT_CONNECT: if(!m_Connected && m_ConnectionAttempted) { (*packet) >> m_ClientID >> m_EntityID; m_Connected = true; m_Engine->Log("Connected to server at %s:%d.\n", sender.toString().c_str(), port); } else { m_Engine->Log("Could not connect to server, already connected to a server or a connection was not requested!"); } break; case PT_ACK: //a packet was acknowledged, get the ack packet ID and remove it from pending ack queue (TODO) u32 AckPacketID; (*packet) >> AckPacketID; //m_Engine->Log("Packet %d acknowledged by server!\n", AckPacketID); if(m_PendingPing && AckPacketID == m_PendingPingID) m_PendingPing = false; break; case PT_PING: Acknowledge(PacketID); m_PendingPing = false; break; case PT_DISCONNECT: i8 Reason; (*packet) >> Reason; if(Reason == DR_TIMEOUT) m_Engine->Log("Disconnected, reason: timed out.\n"); else if (Reason == DR_QUIT) m_Engine->Log("Disconnected, reason: quit.\n"); m_Connected = false; m_ConnectionAttempted = false; break; case PT_COMMAND: //Parse and execute command (*packet) >> NumCommands; for(i32 i = 0; i < NumCommands; i++) { i8 CommandType = 0; (*packet) >> CommandType; if(CommandType == GCOM_CREATE_PLAYER) { CreatePlayerCommand* cmd = new CreatePlayerCommand(m_Engine); cmd->Deserialize(packet); cmd->Execute(); delete cmd; } else if (CommandType == GCOM_PLAYER_POSITION) { if(PacketID > m_LastStateUpdateSequence || m_LastStateUpdateSequence == 0) { PlayerPositionCommand* cmd = new PlayerPositionCommand(m_Engine); cmd->Deserialize(packet); cmd->Execute(); delete cmd; } } else if (CommandType == GCOM_SET_TIME) { if(PacketID > m_LastStateUpdateSequence || m_LastStateUpdateSequence == 0) { SetTimeCommand* cmd = new SetTimeCommand(m_Engine); cmd->Deserialize(packet); cmd->Execute(); delete cmd; } } else if (CommandType == GCOM_SET_TIME_RATE) { if(PacketID > m_LastStateUpdateSequence || m_LastStateUpdateSequence == 0) { SetTimeRateCommand* cmd = new SetTimeRateCommand(m_Engine); cmd->Deserialize(packet); cmd->Execute(); delete cmd; } } } if(PacketID > m_LastStateUpdateSequence || m_LastStateUpdateSequence == 0) m_LastStateUpdateSequence = PacketID; break; default: //m_Engine->Log("Packet type %d not registered in the internal enum.\n", (i32)PacketType); break; }