/// <summary> /// /// </summary> /// <param name="raftNodeSettings"></param> /// <param name="udpPort">e.g. 47777 </param> /// <param name="verboseNode">Will call VerbosePrint on true</param> public RaftNodeUdp(RaftNodeSettings raftNodeSettings, int udpPort, bool verboseNode) { try { TM = new TimeMaster(this); udpSocket = new UdpSocketListener(TM, this); UdpPort = udpPort; rn = new RaftNode(raftNodeSettings, this, this); rn.Verbose = verboseNode; rn.NodeAddress.IsMe = true; //Can be increased on the hot system later. rn.SetNodesQuantityInTheCluster(raftNodeSettings.InitialQuantityOfRaftNodesInTheCluster); //Supplied by emulator for VerbosePrints rn.NodeAddress.NodeAddressId = raftNodeSettings.RaftNodeIdExternalForEmulator; } catch (Exception ex) { this.LogError(new WarningLogEntry() { Exception = ex, Method = "Raft.RaftNodeUdp.RaftNodeUdp" }); } }
public void StopListen(IPEndPoint endpoint) { lock (listeners) { if (listeners.ContainsKey(endpoint)) { UdpSocketListener listener = listeners[endpoint]; if (listener.Release() == 0) { listeners.Remove(endpoint); } } } }
public void Listen(IPAddress ipAddress, int port) { lock (listeners) { IPEndPoint endpoint = new IPEndPoint(ipAddress, port); if (listeners.ContainsKey(endpoint)) { UdpSocketListener listener = listeners[endpoint]; listener.AddRef(); } else { UdpSocketListener listener = new UdpSocketListener(ipAddress, port, false, MaxBufferPoolSize, MaxMessageSize, dataReceivedCallback); listener.Open(); listener.AddRef(); listeners.Add(endpoint, listener); } } }
public void Listen(IPAddress ipAddress, int port) { lock (listeners) { IPEndPoint endpoint = new IPEndPoint(ipAddress, port); if (listeners.ContainsKey(endpoint)) { UdpSocketListener listener = listeners[endpoint]; listener.AddRef(); } else { UdpSocketListener listener = new UdpSocketListener(ipAddress, port, false, MaxBufferPoolSize, MaxMessageSize, dataReceivedCallback); listener.Open(); listener.AddRef(); listeners.Add(endpoint, listener); } } }
/// <summary> /// /// </summary> public void Dispose() { try { this.TM.Dispose(); if (udpSocket != null) { udpSocket.Stop(); udpSocket.Dispose(); udpSocket = null; } if (rn != null) { rn.NodeStop(); rn.Dispose(); rn = null; } } catch {} }
private void InitListener() { string hostName = Dns.GetHostName(); IPAddress[] ipasAddresses = Dns.GetHostAddresses(hostName); List <IPAddress> list = new List <IPAddress>(ipasAddresses) { IPAddress.Parse("127.0.0.1") }; _Listeners = new List <ISocketListener>(list.Count); foreach (IPAddress ipa in list) { ListenerInfo info = new ListenerInfo() { BackLog = ServerConfig.BackLog, EndPoint = new IPEndPoint(ipa, ServerConfig.ListenPort) }; ISocketListener socketListener; if (this.ServerConfig.SocketMode == SocketMode.Tcp) { socketListener = new TcpSocketListener(info); } else { socketListener = new UdpSocketListener(info); } socketListener.NewClientAccepted += tcpSocketListener_NewClientAccepted; socketListener.Error += tcpSocketListener_Error; socketListener.Stopped += tcpSocketListener_Stopped; socketListener.Start(this.ServerConfig); _Listeners.Add(socketListener); } }