/// <summary>
        /// Constructor of the interception processor
        /// </summary>
        /// <param name="conn">Connection instance</param>
        /// <param name="initMessage">Initialization message</param>
        public Interception(Connection conn, ClientInitMessage initMessage) : base(conn)
        {
            InterceptInitMessage interceptInitMessage = (InterceptInitMessage)initMessage;

            _mode = interceptInitMessage.InterceptionMode;

            _interceptors.TryAdd(this, _mode);
        }
        /// <summary>
        /// Establishes a connection to the given UNIX socket file
        /// </summary>
        /// <param name="mode">Interception 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(InterceptionMode mode, string socketPath = Defaults.SocketPath, CancellationToken cancellationToken = default(CancellationToken))
        {
            InterceptInitMessage initMessage = new InterceptInitMessage {
                InterceptionMode = mode
            };

            Mode = mode;
            return(Connect(initMessage, socketPath, cancellationToken));
        }
示例#3
0
        /// <summary>
        /// Constructor of the interception processor
        /// </summary>
        /// <param name="conn">Connection instance</param>
        /// <param name="initMessage">Initialization message</param>
        public CodeInterception(Connection conn, ClientInitMessage initMessage) : base(conn)
        {
            InterceptInitMessage interceptInitMessage = (InterceptInitMessage)initMessage;

            _mode          = interceptInitMessage.InterceptionMode;
            _channels      = (interceptInitMessage.Channels != null) ? interceptInitMessage.Channels.ToList() : new List <CodeChannel>(Enum.GetValues(typeof(CodeChannel)).Cast <CodeChannel>());
            _filters       = interceptInitMessage.Filters ?? new List <string>();
            _priorityCodes = interceptInitMessage.PriortyCodes;
        }
        public Task Connect(InterceptionMode mode, string socketPath = Defaults.FullSocketPath, CancellationToken cancellationToken = default)
        {
            Mode = mode;
            Channels.Clear();
            Channels.AddRange(Enum.GetValues(typeof(CodeChannel)).Cast<CodeChannel>());
            Filters.Clear();
            PriortyCodes = false;

            InterceptInitMessage initMessage = new InterceptInitMessage { InterceptionMode = mode };
            return Connect(initMessage, socketPath, cancellationToken);
        }
        /// <summary>
        /// Establishes a connection to the given UNIX socket file
        /// </summary>
        /// <param name="mode">Interception mode</param>
        /// <param name="channels">Optional list of input channels where codes may be intercepted</param>
        /// <param name="filters">Optional list of codes that may be intercepted</param>
        /// <param name="priortyCodes">Define if priorty codes may be intercepted</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(InterceptionMode mode, IEnumerable<CodeChannel> channels = null, IEnumerable<string> filters = null, bool priortyCodes = false, string socketPath = Defaults.FullSocketPath, CancellationToken cancellationToken = default)
        {
            Mode = mode;
            Channels.Clear();
            if (channels == null)
            {
                Channels.AddRange(Enum.GetValues(typeof(CodeChannel)).Cast<CodeChannel>());
            }
            else
            {
                Channels.AddRange(channels);
            }
            Filters.Clear();
            if (filters != null)
            {
                Filters.AddRange(filters);
            }
            PriortyCodes = priortyCodes;

            InterceptInitMessage initMessage = new InterceptInitMessage { InterceptionMode = mode, Channels = Channels, Filters = Filters, PriortyCodes = priortyCodes };
            return Connect(initMessage, socketPath, cancellationToken);
        }
示例#6
0
        /// <summary>
        /// Constructor of the interception processor
        /// </summary>
        /// <param name="conn">Connection instance</param>
        /// <param name="initMessage">Initialization message</param>
        public Interception(Connection conn, ClientInitMessage initMessage) : base(conn)
        {
            InterceptInitMessage interceptInitMessage = (InterceptInitMessage)initMessage;

            _mode = interceptInitMessage.InterceptionMode;
        }