WingMan – Diff between revs 10 and 32

Subversion Repositories:
Rev:
Only display areas with differencesIgnore whitespace
Rev 10 Rev 32
1 using System; 1 using System;
2 using System.IO; 2 using System.IO;
3 using System.Threading; 3 using System.Threading;
4 using System.Threading.Tasks; 4 using System.Threading.Tasks;
5 using MQTTnet; 5 using MQTTnet;
6 using WingMan.Communication; 6 using WingMan.Communication;
7   7  
8 namespace WingMan.Lobby 8 namespace WingMan.Lobby
9 { 9 {
10 public class LobbyMessageSynchronizer : IDisposable 10 public class LobbyMessageSynchronizer : IDisposable
11 { 11 {
12 public delegate void LobbyMessageReceived(object sender, LobbyMessageReceivedEventArgs e); 12 public delegate void LobbyMessageReceived(object sender, LobbyMessageReceivedEventArgs e);
13   13  
14 public LobbyMessageSynchronizer(MqttCommunication mqttCommunication, TaskScheduler taskScheduler, 14 public LobbyMessageSynchronizer(MqttCommunication mqttCommunication, TaskScheduler taskScheduler,
15 CancellationToken cancellationToken) 15 CancellationToken cancellationToken)
16 { 16 {
17 MqttCommunication = mqttCommunication; 17 MqttCommunication = mqttCommunication;
18 CancellationToken = cancellationToken; 18 CancellationToken = cancellationToken;
19 TaskScheduler = taskScheduler; 19 TaskScheduler = taskScheduler;
20   20  
21 mqttCommunication.OnMessageReceived += MqttCommunicationOnOnMessageReceived; 21 mqttCommunication.OnMessageReceived += MqttCommunicationOnOnMessageReceived;
22 } 22 }
23   23  
24 private MqttCommunication MqttCommunication { get; } 24 private MqttCommunication MqttCommunication { get; }
25   25  
26 private CancellationToken CancellationToken { get; } 26 private CancellationToken CancellationToken { get; }
27 private TaskScheduler TaskScheduler { get; } 27 private TaskScheduler TaskScheduler { get; }
28   28  
29 public void Dispose() 29 public void Dispose()
30 { 30 {
31 MqttCommunication.OnMessageReceived -= MqttCommunicationOnOnMessageReceived; 31 MqttCommunication.OnMessageReceived -= MqttCommunicationOnOnMessageReceived;
32 } 32 }
33   33  
34 public event LobbyMessageReceived OnLobbyMessageReceived; 34 public event LobbyMessageReceived OnLobbyMessageReceived;
35   35  
36 private async void MqttCommunicationOnOnMessageReceived(object sender, 36 private async void MqttCommunicationOnOnMessageReceived(object sender,
37 MqttApplicationMessageReceivedEventArgs e) 37 MqttApplicationMessageReceivedEventArgs e)
38 { 38 {
39 if (e.ApplicationMessage.Topic != "lobby") 39 if (e.ApplicationMessage.Topic != "lobby")
40 return; 40 return;
41   41  
42 using (var memoryStream = new MemoryStream(e.ApplicationMessage.Payload)) 42 using (var memoryStream = new MemoryStream(e.ApplicationMessage.Payload))
43 { 43 {
44 var lobbyMessage = (LobbyMessage) LobbyMessage.XmlSerializer.Deserialize(memoryStream); 44 var lobbyMessage = (LobbyMessage) LobbyMessage.XmlSerializer.Deserialize(memoryStream);
45   45  
46 await Task.Delay(0) 46 await Task.Delay(0)
47 .ContinueWith( 47 .ContinueWith(
48 _ => OnLobbyMessageReceived?.Invoke(sender, 48 _ => OnLobbyMessageReceived?.Invoke(sender,
49 new LobbyMessageReceivedEventArgs(lobbyMessage.Nick, lobbyMessage.Message)), 49 new LobbyMessageReceivedEventArgs(lobbyMessage.Nick, lobbyMessage.Message)),
50 CancellationToken, TaskContinuationOptions.None, TaskScheduler); 50 CancellationToken, TaskContinuationOptions.None, TaskScheduler);
51 } 51 }
52 } 52 }
53   53  
54 public async Task Broadcast(string message) 54 public async Task Broadcast(string message)
55 { 55 {
56 using (var memoryStream = new MemoryStream()) 56 using (var memoryStream = new MemoryStream())
57 { 57 {
58 LobbyMessage.XmlSerializer.Serialize(memoryStream, new LobbyMessage 58 LobbyMessage.XmlSerializer.Serialize(memoryStream, new LobbyMessage
59 { 59 {
60 Nick = MqttCommunication.Nick, 60 Nick = MqttCommunication.Nick,
61 Message = message 61 Message = message
62 }); 62 });
63   63  
64 memoryStream.Position = 0L; 64 memoryStream.Position = 0L;
65   65  
66 await MqttCommunication.Broadcast("lobby", memoryStream.ToArray()); 66 await MqttCommunication.Broadcast("lobby", memoryStream.ToArray());
67 } 67 }
68 } 68 }
69 } 69 }
70 } 70 }
71   71  
-   72
Generated by GNU Enscript 1.6.5.90.
-   73  
-   74  
-   75