Пример #1
0
        public void Start()
        {
            var zmqVersion = ZmqUtil.GetVersion();

            _logger.InfoFormat("Loaded ZMQ v{0}", zmqVersion.ToString(3));

            if (zmqVersion.Major != 4)
            {
                throw new InvalidOperationException($"Expected ZMQ v4.*, loaded ZMQ v{zmqVersion.ToString(3)}");
            }

            _isListening = true;

            _outboundSockets       = new ConcurrentDictionary <PeerId, ZmqOutboundSocket>();
            _outboundSocketActions = new BlockingCollection <OutboundSocketAction>();
            _pendingDisconnects    = new BlockingCollection <PendingDisconnect>();
            _context = new ZmqContext();

            var startSequenceState = new InboundProcStartSequenceState();

            _inboundThread    = BackgroundThread.Start(InboundProc, startSequenceState);
            _outboundThread   = BackgroundThread.Start(OutboundProc);
            _disconnectThread = BackgroundThread.Start(DisconnectProc);

            startSequenceState.Wait();
            _isRunning = true;
        }
Пример #2
0
        public void Start()
        {
            IsListening = true;

            _outboundSockets       = new ConcurrentDictionary <PeerId, ZmqOutboundSocket>();
            _outboundSocketActions = new BlockingCollection <OutboundSocketAction>();
            _pendingDisconnects    = new BlockingCollection <PendingDisconnect>();
            _context = ZmqContext.Create();

            var startSequenceState = new InboundProcStartSequenceState();

            _inboundThread    = BackgroundThread.Start(InboundProc, startSequenceState, null);
            _outboundThread   = BackgroundThread.Start(OutboundProc);
            _disconnectThread = BackgroundThread.Start(DisconnectProc);

            startSequenceState.Wait();
        }