Exemplo n.º 1
0
        /// <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);
         }
     }
 }
Exemplo n.º 4
0
 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);
         }
     }
 }
Exemplo n.º 5
0
        /// <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
            {}
        }
Exemplo n.º 6
0
        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);
            }
        }