forked from OrleansContrib/Orleankka
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHubGateway.cs
More file actions
66 lines (53 loc) · 1.6 KB
/
HubGateway.cs
File metadata and controls
66 lines (53 loc) · 1.6 KB
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
using System;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using Microsoft.WindowsAzure.ServiceRuntime;
using Orleankka;
using Orleankka.Cluster;
namespace Example.Azure
{
public class HubGateway
{
static IActorSystem system;
static IPEndPoint ip;
public class Bootstrapper : IBootstrapper
{
public Task Run(object properties)
{
system = ClusterActorSystem.Current;
var instanceEndpoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["OrleansSiloEndpoint"];
ip = instanceEndpoint.IPEndpoint;
var hub = GetLocalHub();
return hub.Tell(new Hub.Init());
}
}
public static Task Publish(Event e)
{
var buffer = system.ActorOf<HubBuffer>("any");
return buffer.Tell(new HubBuffer.Publish {Event = e});
}
static ActorRef GetHub(IPEndPoint endpoint)
{
return system.ActorOf<Hub>(HubId(endpoint));
}
public static ActorRef GetLocalHub()
{
return GetHub(ip);
}
public static string HubId(IPEndPoint endpoint)
{
Debug.Assert(endpoint != null);
return "HUB" + endpoint.Address;
}
public static string LocalHubId()
{
return HubId(ip);
}
public static IPAddress LocalAddress()
{
return ip.Address;
}
}
}