Ejemplo n.º 1
0
        //! raising event: Disconnected
        protected virtual void OnDisconnect()
        {
            try
            {
                //! try to close device
                this.Open = false;
            }
            catch (Exception e)
            {
                System.Console.WriteLine(e.ToString());
            }

            WriteLogLine("Adapter disconnect.");

            if (null != DisconnectNotice)
            {
                DisconnectNotice.Invoke();
            }
        }
Ejemplo n.º 2
0
        private async void OnMessageReceived(ITcpChannel channel, object message)
        {
            // Here we validate the channel.
            if (!channel.ChannelId.Equals(_channel.ChannelId))
            {
                return;
            }
            var decodedMessage = message as EslDecodedMessage;

            // Handle decoded message.
            if (decodedMessage?.Headers == null ||
                !decodedMessage.Headers.HasKeys())
            {
                return;
            }

            var    headers = decodedMessage.Headers;
            object response;
            var    contentType = headers["Content-Type"];

            if (string.IsNullOrEmpty(contentType))
            {
                return;
            }
            contentType = contentType.ToLowerInvariant();
            switch (contentType)
            {
            case "command/reply":
                var reply = new CommandReply(headers, decodedMessage.OriginalMessage);
                response = reply;
                break;

            case "api/response":
                var apiResponse = new ApiResponse(decodedMessage.BodyText);
                response = apiResponse;
                break;

            case "text/event-plain":
                var parameters = decodedMessage.BodyLines.AllKeys.ToDictionary(key => key,
                                                                               key => decodedMessage.BodyLines[key]);
                var @event = new EslEvent(parameters);
                response = @event;
                break;

            case "log/data":
                var logdata = new LogData(headers, decodedMessage.BodyText);
                response = logdata;
                break;

            case "text/disconnect-notice":
                var notice = new DisconnectNotice(decodedMessage.BodyText);
                response = notice;
                break;

            case "text/rude-rejection":
                await _channel.CloseAsync();

                var reject = new RudeRejection(decodedMessage.BodyText);
                response = reject;
                break;

            default:
                // Here we are handling an unknown message
                var msg = new EslMessage(decodedMessage.Headers, decodedMessage.OriginalMessage);
                response = msg;
                break;
            }

            await HandleResponse(response);
        }
 public EslDisconnectNoticeEventArgs(DisconnectNotice notice)
 {
     _notice = notice;
 }