예제 #1
0
        public void OpenStream(StreamSessionParameters parameters)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }
            if (string.IsNullOrWhiteSpace(parameters.Host))
            {
                throw new ArgumentException(@"Host is required", nameof(parameters));
            }

            if (_session != null)
            {
                // Another session is open.
                // Close the session first before opening this new one
                ShutdownSession();
            }

            // Fix the parameters
            if (!parameters.Host.StartsWith(">tcp://"))
            {
                parameters.Host = ">tcp://" + parameters.Host;
            }
            if (!parameters.Host.EndsWith(":"))
            {
                parameters.Host = parameters.Host + ":";
            }

            // Open a new session and open it
            var session = new StreamSession(this, _resultConverter, parameters);

            OpenSession(session);
        }
예제 #2
0
        public StreamSession(ISessionHandler sessionHandler, IResultConverter resultConverter, StreamSessionParameters parameters)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }

            _sessionHandler  = sessionHandler;
            _resultConverter = resultConverter;

            _host = parameters.Host;
            _port = parameters.Port;
            _closeAfterCompleted = parameters.CloseAfterCompleted;

            _syncContext = SynchronizationContext.Current;
        }