public ConnectionIO(Connection connection) : base(channelNum: 0) { _conn = connection; _socketHolder = new SocketHolder(); _commandOutboxEvent = new AutoResetEvent(false); _waitingServerReply = new ManualResetEventSlim(true); // _commandOutboxEvent = new AutoResetSuperSlimLock(false); _commandOutbox = new ConcurrentQueue <CommandToSend>(); _cmdToSendObjPool = new ObjectPool <CommandToSend>(() => new CommandToSend(i => _cmdToSendObjPool.PutObject(i)), 200, true); _amqpWriter = new AmqpPrimitivesWriter(); _amqpReader = new AmqpPrimitivesReader(); _frameReader = new FrameReader(); }
internal async Task InternalDoConnectSocket(string hostname, int port) { var index = Interlocked.Increment(ref _counter); await _socketHolder.Connect(hostname, port, OnSocketClosed, index); _amqpWriter = new AmqpPrimitivesWriter(_socketHolder.Writer, null, null); _amqpReader = new AmqpPrimitivesReader(_socketHolder.Reader); _frameReader = new FrameReader(_socketHolder.Reader, _amqpReader, this); var t1 = new Thread(WriteFramesLoop) { IsBackground = true, Name = "WriteFramesLoop_" + index }; t1.Start(); var t2 = new Thread(ReadFramesLoop) { IsBackground = true, Name = "ReadFramesLoop_" + index }; t2.Start(); }