/// <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); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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); }
/// <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); } }