CreateForLocalHost() public static method

public static CreateForLocalHost ( TransportAddress tat, int port ) : IEnumerable
tat TransportAddress
port int
return IEnumerable
コード例 #1
0
        /**
         * @param port the port to listen on
         * @param ipList an IEnumerable object of IPAddress objects.
         * @param ta_auth the TAAuthorizer to use for remote nodes
         */
        public TcpEdgeListener(int port, IEnumerable local_config_ips, TAAuthorizer ta_auth)
        {
            _is_started  = 0;
            _listen_sock = new Socket(AddressFamily.InterNetwork,
                                      SocketType.Stream, ProtocolType.Tcp);
            _listen_sock.LingerState = new LingerOption(true, 0);
            IPEndPoint tmp_ep = new IPEndPoint(IPAddress.Any, port);

            _listen_sock.Bind(tmp_ep);
            _local_endpoint = (IPEndPoint)_listen_sock.LocalEndPoint;
            port            = _local_endpoint.Port;
            _count          = 0;

            /**
             * We get all the IPAddresses for this computer
             */
            if (local_config_ips == null)
            {
                _tas = TransportAddressFactory.CreateForLocalHost(TransportAddress.TAType.Tcp, port);
            }
            else
            {
                _tas = TransportAddressFactory.Create(TransportAddress.TAType.Tcp, port, local_config_ips);
            }

            _ta_auth = ta_auth;
            if (_ta_auth == null)
            {
                //Always authorize in this case:
                _ta_auth = new ConstantAuthorizer(TAAuthorizer.Decision.Allow);
            }
            _loop = new Thread(this.SelectLoop);
            //This is how we push jobs into the SelectThread
            ActionQueue = new LockFreeQueue <SocketStateAction>();
        }
コード例 #2
0
        /**
         * @param port the local port to bind to
         * @param local_tas an IEnumerable object which gives the list of local
         * IPs.  This is consulted every time LocalTAs is accessed, so it can
         * change as new interfaces are added
         * @param ta_auth the TAAuthorizer for packets incoming
         */
        public UdpEdgeListener(int port, IEnumerable local_config_ips, TAAuthorizer ta_auth)
        {
            _s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            _s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendBuffer, Int32.MaxValue);
            _s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, Int32.MaxValue);
            ipep = new IPEndPoint(IPAddress.Any, port);
            _s.Bind(ipep);
            _port = port = ((IPEndPoint)(_s.LocalEndPoint)).Port;

            /**
             * We get all the IPAddresses for this computer
             */
            if (local_config_ips == null)
            {
                _tas = TransportAddressFactory.CreateForLocalHost(TransportAddress.TAType.Udp, _port);
            }
            else
            {
                _tas = TransportAddressFactory.Create(TransportAddress.TAType.Udp, _port, local_config_ips);
            }
            _nat_hist = null;
            _nat_tas  = new NatTAs(_tas, _nat_hist);
            _ta_auth  = ta_auth;
            if (_ta_auth == null)
            {
                //Always authorize in this case:
                _ta_auth = new ConstantAuthorizer(TAAuthorizer.Decision.Allow);
            }
            //We start out expecting around 30 edges with
            //a load factor of 0.15 (to make edge lookup fast)
            _id_ht        = new Hashtable(30, 0.15f);
            _remote_id_ht = new Hashtable();
            _sync         = new object();
            _running      = 0;
            _isstarted    = 0;
            ///@todo, we need a system for using the cryographic RNG
            _rand                     = new Random();
            _send_handler             = this;
            _listen_finished_event    = new ManualResetEvent(false);
            _listen_thread            = new Thread(ListenThread);
            _send_thread              = new Thread(SendThread);
            _send_thread.IsBackground = true;
            _send_queue               = new LFBlockingQueue <UdpMessage>();
        }
コード例 #3
0
        public void Test()
        {
            TransportAddress tas = TransportAddressFactory.CreateInstance("b.s://234580");

            Assert.AreEqual(tas.ToString(), "b.s://234580", "Simulation string");
            Assert.AreEqual((tas as SimulationTransportAddress).ID, 234580, "Simulation id");
            Assert.AreEqual(TransportAddress.TAType.S, tas.TransportAddressType, "Simulation ta type");
            TransportAddress ta1 = TransportAddressFactory.CreateInstance("brunet.udp://10.5.144.69:5000");

            Assert.AreEqual(ta1.ToString(), "brunet.udp://10.5.144.69:5000", "Testing TA parsing");

            TransportAddress ta2 = TransportAddressFactory.CreateInstance("brunet.udp://10.5.144.69:5000");

            Assert.AreEqual(ta1, ta2, "Testing TA Equals");



            string           StrLocalHost = Dns.GetHostName();
            IPHostEntry      IPEntry      = Dns.GetHostEntry(StrLocalHost);
            TransportAddress local_ta     = TransportAddressFactory.CreateInstance("brunet.udp://" + IPEntry.AddressList[0].ToString() +
                                                                                   ":" + 5000);
            IEnumerable locals = TransportAddressFactory.CreateForLocalHost(TransportAddress.TAType.Udp, 5000);

            bool match = false;

            foreach (TransportAddress test_ta1 in locals)
            {
                //Console.WriteLine("test_ta: {0}", test_ta1);
                if (test_ta1.Equals(local_ta))
                {
                    match = true;
                }
            }
            Assert.AreEqual(match, true, "testing local TA matches");
            //testing function TA
            TransportAddress func_ta  = TransportAddressFactory.CreateInstance("brunet.function://localhost:3000");
            TransportAddress func_ta2 = TransportAddressFactory.CreateInstance("brunet.function://localhost:3000");

            Assert.AreEqual(func_ta, func_ta2, "equality of instances");
            Assert.IsTrue(func_ta == func_ta2, "reference equality, test of caching");
            Assert.AreEqual(func_ta.ToString(), "brunet.function://localhost:3000", "Testing function TA parsing");
        }
