INetNode CreateNetNode(StatefulServiceContext initParams) { var logger = new LoggerConfiguration() .ConfigureMOUSETypesDestructure() .MinimumLevel.Verbose() .WriteTo.Seq("http://localhost:5341/") .CreateLogger(); var coreEventsLogger = new SerilogCoreEvents(logger); var lidgrenEventsLogger = new SerilogLidgrenEvents(logger); var messageSerializer = new ProtobufMessageSerializer(typeof(Message).Assembly, typeof(Say).Assembly); var endPoint = initParams .CodePackageActivationContext .GetEndpoint("ServiceEndPoint"); var nodeContext = FabricRuntime.GetNodeContext(); string nodeName = $"{nodeContext.NodeName}:{nodeContext.NodeId}"; var transport = new LidgrenNetProvider( new NetPeerConfiguration("Public") { MaximumConnections = 10, AcceptIncomingConnections = true, Port = endPoint.Port, LocalAddress = Dns.GetHostAddresses(nodeContext.IPAddressOrFQDN).First(x => x.AddressFamily == AddressFamily.InterNetwork) }, lidgrenEventsLogger); var netConfig = new NetNodeConfig() { ConnectTimeoutSec = 30, SendTimeoutSec = 30 }; var bufferPool = new WcfBufferPool(); var node = new NetNode<NetChannel>(nodeName, transport, coreEventsLogger, messageSerializer, config: netConfig, channelFactory: (owner, transportChannel) => new AsyncProcessingNetChannel(builder => builder .UseFiber(Fiber, config => config .Lock<Say>(LockType.Read) .Lock<JoinRoom>(LockType.Write) .Lock<PeerDisconnected>(LockType.Write)) .UseConfigurableDispatcher(config => config .HandleMessageAsync<Say>(OnSay) .HandleMessageAsync<JoinRoom>(OnRoomJoin) .HandleMessageAsync<PeerDisconnected>((msg, o) => OnRoomLeave(o.ReplyChannel))), owner, transportChannel, messageSerializer, coreEventsLogger, netConfig, bufferPool)); return node; }
INetNode CreateNetNode(StatefulServiceContext initParams) { var logger = new LoggerConfiguration() .ConfigureMOUSETypesDestructure() .MinimumLevel.Verbose() .WriteTo.Seq("http://localhost:5341/") .CreateLogger(); var coreEventsLogger = new SerilogCoreEvents(logger); var lidgrenEventsLogger = new SerilogLidgrenEvents(logger); var messageSerializer = new ProtobufMessageSerializer(typeof(Message).Assembly, typeof(Say).Assembly); var endPoint = initParams .CodePackageActivationContext .GetEndpoint("ServiceEndPoint"); var nodeContext = FabricRuntime.GetNodeContext(); string nodeName = $"{nodeContext.NodeName}:{nodeContext.NodeId}"; var transport = new LidgrenNetProvider( new NetPeerConfiguration("Public") { MaximumConnections = 10, AcceptIncomingConnections = true, Port = endPoint.Port, LocalAddress = Dns.GetHostAddresses(nodeContext.IPAddressOrFQDN).First(x => x.AddressFamily == AddressFamily.InterNetwork) }, lidgrenEventsLogger); var netConfig = new NetNodeConfig() { ConnectTimeoutSec = 30, SendTimeoutSec = 30 }; var bufferPool = new WcfBufferPool(); var node = new NetNode <NetChannel>(nodeName, transport, coreEventsLogger, messageSerializer, config: netConfig, channelFactory: (owner, transportChannel) => new AsyncProcessingNetChannel(builder => builder .UseFiber(Fiber, config => config .Lock <Say>(LockType.Read) .Lock <JoinRoom>(LockType.Write) .Lock <PeerDisconnected>(LockType.Write)) .UseConfigurableDispatcher(config => config .HandleMessageAsync <Say>(OnSay) .HandleMessageAsync <JoinRoom>(OnRoomJoin) .HandleMessageAsync <PeerDisconnected>((msg, o) => OnRoomLeave(o.ReplyChannel))), owner, transportChannel, messageSerializer, coreEventsLogger, netConfig, bufferPool)); return(node); }