Пример #1
0
        public override void CreateEdgeTo(TransportAddress ta, EdgeCreationCallback ecb)
        {
            SubringTransportAddress sta = ta as SubringTransportAddress;

            if (sta == null)
            {
                ecb(false, null, new Exception("TA Type is not Subring!"));
            }
            else if (!sta.Namespace.Equals(_shared_node.Realm))
            {
                ecb(false, null, new Exception("Namespace mismatch"));
            }
            else if (sta.Target.Equals(_private_node.Address))
            {
                ecb(false, null, new Exception("You are me!"));
            }
            else
            {
                SubringEdge se = new SubringEdge(_local_ta, sta, false,
                                                 new AHExactSender(_shared_node, sta.Target), _ptype);
                se.CloseEvent += CloseHandler;
                _it.Add(se);
                ecb(true, se, null);
            }
        }
Пример #2
0
        /// <summary>Creates an XmppEdge.</summary>
        public override void CreateEdgeTo(TransportAddress ta, EdgeCreationCallback ecb)
        {
            if (_ready == 0)
            {
                ecb(false, null, new Exception("Xmpp is not authenticated"));
            }

            XmppTransportAddress xta = ta as XmppTransportAddress;

            if (xta == null)
            {
                ecb(false, null, new Exception("TA Type is not Xmpp!"));
                return;
            }
            else if (!_xmpp.IsUserOnline(xta.JID))
            {
                ecb(false, null, new Exception("Xmpp user, " + xta.JID + ", is not online."));
                return;
            }

            XmppEdge xe = new XmppEdge(this, _local_ta, xta, false);

            _it.Add(xe);
            xe.CloseEvent += CloseHandler;
            ecb(true, xe, null);
        }
Пример #3
0
        override public SecurityAssociation CreateSecurityAssociation(ISender sender)
        {
            DtlsAssociation sa = null;

            if (_sender_to_sa.TryGetValue(sender, out sa))
            {
                return(sa);
            }

            if (NoSuchSA(sender, 0, true, out sa))
            {
                DtlsAssociation tmpsa = sa;
                bool            close = false;
                lock (_sender_to_sa) {
                    if (_sender_to_sa.TryGetValue(sender, out sa))
                    {
                        close = true;
                    }
                    else
                    {
                        _sender_to_sa.Add(sender, tmpsa);
                    }
                }

                if (close)
                {
                    tmpsa.Close("Duplicate");
                }
                else
                {
                    sa = tmpsa;
                    _it.Add(sa);
                    sa.Subscribe(this, null);
                    sa.Handshake();
                }
            }

            return(sa);
        }
        public void Tokenizer_Recognize_Identifier()
        {
            IdentifierTable id = new IdentifierTable();
            string          code;
            bool            expected;
            bool            actual;

            code     = "t123";
            expected = true;
            actual   = id.Find(code);
            Assert.AreEqual(expected, actual);

            id.Add(new Identifier("x1", 0, 0, 0));
            code     = "x1";
            expected = true;
            actual   = id.Find(code);
            Assert.AreEqual(expected, actual);

            code     = "_text";
            expected = true;
            actual   = id.Find(code);
            Assert.AreEqual(expected, actual);

            code     = "TEXT";
            expected = true;
            actual   = id.Find(code);
            Assert.AreEqual(expected, actual);

            code     = "\"text\"";
            expected = false;
            actual   = id.Find(code);
            Assert.AreEqual(expected, actual);

            code     = "&text";
            expected = false;
            actual   = id.Find(code);
            Assert.AreEqual(expected, actual);

            code     = "1text";
            expected = false;
            actual   = id.Find(code);
            Assert.AreEqual(expected, actual);

            code     = "країна";
            expected = true;
            actual   = id.Find(code);
            Assert.AreEqual(expected, actual);

            IdentifierType exp;
            IdentifierType act;

            code = "SomeFunction()  ";
            exp  = IdentifierType.Function;
            act  = id.IdentifyType(code);
            Assert.AreEqual(exp, act);

            code = "SomeArray[]";
            exp  = IdentifierType.Array;
            act  = id.IdentifyType(code);
            Assert.AreEqual(exp, act);
        }