コード例 #1
0
ファイル: ConnectionPool.cs プロジェクト: AtlasNet/WindowsApp
 public NodeClient this[AtlasNodeInfo info]
 {
     get
     {
         var desc = info.GetDescriptor();
         if (!pool.ContainsKey(desc))
         {
             RecreateConnection(info);
         }
         else
         {
             try
             { pool[desc].TestConnection(); }
             catch
             {
                 // Retry
                 try
                 { RecreateConnection(info); }
                 catch { }
             }
         }
         if (pool.ContainsKey(desc))
         {
             return(pool[desc]);
         }
         else
         {
             return(null);
         }
     }
 }
コード例 #2
0
ファイル: NodeClient.cs プロジェクト: AtlasNet/WindowsApp
 public void Connect()
 {
     Transport.Open();
     TestConnection();
     NodeInfo = Client.getInfo();
     Console.WriteLine("Connected to {0}", NodeInfo.GetName());
 }
コード例 #3
0
ファイル: NodeClient.cs プロジェクト: AtlasNet/WindowsApp
        public NodeClient(AtlasNodeInfo info)
        {
            Transport = new TBufferedTransport(new TSocket(info.Host, (int)info.Port));
            TProtocol protocol = new TBinaryProtocol(Transport);

            Client = new AtlasNode.Client(protocol);
        }
コード例 #4
0
ファイル: AtlasListing.cs プロジェクト: AtlasNet/WindowsApp
    public void Read(TProtocol iprot)
    {
        TField field;

        iprot.ReadStructBegin();
        while (true)
        {
            field = iprot.ReadFieldBegin();
            if (field.Type == TType.Stop)
            {
                break;
            }
            switch (field.ID)
            {
            case 1:
                if (field.Type == TType.Struct)
                {
                    Node = new AtlasNodeInfo();
                    Node.Read(iprot);
                }
                else
                {
                    TProtocolUtil.Skip(iprot, field.Type);
                }
                break;

            case 2:
                if (field.Type == TType.I64)
                {
                    Id = iprot.ReadI64();
                }
                else
                {
                    TProtocolUtil.Skip(iprot, field.Type);
                }
                break;

            default:
                TProtocolUtil.Skip(iprot, field.Type);
                break;
            }
            iprot.ReadFieldEnd();
        }
        iprot.ReadStructEnd();
    }
コード例 #5
0
ファイル: ConnectionPool.cs プロジェクト: AtlasNet/WindowsApp
        public void RecreateConnection(AtlasNodeInfo info)
        {
            var desc = info.GetDescriptor();

            if (pool.ContainsKey(desc))
            {
                try
                {
                    pool[desc].Disconnect();
                }
                catch { }
                pool.Remove(desc);
            }
            var client = new NodeClient(info);

            client.Connect();
            pool[desc] = client;
        }
コード例 #6
0
ファイル: Extensions.cs プロジェクト: AtlasNet/WindowsApp
 public static AtlasNodeDescriptor GetDescriptor(this AtlasNodeInfo info)
 {
     return(new AtlasNodeDescriptor(info.Host, (int)info.Port));
 }
コード例 #7
0
ファイル: Extensions.cs プロジェクト: AtlasNet/WindowsApp
 public static string GetName(this AtlasNodeInfo info)
 {
     return(string.Format("{0}:{1} ({2})", info.Host, info.Port, info.Name));
 }
コード例 #8
0
ファイル: Config.cs プロジェクト: AtlasNet/WindowsApp
 public Config()
 {
     BootstrapNode = new AtlasNodeInfo {
         Host = "ajenti.org", Port = 1957
     };
 }