Ejemplo n.º 1
0
 private void handleClientIDSet(short clientID)
 {
     //Send messages to server
     while (clientMessageQueue.Count > 0)
     {
         QueuedMessage queuedMessage = clientMessageQueue.Dequeue(); //Get next message
         sendMessageToServer(queuedMessage.msg, queuedMessage.guaranteeDelivery);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Sends all messages in messageQueue to the server.
        /// </summary>
        private void sendQueuedMessages()
        {
            int queuedMessages = messageQueue.Count; //Number of messages queued when this method was called

            /* Using queuedMessages instead of messageQueue.Count to avoid an infinite loop caused by messages
             * being requeued once the reliable message limit is reached */

            for (int i = 0; i < queuedMessages; i++)
            {
                QueuedMessage queuedMsg = messageQueue.Dequeue();
                sendMessageToServer(queuedMsg.msg, queuedMsg.guaranteeDelivery);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Sends queued messages to the desired client(s).
        /// </summary>
        private void sendQueuedMessages()
        {
            #region Messages to All Connected Clients

            int queuedMessages = messageQueue.Count; //Number of messages queued when this method was called

            /* Using queuedMessages instead of messageQueue.Count to avoid an infinite loop caused by messages
             * being requeued once the reliable message limit is reached */
            for (int i = 0; i < queuedMessages; i++)
            {
                QueuedMessage queuedMsg = messageQueue.Dequeue();
                sendMessageToClients(connectedClients, queuedMsg.msg, queuedMsg.guaranteeDelivery);
            }

            #endregion Messages to All Connected Clients

            #region Messages to Individual Clients

            //Send any client specific queued messages (messages only going to one client)
            foreach (KeyValuePair <short, Queue <QueuedMessage> > client in clientMessageQueues)
            {
                short clientID = client.Key;

                //Connection found and active
                if (connectedClients.ContainsKey(clientID) && connectedClients[clientID].IsCreated)
                {
                    if (clientMessageQueues.ContainsKey(clientID))                      //Message queue has been created for connection
                    {
                        int queuedClientMessages = clientMessageQueues[clientID].Count; //Number of messages queued when this method was called

                        /* Using queuedMessages instead of messageQueue.Count to avoid an infinite loop caused by messages
                         * being requeued once the reliable message limit is reached */
                        for (int i = 0; i < queuedMessages; i++)
                        {
                            QueuedMessage queuedMsg = clientMessageQueues[clientID].Dequeue();
                            sendMessageToClient(connectedClients[clientID], clientID, queuedMsg.msg, queuedMsg.guaranteeDelivery);
                        }
                    }
                }
            }

            #endregion Messages to Individual Clients
        }