Ejemplo n.º 1
0
        /// <summary>
        /// 重建短路径
        /// </summary>
        /// <param name="client"></param>
        /// <param name="returnType"></param>
        /// <returns></returns>
        internal bool ReCreate(SlaveServer.TcpInternalClient client, ref ReturnType returnType)
        {
            switch (returnType)
            {
            case ReturnType.NotFoundShortPathNode: Identity.Type = ReturnType.NotFoundShortPathNode; return(false);

            case ReturnType.NotFoundShortPath:
                Monitor.Enter(createLock);
                if (Identity.Type != ReturnType.NotFoundShortPathNode)
                {
                    Identity.Type = ReturnType.NotFoundShortPath;
                    if (reCreate(client))
                    {
                        return(true);
                    }
                }
                else
                {
                    Monitor.Exit(createLock);
                }
                break;
            }
            returnType = Identity.Type;
            return(false);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public void Dispose()
 {
     if (client != null)
     {
         client.Dispose();
         client = null;
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 缓存主服务
 /// </summary>
 /// <param name="config">缓存主服务配置</param>
 public SlaveServer(SlaveServerConfig config) : base()
 {
     Config = config ?? defaultConfig;
     if (Config.IsMasterCacheServer)
     {
         masterClient = new MasterServer.TcpInternalClient(Config.CacheServerAttribute);
     }
     else
     {
         slaveClient = new SlaveServer.TcpInternalClient(Config.CacheServerAttribute);
     }
 }
Ejemplo n.º 4
0
        internal ReturnType Check(SlaveServer.TcpInternalClient client)
        {
            switch (Identity.Type)
            {
            case ReturnType.NotFoundShortPathNode: return(ReturnType.NotFoundShortPathNode);

            case ReturnType.NotFoundShortPath: return(check(client));
            }
            if (socketIdentity != Client.SocketIdentity)
            {
                return(check(client));
            }
            return(Identity.Type);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 检测短路径的有效性
        /// </summary>
        /// <param name="client"></param>
        /// <returns></returns>
        private ReturnType check(SlaveServer.TcpInternalClient client)
        {
            Monitor.Enter(createLock);
            switch (Identity.Type)
            {
            case ReturnType.NotFoundShortPathNode: Monitor.Exit(createLock); return(ReturnType.NotFoundShortPathNode);

            case ReturnType.NotFoundShortPath: reCreate(client); return(Identity.Type);
            }
            if (socketIdentity == Client.SocketIdentity)
            {
                Monitor.Exit(createLock);
            }
            else
            {
                reCreate(client);
            }
            return(Identity.Type);
        }
Ejemplo n.º 6
0
 /// <summary>
 /// 重建短路径
 /// </summary>
 /// <param name="client"></param>
 /// <returns></returns>
 private bool reCreate(SlaveServer.TcpInternalClient client)
 {
     try
     {
         do
         {
             socketIdentity = Client.SocketIdentity;
             AutoCSer.Net.TcpServer.ReturnValue <ReturnParameter> value = client.Query(new OperationParameter.QueryNode {
                 Node = Parameter
             });
             if (socketIdentity == Client.SocketIdentity)
             {
                 return(isCreate(ref value));
             }
         }while (true);
     }
     catch (Exception error)
     {
         client._TcpClient_.AddLog(error);
     }
     finally { Monitor.Exit(createLock); }
     return(false);
 }
Ejemplo n.º 7
0
 /// <summary>
 /// 缓存服务客户端
 /// </summary>
 /// <param name="serverAttribute">缓存服务端配置</param>
 public SlaveClient(AutoCSer.Net.TcpInternalServer.ServerAttribute serverAttribute)
 {
     client = new SlaveServer.TcpInternalClient(serverAttribute);
 }
Ejemplo n.º 8
0
 /// <summary>
 /// 缓存服务客户端
 /// </summary>
 /// <param name="client">缓存服务客户端</param>
 public SlaveClient(SlaveServer.TcpInternalClient client = null)
 {
     this.client = client ?? new SlaveServer.TcpInternalClient();
 }