예제 #1
0
        public void Enqueue(string address, NetworkObject networkObject, int due = 0)
        {
            // Add the event to the queue and trigger the callback
            this.messageQueue.Enqueue(new Event(address, networkObject, due));

            if (eventEnqueuedCallback != null)
                eventEnqueuedCallback();
        }
        public void Enqueue(string address, NetworkObject networkObject, int due = 0)
        {
            System.Diagnostics.Debug.WriteLine("ENQUEUE OUTGOING: " + address);

            EventQueue queue;
            if (this.messageQueue.TryGetValue(address, out queue))
                queue.Enqueue(address, networkObject, due);
            else
            {
                queue = new EventQueue();
                queue.Enqueue(address, networkObject, due);
                messageQueue.Add(address, queue);
            }

            if (this.eventEnqueuedCallback != null)
                this.eventEnqueuedCallback(address);
        }
예제 #3
0
 public Event(string address, NetworkObject networkObject, int due)
 {
     this.address = address;
     this.networkObject = networkObject;
     this.due = due;
 }
예제 #4
0
 /// <summary>
 /// Serialize a NetworkObject to JSON
 /// </summary>
 /// <param name="networkObject">The NetworkObject to serialize to JSON</param>
 /// <returns>Stringified representation of the object</returns>
 private string SerializeNetworkObject(NetworkObject networkObject)
 {
     JsonSerializerSettings serializerSettings = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All };
     return JsonConvert.SerializeObject(networkObject, Formatting.None, serializerSettings);
 }
예제 #5
0
        /// <summary>
        /// Send a NetworObject via a TCP connection (unicast) to a given address.
        /// </summary>
        /// <param name="dataPacket">Data packet you wish to send</param>
        /// <param name="targetAddress">Address to send the data to</param>
        /// <param name="connectionTimeout">Time (in milliseconds) that defines how long we should attempt to connect to the other party (in case of network failure)</param>
        /// <returns></returns>
        public async Task SendUnicastNetworkObject(NetworkObject dataPacket, string targetAddress, int connectionTimeout)
        {
            string json = this.SerializeNetworkObject(dataPacket);
            System.Diagnostics.Debug.WriteLine("UNICAST (" + targetAddress + "): " + json);

            await TCPSocketHelper.Send(targetAddress, json, connectionTimeout);
        }
예제 #6
0
 /// <summary>
 /// Broadcast a NetworkObject via UDP (multicast) to the entire network.
 /// </summary>
 /// <param name="dataPacket">Data to broadcats over the network</param>
 /// <returns></returns>
 public async Task BroadcastNetworkObject(NetworkObject dataPacket)
 {
     string json = this.SerializeNetworkObject(dataPacket);
     System.Diagnostics.Debug.WriteLine("BROADCAST: " + json);
     await this.Broadcast(json);
 }