コード例 #4
0
ファイル: TransportAddress.cs プロジェクト: pcbing/brunet
        public void Test()
        {
            TransportAddress tas = TransportAddressFactory.CreateInstance("b.s://234580");

            Assert.AreEqual(tas.ToString(), "b.s://234580", "Simulation string");
            Assert.AreEqual((tas as SimulationTransportAddress).ID, 234580, "Simulation id");
            Assert.AreEqual(TransportAddress.TAType.S, tas.TransportAddressType, "Simulation ta type");
            TransportAddress ta1 = TransportAddressFactory.CreateInstance("brunet.udp://10.5.144.69:5000");

            Assert.AreEqual(ta1.ToString(), "brunet.udp://10.5.144.69:5000", "Testing TA parsing");

            TransportAddress ta2 = TransportAddressFactory.CreateInstance("brunet.udp://10.5.144.69:5000");

            Assert.AreEqual(ta1, ta2, "Testing TA Equals");

            string           ta_string = "brunet.tunnel://UBU72YLHU5C3SY7JMYMJRTKK4D5BGW22/FE4QWASN+FE4QWASM";
            TransportAddress ta        = TransportAddressFactory.CreateInstance("brunet.tunnel://UBU72YLHU5C3SY7JMYMJRTKK4D5BGW22/FE4QWASN+FE4QWASM");

            Assert.AreEqual(ta.ToString(), ta_string, "testing tunnel TA parsing");
            //Console.WriteLine(ta);

            TunnelTransportAddress tun_ta = (TunnelTransportAddress)TransportAddressFactory.CreateInstance("brunet.tunnel://OIHZCNNUAXTLLARQIOBNCUWXYNAS62LO/CADSL6GV+CADSL6GU");

            ArrayList fwd = new ArrayList();

            fwd.Add(new AHAddress(Base32.Decode("CADSL6GVVBM6V442CETP4JTEAWACLC5A")));
            fwd.Add(new AHAddress(Base32.Decode("CADSL6GUVBM6V442CETP4JTEAWACLC5A")));

            TunnelTransportAddress test_ta = new TunnelTransportAddress(tun_ta.Target, fwd);

            Assert.AreEqual(tun_ta, test_ta, "testing tunnel TA compression enhancements");
            //Console.WriteLine(tun_ta.ToString());
            //Console.WriteLine(test_ta.ToString());
            Assert.AreEqual(tun_ta.ToString(), test_ta.ToString(), "testing tunnel TA compression enhancements (toString)");

            Assert.AreEqual(tun_ta.ContainsForwarder(new AHAddress(Base32.Decode("CADSL6GVVBM6V442CETP4JTEAWACLC5A"))), true,
                            "testing tunnel TA contains forwarder (1)");

            Assert.AreEqual(tun_ta.ContainsForwarder(new AHAddress(Base32.Decode("CADSL6GUVBM6V442CETP4JTEAWACLC5A"))), true,
                            "testing tunnel TA contains forwarder (2)");



            string           StrLocalHost = Dns.GetHostName();
            IPHostEntry      IPEntry      = Dns.GetHostEntry(StrLocalHost);
            TransportAddress local_ta     = TransportAddressFactory.CreateInstance("brunet.udp://" + IPEntry.AddressList[0].ToString() +
                                                                                   ":" + 5000);
            IEnumerable locals = TransportAddressFactory.CreateForLocalHost(TransportAddress.TAType.Udp, 5000);

            bool match = false;

            foreach (TransportAddress test_ta1 in locals)
            {
                //Console.WriteLine("test_ta: {0}", test_ta1);
                if (test_ta1.Equals(local_ta))
                {
                    match = true;
                }
            }
            Assert.AreEqual(match, true, "testing local TA matches");
            //testing function TA
            TransportAddress func_ta  = TransportAddressFactory.CreateInstance("brunet.function://localhost:3000");
            TransportAddress func_ta2 = TransportAddressFactory.CreateInstance("brunet.function://localhost:3000");

            Assert.AreEqual(func_ta, func_ta2, "equality of instances");
            Assert.IsTrue(func_ta == func_ta2, "reference equality, test of caching");
            Assert.AreEqual(func_ta.ToString(), "brunet.function://localhost:3000", "Testing function TA parsing");
        }