Hush – Diff between revs 1 and 2
?pathlinks?
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 | } |