示例#1
0
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);
}
示例#2
0
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);
    }
  }
}
示例#3
0
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;
                    }