Пример #1
0
 /// <summary>
 ///     客户端连接代理器,提供了相关的基本操作
 /// </summary>
 /// <param name="channel">客户端连接</param>
 /// <param name="transactionManager">事务管理器</param>
 public ThriftConnectionAgent(IMessageTransportChannel <ThriftMessage> channel, ThriftMessageTransactionManager transactionManager)
 {
     if (channel == null)
     {
         throw new ArgumentNullException("channel");
     }
     if (!channel.IsConnected)
     {
         throw new ArgumentException("Cannot wrap this msg channel, because current msg channel has been disconnected!");
     }
     if (transactionManager == null)
     {
         throw new ArgumentNullException("transactionManager");
     }
     _sequenceId               = 0;
     _channel                  = channel;
     _transactionManager       = transactionManager;
     _channel.Disconnected    += ChannelDisconnected;
     _channel.ReceivedMessage += ChannelReceivedMessage;
 }
Пример #2
0
        /// <summary>
        ///     创建一个新的连接代理器
        /// </summary>
        /// <param name="iep">远程终结点地址</param>
        /// <param name="protocolStack">协议栈</param>
        /// <param name="transactionManager">事务管理器</param>
        /// <returns>如果无法连接到远程地址,则返回null.</returns>
        public static IThriftConnectionAgent Create(IPEndPoint iep, IProtocolStack <ThriftMessage> protocolStack, ThriftMessageTransactionManager transactionManager)
        {
            if (iep == null)
            {
                throw new ArgumentNullException("iep");
            }
            if (protocolStack == null)
            {
                throw new ArgumentNullException("protocolStack");
            }
            if (transactionManager == null)
            {
                throw new ArgumentNullException("transactionManager");
            }
            ITransportChannel transportChannel = new TcpTransportChannel(iep);

            transportChannel.Connect();
            if (!transportChannel.IsConnected)
            {
                return(null);
            }
            IMessageTransportChannel <ThriftMessage> msgChannel = new MessageTransportChannel <ThriftMessage>((IRawTransportChannel)transportChannel, protocolStack, new ThriftProtocolSegmentDataParser((ThriftProtocolStack)protocolStack));

            return(new ThriftConnectionAgent(msgChannel, transactionManager));
        }
        /// <summary>
        ///     获取具有指定标示的连接代理器,如果具有该条件的代理器不存在,则会创建一个新的代理器
        /// </summary>
        /// <param name="key">连接标示</param>
        /// <param name="roleId">服务角色编号</param>
        /// <param name="protocolStack">连接所承载的协议栈</param>
        /// <param name="transactionManager">事务管理器</param>
        /// <returns>如果返回null, 则表示当前无法连接到目标远程终结点地址</returns>
        public IThriftConnectionAgent GetChannel(string key, string roleId, IProtocolStack <ThriftMessage> protocolStack, ThriftMessageTransactionManager transactionManager)
        {
            string fullKey = string.Format("{0}#{1}", roleId, key);

            return(base.GetChannel(key, fullKey, protocolStack, transactionManager));
        }