-
Notifications
You must be signed in to change notification settings - Fork 126
/
Copy pathEmitMessagesHandler.cs
47 lines (41 loc) · 1.58 KB
/
EmitMessagesHandler.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;
using PubnubApi.EventEngine.Core;
using PubnubApi.EventEngine.Subscribe.Invocations;
namespace PubnubApi.EventEngine.Subscribe.Effects
{
internal class EmitMessagesHandler : IEffectHandler<Invocations.EmitMessagesInvocation>
{
private readonly System.Action<Pubnub, PNMessageResult<object>> messageEmitterFunction;
private readonly Pubnub pubnubInstance;
public EmitMessagesHandler(Pubnub pubnubInstance,
System.Action<Pubnub, PNMessageResult<object>> messageEmitterFunction)
{
this.messageEmitterFunction = messageEmitterFunction;
this.pubnubInstance = pubnubInstance;
}
public async Task Run(EmitMessagesInvocation invocation)
{
var processedMessages = invocation.Messages.Messages.Select(m => new PNMessageResult<object>()
{
Channel = m.Channel,
Message = JsonConvert.DeserializeObject(m.Payload),
Subscription = m.SubscriptionMatch,
Timetoken = m.Timetoken.Timestamp,
UserMetadata = m.PublishMetadata,
Publisher = m.IssuingClientId
});
foreach (var message in processedMessages)
{
messageEmitterFunction(pubnubInstance, message);
}
}
public bool IsBackground(EmitMessagesInvocation invocation) => false;
public Task Cancel()
{
throw new NotImplementedException();
}
}
}