コード例 #1
0
        /// <summary>
        /// Constructor of the subscription processor
        /// </summary>
        /// <param name="conn">Connection instance</param>
        /// <param name="initMessage">Initialization message</param>
        public ModelSubscription(Connection conn, ClientInitMessage initMessage) : base(conn)
        {
            SubscribeInitMessage subscribeInitMessage = (SubscribeInitMessage)initMessage;

            _mode = subscribeInitMessage.SubscriptionMode;
            if (subscribeInitMessage.Filters != null)
            {
                _filters = Filter.ConvertFilters(subscribeInitMessage.Filters);
            }
#pragma warning disable CS0612 // Type or member is obsolete
            else if (!string.IsNullOrEmpty(subscribeInitMessage.Filter))
            {
                _filters = Filter.ConvertFilters(subscribeInitMessage.Filter);
            }
#pragma warning restore CS0612 // Type or member is obsolete
            else
            {
                _filters = Array.Empty <object[]>();
            }

            lock (_subscriptions)
            {
                _subscriptions.Add(this);
            }
            conn.Logger.Debug("Subscription processor registered in {0} mode", _mode);
        }
コード例 #2
0
        /// <summary>
        /// Establishes a connection to the given UNIX socket file
        /// </summary>
        /// <param name="mode">Subscription mode</param>
        /// <param name="socketPath">Path to the UNIX socket file</param>
        /// <param name="cancellationToken">Optional cancellation token</param>
        /// <returns>Asynchronous task</returns>
        /// <exception cref="IncompatibleVersionException">API level is incompatible</exception>
        /// <exception cref="IOException">Connection mode is unavailable</exception>
        public Task Connect(SubscriptionMode mode, string socketPath = Defaults.SocketPath, CancellationToken cancellationToken = default(CancellationToken))
        {
            SubscribeInitMessage initMessage = new SubscribeInitMessage {
                SubscriptionMode = mode
            };

            Mode = mode;
            return(Connect(initMessage, socketPath, cancellationToken));
        }
コード例 #3
0
        /// <summary>
        /// Establishes a connection to the given UNIX socket file
        /// </summary>
        /// <param name="mode">Subscription mode</param>
        /// <param name="filter">Optional filter string</param>
        /// <param name="socketPath">Path to the UNIX socket file</param>
        /// <param name="cancellationToken">Optional cancellation token</param>
        /// <returns>Asynchronous task</returns>
        /// <exception cref="IncompatibleVersionException">API level is incompatible</exception>
        /// <exception cref="IOException">Connection mode is unavailable</exception>
        /// <exception cref="SocketException">Init message could not be sent</exception>
        public Task Connect(SubscriptionMode mode, string filter = null, string socketPath = Defaults.SocketPath, CancellationToken cancellationToken = default)
        {
            Mode   = mode;
            Filter = filter;

            SubscribeInitMessage initMessage = new SubscribeInitMessage {
                SubscriptionMode = mode, Filter = filter
            };

            return(Connect(initMessage, socketPath, cancellationToken));
        }
コード例 #4
0
        /// <summary>
        /// Establishes a connection to the given UNIX socket file
        /// </summary>
        /// <param name="mode">Subscription mode</param>
        /// <param name="filters">Optional filter strings</param>
        /// <param name="socketPath">Path to the UNIX socket file</param>
        /// <param name="cancellationToken">Optional cancellation token</param>
        /// <returns>Asynchronous task</returns>
        /// <exception cref="IncompatibleVersionException">API level is incompatible</exception>
        /// <exception cref="IOException">Connection mode is unavailable</exception>
        /// <exception cref="OperationCanceledException">Operation has been cancelled</exception>
        /// <exception cref="SocketException">Init message could not be processed</exception>
        public Task Connect(SubscriptionMode mode, IEnumerable <string> filters = null, string socketPath = Defaults.FullSocketPath, CancellationToken cancellationToken = default)
        {
            Mode = mode;
            Filters.Clear();
            if (filters != null)
            {
                Filters.AddRange(filters);
            }

            SubscribeInitMessage initMessage = new SubscribeInitMessage {
                SubscriptionMode = mode, Filters = Filters
            };

            return(Connect(initMessage, socketPath, cancellationToken));
        }
コード例 #5
0
        /// <summary>
        /// Constructor of the subscription processor
        /// </summary>
        /// <param name="conn">Connection instance</param>
        /// <param name="initMessage">Initialization message</param>
        public Subscription(Connection conn, ClientInitMessage initMessage) : base(conn)
        {
            SubscribeInitMessage subscribeInitMessage = (SubscribeInitMessage)initMessage;

            _mode = subscribeInitMessage.SubscriptionMode;
            if (!string.IsNullOrEmpty(subscribeInitMessage.Filter))
            {
                _filters = Filter.ConvertFilters(subscribeInitMessage.Filter);
            }

            lock (_subscriptions)
            {
                _subscriptions.Add(this);
            }
            conn.Logger.Debug("Subscription processor registered in {0} mode", _mode);
        }
コード例 #6
0
        /// <summary>
        /// Constructor of the subscription processor
        /// </summary>
        /// <param name="conn">Connection instance</param>
        /// <param name="initMessage">Initialization message</param>
        public Subscription(Connection conn, ClientInitMessage initMessage) : base(conn)
        {
            SubscribeInitMessage subscribeInitMessage = (SubscribeInitMessage)initMessage;

            _mode = subscribeInitMessage.SubscriptionMode;
            if (!string.IsNullOrEmpty(subscribeInitMessage.Filter))
            {
                string[] filterStrings = subscribeInitMessage.Filter.Split(',', '|', '\r', '\n', ' ');
                _filters = filterStrings.Select(filter => filter.Split('/')).ToArray();
            }

            lock (_subscriptions)
            {
                _subscriptions.Add(this);
            }
        }