Hush – Diff between revs 1 and 2

Subversion Repositories:
Rev:
Show entire fileIgnore whitespace
Rev 1 Rev 2
Line 4... Line 4...
4 using System.Threading.Tasks; 4 using System.Threading.Tasks;
5 using Hush.Communication; 5 using Hush.Communication;
6 using ProtoBuf; 6 using ProtoBuf;
7 using WingMan.Communication; 7 using WingMan.Communication;
Line 8... Line 8...
8   8  
9 namespace Hush.Lobby 9 namespace Hush.Chat
10 { 10 {
11 public class LobbyMessageSynchronizer : IDisposable 11 public class ChatMessageSynchronizer : IDisposable
12 { 12 {
Line 13... Line 13...
13 public delegate void LobbyMessageReceived(object sender, LobbyMessageReceivedEventArgs e); 13 public delegate void MessageReceived(object sender, ChatMessageReceivedEventArgs e);
14   14  
15 public LobbyMessageSynchronizer(MqttCommunication mqttCommunication, TaskScheduler taskScheduler, 15 public ChatMessageSynchronizer(string topic, MqttCommunication mqttCommunication, TaskScheduler taskScheduler,
-   16 CancellationToken cancellationToken)
16 CancellationToken cancellationToken) 17 {
17 { 18 Topic = topic;
18 MqttCommunication = mqttCommunication; 19 MqttCommunication = mqttCommunication;
Line 19... Line 20...
19 CancellationToken = cancellationToken; 20 CancellationToken = cancellationToken;
20 TaskScheduler = taskScheduler; 21 TaskScheduler = taskScheduler;
Line -... Line 22...
-   22  
-   23 mqttCommunication.OnMessageReceived += MqttCommunicationOnOnMessageReceived;
21   24 }
Line 22... Line 25...
22 mqttCommunication.OnMessageReceived += MqttCommunicationOnOnMessageReceived; 25  
23 } 26 private string Topic { get; }
Line 24... Line 27...
24   27  
25 private MqttCommunication MqttCommunication { get; } 28 private MqttCommunication MqttCommunication { get; }
26   29  
27 private CancellationToken CancellationToken { get; } 30 private CancellationToken CancellationToken { get; }
Line 28... Line 31...
28 private TaskScheduler TaskScheduler { get; } 31 private TaskScheduler TaskScheduler { get; }
Line 29... Line 32...
29   32  
30 public void Dispose() 33 public void Dispose()
31 { 34 {
32 MqttCommunication.OnMessageReceived -= MqttCommunicationOnOnMessageReceived; 35 MqttCommunication.OnMessageReceived -= MqttCommunicationOnOnMessageReceived;
33 } 36 }
Line 34... Line 37...
34   37  
35 public event LobbyMessageReceived OnLobbyMessageReceived; 38 public event MessageReceived OnMessageReceived;
36   39  
Line 37... Line 40...
37 private async void MqttCommunicationOnOnMessageReceived(object sender, 40 private async void MqttCommunicationOnOnMessageReceived(object sender,
Line 38... Line 41...
38 MqttCommunicationMessageReceivedEventArgs e) 41 MqttCommunicationMessageReceivedEventArgs e)
Line 39... Line 42...
39 { 42 {
40 if (e.Topic != "lobby") 43 if (e.Topic != Topic)
41 return; 44 return;
42   45  
43 using (var memoryStream = new MemoryStream()) 46 using (var memoryStream = new MemoryStream())
44 { 47 {
45 await e.PayloadStream.CopyToAsync(memoryStream); 48 await e.PayloadStream.CopyToAsync(memoryStream);
Line 46... Line 49...
46   49  
47 memoryStream.Position = 0L; 50 memoryStream.Position = 0L;
48   51  
49 var lobbyMessage = Serializer.Deserialize<LobbyMessage>(memoryStream); 52 var lobbyMessage = Serializer.Deserialize<ChatMessage>(memoryStream);
50   53  
Line 51... Line 54...
51 await Task.Delay(0, CancellationToken) 54 await Task.Delay(0, CancellationToken)
Line 52... Line 55...
52 .ContinueWith( 55 .ContinueWith(
53 _ => OnLobbyMessageReceived?.Invoke(sender, 56 _ => OnMessageReceived?.Invoke(sender,
54 new LobbyMessageReceivedEventArgs(lobbyMessage.Nick, lobbyMessage.Message)), 57 new ChatMessageReceivedEventArgs(lobbyMessage.Nick, lobbyMessage.Data)),
55 CancellationToken, TaskContinuationOptions.None, TaskScheduler); 58 CancellationToken, TaskContinuationOptions.None, TaskScheduler);
56 } 59 }
57 } 60 }