Пример #1
0
        private static void Remove(this RouterComponent self, long id)
        {
            RouterNode routerNode = self.GetChild <RouterNode>(id);

            if (routerNode == null)
            {
                return;
            }

            self.OuterNodes.Remove(routerNode.OuterConn);

            RouterNode connectRouterNode;

            if (self.ConnectIdNodes.TryGetValue(routerNode.ConnectId, out connectRouterNode))
            {
                if (connectRouterNode.Id == routerNode.Id)
                {
                    self.ConnectIdNodes.Remove(routerNode.ConnectId);
                }
            }

            Log.Info($"router remove: {routerNode.Id} outerConn: {routerNode.OuterConn} innerConn: {routerNode.InnerConn}");

            routerNode.Dispose();
        }
Пример #2
0
        public static RouterNode Get(this RouterComponent self, uint outerConn)
        {
            RouterNode routerNode = null;

            self.OuterNodes.TryGetValue(outerConn, out routerNode);
            return(routerNode);
        }
Пример #3
0
        public static void OnError(this RouterComponent self, long id, int error)
        {
            RouterNode routerNode = self.GetChild <RouterNode>(id);

            if (routerNode == null)
            {
                return;
            }

            Log.Info($"router node remove: {routerNode.OuterConn} {routerNode.InnerConn} {error}");
            self.Remove(id);
        }
Пример #4
0
        private static RouterNode New(this RouterComponent self, string innerAddress, uint connectId, uint outerConn, uint innerConn, IPEndPoint syncEndPoint)
        {
            RouterNode routerNode = self.AddChild <RouterNode>();

            routerNode.ConnectId = connectId;
            routerNode.OuterConn = outerConn;
            routerNode.InnerConn = innerConn;

            routerNode.InnerIpEndPoint   = NetworkHelper.ToIPEndPoint(innerAddress);
            routerNode.SyncIpEndPoint    = syncEndPoint;
            routerNode.InnerAddress      = innerAddress;
            routerNode.LastRecvInnerTime = TimeHelper.ClientNow();

            self.ConnectIdNodes.Add(connectId, routerNode);

            routerNode.Status = RouterStatus.Sync;

            Log.Info($"router new: outerConn: {outerConn} innerConn: {innerConn} {syncEndPoint}");

            return(routerNode);
        }