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); }
public Event(string address, NetworkObject networkObject, int due) { this.address = address; this.networkObject = networkObject; this.due = due; }
/// <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); }
/// <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); }
/// <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); }