public IMessageEnvelope ProcessMessage(IMessageEnvelope message)
            {
                var response = connector.SendEnvelope(message);

                if (response == null)
                {
                    throw new InvalidOperationException("Unable to obtain a response from the server.");
                }

                if (response.Error != null)
                {
                    var sb = new StringBuilder();
                    if (null != response.Error)
                    {
                        sb.Append(response.Error.ErrorMessage);
                        sb.AppendFormat(", ErrorCode: {0}", response.Error.ErrorCode);
                        sb.AppendFormat(", ErrorClass: {0}", response.Error.ErrorClass);
                    }
                    else
                    {
                        sb.Append("response.Error == null");
                    }
                    // ServerError class is not an exception!!! so it have no stack trace...
                    throw new DeveelDbServerException(sb.ToString(), -1, -1);
                }

                var content = connector.OpenEnvelope(response);

                connector.OnMessageReceived(content);
                return(response);
            }
示例#2
0
        /// <summary>
        /// Serializes the envelope.
        /// </summary>
        /// <param name="instance">The instance.</param>
        /// <returns></returns>
        public string SerializeEnvelope(IMessageEnvelope instance)
        {
            try
            {
                instance.MessageType   = instance.Message.GetType().AssemblyQualifiedName;
                instance.MessageString = SerializeMessage(instance.Message);
            }
            catch (System.Exception ex)
            {
                throw new MessageSerializationException("Could not serialize Message " + instance.MessageType + " for " + instance.Originator + " in " + instance.MessageUID, ex, instance);
            }
            string serializeString = string.Empty;

            try
            {
                var stream        = new MemoryStream();
                var xmlSerializer = new XmlSerializer(typeof(MessageEnvelope));
                xmlSerializer.Serialize(stream, instance);
                byte[] serializeBytes = stream.ToArray();
                serializeString = System.Text.ASCIIEncoding.UTF8.GetString(serializeBytes);
            }
            catch (System.Exception ex)
            {
                throw new MessageSerializationException("Could not serialize Message Envelope with Message " + instance.MessageType + " for " + instance.Originator + " in " + instance.MessageUID, ex, instance);
            }
            return(serializeString);
        }
            private IMessage Request(IMessageEnvelope envelope)
            {
                connector.SendEnvelope(envelope);
                var response = connector.ReceiveResponse(connector.Timeout, envelope.Metadata);

                return(connector.OnProcessServerResponse(response));
            }
        /// <inheritdoc />
        public Type Decode(IMessageEnvelope storage)
        {
            storage = Arguments.EnsureNotNull(storage, nameof(storage));

            var header = storage.Headers["AssemblyQualifiedName"];

            string aqn;

            if (header is byte[] headerBytes)
            {
                aqn = Encoding.ASCII.GetString(headerBytes);
            }
            else
            {
                aqn = (string)header;
            }

            if (aqn == null)
            {
                throw new AbbotwareException("Message header is missing Assembly Qualified Name");
            }

            var type = Type.GetType(aqn, false);

            if (type == null)
            {
                throw AbbotwareException.Create("unable to load assembly containing type info:{0}", aqn);
            }

            return(type);
        }
 protected void SendEnvelope(IMessageEnvelope envelope)
 {
     lock (channelLock) {
         var bytes = SerializeEnvelope(envelope);
         OutputStream.Write(bytes, 0, bytes.Length);
         OutputStream.Flush();
     }
 }
 public Task PublishMessage(IMessageEnvelope message)
 {
     return Task.Run(() =>
     {
         var hubContext = _connectionManager.GetHubContext<WebSocketClientChannelSender>();
         hubContext.Clients.All.recieveMessage(message);
     });
 }
示例#7
0
 public Task PublishMessage(IMessageEnvelope message)
 {
     return(Task.Run(() =>
     {
         var hubContext = _connectionManager.GetHubContext <WebSocketClientChannelSender>();
         hubContext.Clients.All.recieveMessage(message);
     }));
 }
示例#8
0
 public Task WriteAsync(IMessageEnvelope messageEnvelope, CancellationToken cancellationToken = default)
 {
     return(Task.Run(() =>
     {
         this.Write(messageEnvelope);
     },
                     cancellationToken));
 }
示例#9
0
 public override Task <String> SerializeMessageEnvelopeAsync(IMessageEnvelope messageEnvelope, CancellationToken cancellationToken = default)
 {
     return(Task.Run(() =>
     {
         return this.MessageParser.SerializeMessageEnvelope(messageEnvelope);
     },
                     cancellationToken));
 }
示例#10
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="Received{TMessage}" /> class.
        /// </summary>
        /// <param name="content">typed message data</param>
        /// <param name="envelope">message evenlope metadata</param>
        public Received(TContent content, IMessageEnvelope envelope)
        {
            Arguments.NotNull(content, nameof(content));
            Arguments.NotNull(envelope, nameof(envelope));

            this.Content  = content;
            this.Envelope = envelope;
        }
示例#11
0
            public IMessageEnvelope ProcessMessage(IMessageEnvelope envelope)
            {
                var metadata = envelope.Metadata;
                var message  = connector.GetMessage(envelope);

                if (message == null)
                {
                    return(CreateErrorResponse(metadata, new Exception("No message found in the envelope.")));
                }

                if (message is ConnectRequest)
                {
                    return(ProcessConnect(metadata, (ConnectRequest)message));
                }

                if (message is AuthenticateRequest)
                {
                    return(ProcessAuthenticate(metadata, (AuthenticateRequest)message));
                }

                if (message is QueryExecuteRequest)
                {
                    return(ProcessQuery(metadata, (QueryExecuteRequest)message));
                }
                if (message is QueryResultPartRequest)
                {
                    return(ProcessQueryPart(metadata, (QueryResultPartRequest)message));
                }
                if (message is DisposeResultRequest)
                {
                    return(ProcessDisposeResult(metadata, (DisposeResultRequest)message));
                }

                if (message is LargeObjectCreateRequest)
                {
                    return(ProcessCreateLargeObject(metadata, (LargeObjectCreateRequest)message));
                }

                if (message is BeginRequest)
                {
                    return(ProcessBegin(metadata));
                }
                if (message is CommitRequest)
                {
                    return(ProcessCommit(metadata, (CommitRequest)message));
                }
                if (message is RollbackRequest)
                {
                    return(ProcessRollback(metadata, (RollbackRequest)message));
                }

                if (message is CloseRequest)
                {
                    return(ProcessClose(metadata));
                }

                return(CreateErrorResponse(envelope, "Message not supported"));
            }
 protected virtual byte[] SerializeEnvelope(IMessageEnvelope envelope)
 {
     using (var stream = new MemoryStream()) {
         var formatter = new BinaryFormatter();
         formatter.Serialize(stream, envelope);
         stream.Flush();
         return(stream.ToArray());
     }
 }
示例#13
0
 /// <summary>
 /// Sends the message.
 /// </summary>
 /// <param name="queueName">Name of the queue.</param>
 /// <param name="messageEnvelope">The message envelope.</param>
 public void SendMessage(string queueName, IMessageEnvelope messageEnvelope)
 {
     foreach (IQueueAdapter queueManager in _queueManagers)
     {
         if (queueManager.QueueName == queueName)
         {
             queueManager.SendMessage(messageEnvelope);
         }
     }
 }
示例#14
0
 void IBusLogger.LogPublishFailure(IMessageEnvelope envelope, string failureMessage, System.Exception exceptionOccurred, Type messageType)
 {
     try
     {
         MessagingPublisherLog(envelope, messageType.FullName, false, failureMessage, exceptionOccurred);
     }
     catch (System.Exception ex)
     {
     }
 }
示例#15
0
        /// <summary>
        /// Recieves the message async.
        /// </summary>
        protected void ReceiveMessageAsync()
        {
            SqlDataReader reader = null;

            while (!_isStop)
            {
                try
                {
                    reader = _sqlQueueHelper.ReceiveMessage(true, Convert.ToInt32(_configuration.timeoutInSeconds.Name), true, _configuration.queue.Name, _connection);
                    while (reader.Read())
                    {
                        byte[] messageBytes = (byte[])reader.GetValue(13);

                        String messageText = ASCIIEncoding.ASCII.GetString(messageBytes);
                        if (!string.IsNullOrEmpty(messageText))
                        {
                            IMessageEnvelope envelope = null;
                            try
                            {
                                envelope = _serializer.DeserializeEnvelope(messageText);

                                _logger.LogAdapterSuccess(envelope, "Message Received:" + envelope.MessageUID, this.GetType());

                                if (envelope != null)
                                {
                                    OnMessage(envelope);
                                }
                            }
                            catch (System.Exception ex)
                            {
                                _logger.LogAdapterFailure(envelope, ex.Message, ex, this.GetType());
                            }
                        }
                    }
                }
                catch (System.Exception ex)
                {
                    _logger.LogError(ex.Message, ex);

                    if (_connection.State == ConnectionState.Closed)
                    {
                        _connection.Open();
                    }
                    Thread.Sleep(2000);
                }
                finally
                {
                    if (reader != null)
                    {
                        reader.Close();
                    }
                    Thread.Sleep(100);
                }
            }
        }
示例#16
0
 public void MessagingQueueLog(IMessageEnvelope envelope, string adapterType, bool isSuccess, string message, System.Exception occurredException)
 {
     if (envelope != null)
     {
         MessagingQueueLog(envelope.MessageUID, envelope.MessageSentOn, adapterType, isSuccess, message, occurredException, ConfigurationHelper.GetEnvironment(envelope));
     }
     else
     {
         MessagingQueueLog(null, null, adapterType, isSuccess, message, occurredException, null);
     }
 }
示例#17
0
 public void MessagingHostLog(IMessageEnvelope envelope, string busType, bool isSuccess, string message, System.Exception occurredException)
 {
     if (envelope != null)
     {
         MessagingHostLog(envelope.MessageUID, envelope.MessageSentOn, envelope.Originator, busType, isSuccess, message, occurredException, ConfigurationHelper.GetEnvironment(envelope));
     }
     else
     {
         MessagingHostLog(null, null, string.Empty, busType, isSuccess, message, occurredException, null);
     }
 }
示例#18
0
            private IMessageEnvelope CreateErrorResponse(IMessageEnvelope sourceMessage, Exception error)
            {
                IDictionary <string, object> metadata = null;

                if (sourceMessage != null)
                {
                    metadata = sourceMessage.Metadata;
                }

                return(CreateErrorResponse(metadata, error));
            }
示例#19
0
        public async Task <R> HandleAsync <T, R>(IMessageEnvelope <T> message)
        {
            var handler = Handler as Func <IMessageEnvelope <T>, Task>;

            if (handler == null)
            {
                throw new InvalidCastException($"Invalid cast from {Handler.GetType()} to Func<IMessageEnvelope<{typeof(T).Name}>, Task<object>>");
            }
            await handler(message);

            return(default);
示例#20
0
        protected virtual IMessage GetMessage(IMessageEnvelope envelope)
        {
            if (envelope == null)
            {
                return(null);
            }

            // TODO: handle errors? it's not supposed the client to send errors to the server ...

            return(envelope.Message);
        }
示例#21
0
 public void MessagingSubscriberLog(IMessageEnvelope envelope, string subscriberType, bool isSuccess, string message, System.Exception occurredException)
 {
     if (envelope != null)
     {
         MessagingSubscriberLog(envelope.MessageUID, envelope.MessageSentOn, subscriberType, isSuccess, message, 0, occurredException, false, false, 0, false, null, 0, ConfigurationHelper.GetEnvironment(envelope));
     }
     else
     {
         MessagingSubscriberLog(null, null, subscriberType, isSuccess, message, 0, occurredException, false, false, 0, false, null, 0, null);
     }
 }
示例#22
0
        public void Send(IMessageEnvelope envelope)
        {
            var message = new MailMessage();
            message.To.Add(new MailAddress(envelope.To));
            message.Subject = envelope.Subject;
            message.Body = envelope.Content.Content;
            message.IsBodyHtml = true;

            var client = new SmtpClient();
            client.Send(message);
        }
示例#23
0
 /// <summary>
 /// Sends the message.
 /// </summary>
 /// <param name="messageEnvelope">The message envelope.</param>
 public void SendMessage(IMessageEnvelope messageEnvelope)
 {
     try
     {
         // _azureQueueHelper.SendMessage(messageEnvelope);
     }
     catch (System.Exception ex)
     {
         _logger.LogError(ex.Message, ex);
         throw;
     }
 }
示例#24
0
        public RequestIndices(IMessageEnvelope message)
        {
            _id = message.Context.Id;

            var indices = message.Indices;

            _duration   = indices.GetValueOrDefault("request.duration") as float?;
            _statusCode = indices.GetValueOrDefault("request.statuscode") as int?;
            _url        = indices.GetValueOrDefault("request.url") as string;
            _method     = indices.GetValueOrDefault("request.method") as string;
            _statusCode = indices.GetValueOrDefault("request.statuscode") as int?;
        }
        public override IMessageEnvelope GenerateDebugMessage()
        {
            try {
                INeuraliumDebugMessage message = new NeuraliumDebugMessage();
                message.Message = "allo :)";
                IMessageEnvelope envelope = this.GenerateBlockchainMessage(message);

                return(envelope);
            } catch (Exception ex) {
                throw new ApplicationException("failed to generate neuralium debug message", ex);
            }
        }
示例#26
0
        /// <inheritdoc />
        public virtual TMessage Decode <TMessage>(IMessageEnvelope storage)
        {
            storage = Arguments.EnsureNotNull(storage, nameof(storage));

            var type = this.typeEncoder.Decode(storage);

            if (type != null && type != typeof(TMessage))
            {
                throw AbbotwareException.Create("Message type Mismatch! Message Contains:{0}  Caller Expects:{1}  maybe you should call the non generic decode, or use a MessageGetter / Cosumer that supports callback's per message type", type.AssemblyQualifiedName !, typeof(TMessage).AssemblyQualifiedName !);
            }

            return(this.Serializer.Decode <TMessage>(storage.Body.ToArray()));
        }
        protected virtual void OnTriggerNotification(IMessageEnvelope envelope)
        {
            if (triggerChannels == null)
            {
                return;
            }

            lock (triggerChannels) {
                foreach (var channel in triggerChannels)
                {
                }
            }
        }
        protected virtual IMessage OnProcessServerResponse(IMessageEnvelope envelope)
        {
            if (envelope == null)
            {
                return(null);
            }
            if (envelope.Error != null)
            {
                throw new DeveelDbException(envelope.Error.ErrorMessage, envelope.Error.ErrorClass, envelope.Error.ErrorCode);
            }

            return(envelope.Message);
        }
示例#29
0
        public void Send(IMessageEnvelope envelope)
        {
            var message = new MailMessage();

            message.To.Add(new MailAddress(envelope.To));
            message.Subject    = envelope.Subject;
            message.Body       = envelope.Content.Content;
            message.IsBodyHtml = true;

            var client = new SmtpClient();

            client.Send(message);
        }
示例#30
0
 public override async Task <R> HandleAsync <T, R>(IMessageEnvelope <T> message)
 {
     while (true)
     {
         try
         {
             return(await _asyncCommandHandler.HandleAsync <T, R>(message).ConfigureAwait(false));
         }
         catch when(_retryCount-- > 0)
         {
         }
     }
 }
示例#31
0
        public void SerializeMessage(IMessageEnvelope<object> message, IModel model, out IBasicProperties headers, out byte[] body, out string routingKey)
        {
            Stream stream = Serializer.Serialize(message);

            var messageBuilder = new MapMessageBuilder(model);
            messageBuilder.Headers[MessageTypeHeader] = message.GetType().GetGenericArguments()[0].AssemblyQualifiedName;
            headers = (IBasicProperties)messageBuilder.GetContentHeader();

            routingKey = message.Message.GetType().ToRoutingKey();

            body = new byte[stream.Length];
            stream.Read(body, 0, body.Length);
        }
示例#32
0
        public static string GetEnvironment(IMessageEnvelope envelope)
        {
            string environment = string.Empty;

            if (envelope != null)
            {
                if (!string.IsNullOrEmpty(envelope.Environment))
                {
                    environment = envelope.Environment;
                }
            }

            return(environment);
        }
示例#33
0
 /// <summary>
 /// Called when [message].
 /// </summary>
 /// <param name="messageEnvelope">The message envelope.</param>
 /// <param name="specificSubscribers">The specific subscribers.</param>
 void OnMessage(IMessageEnvelope messageEnvelope, IList <string> specificSubscribers)
 {
     _logger.LogBusReceived(messageEnvelope, "");
     try
     {
         var session       = new SessionContext();
         var OnMessageCall = new OnMessageAsync(_subscriberManager.OnMessage);
         OnMessageCall.BeginInvoke(messageEnvelope, specificSubscribers, null, this);
     }
     catch (System.Exception exception)
     {
         _logger.LogBusReceivedFailure(messageEnvelope, exception.Message, exception);
     }
 }
示例#34
0
            public IMessageEnvelope ProcessMessage(IMessageEnvelope envelope)
            {
                var metadata = envelope.Metadata;
                var message = connector.GetMessage(envelope);
                if (message == null)
                    return CreateErrorResponse(metadata, new Exception("No message found in the envelope."));

                if (message is ConnectRequest)
                    return ProcessConnect(metadata, (ConnectRequest)message);

                if (message is AuthenticateRequest)
                    return ProcessAuthenticate(metadata, (AuthenticateRequest)message);

                if (message is QueryExecuteRequest)
                    return ProcessQuery(metadata, (QueryExecuteRequest)message);
                if (message is QueryResultPartRequest)
                    return ProcessQueryPart(metadata, (QueryResultPartRequest)message);
                if (message is DisposeResultRequest)
                    return ProcessDisposeResult(metadata, (DisposeResultRequest)message);

                if (message is LargeObjectCreateRequest)
                    return ProcessCreateLargeObject(metadata, (LargeObjectCreateRequest)message);

                if (message is BeginRequest)
                    return ProcessBegin(metadata);
                if (message is CommitRequest)
                    return ProcessCommit(metadata, (CommitRequest)message);
                if (message is RollbackRequest)
                    return ProcessRollback(metadata, (RollbackRequest)message);

                if (message is CloseRequest)
                    return ProcessClose(metadata);

                return CreateErrorResponse(envelope, "Message not supported");
            }
示例#35
0
 private IMessageEnvelope CreateErrorResponse(IMessageEnvelope sourceMessage, string message)
 {
     return CreateErrorResponse(sourceMessage, new ProtocolException(message));
 }
示例#36
0
 protected void SendEnvelope(IMessageEnvelope envelope)
 {
     lock (channelLock) {
         var bytes = SerializeEnvelope(envelope);
         OutputStream.Write(bytes, 0, bytes.Length);
         OutputStream.Flush();
     }
 }
示例#37
0
        protected virtual IMessage GetMessage(IMessageEnvelope envelope)
        {
            if (envelope == null)
                return null;

            // TODO: handle errors? it's not supposed the client to send errors to the server ...

            return envelope.Message;
        }
示例#38
0
 private IMessage Ping(IMessageEnvelope envelope)
 {
     return Request(envelope);
 }
示例#39
0
            public IMessageEnvelope ProcessMessage(IMessageEnvelope message)
            {
                var response = connector.SendEnvelope(message);
                if (response == null)
                    throw new InvalidOperationException("Unable to obtain a response from the server.");

                if (response.Error != null)
                    throw new ServerException(response.Error.ErrorMessage);

                var content = connector.OpenEnvelope(response);
                connector.OnMessageReceived(content);
                return response;
            }
示例#40
0
            private IMessage RequestConnect(IMessageEnvelope envelope)
            {
                try {
                    var request = (ConnectRequest) envelope.Message;
                    connector.Timeout = request.Timeout;
                    connector.OpenConnector(request.RemoteEndPoint);

                    var response = Request(envelope);
                    var responseMessage = (ConnectResponse) response;
                    if (!responseMessage.Opened) {
                        connector.Close();
                        throw new InvalidOperationException();
                    }

                    return response;
                } catch (Exception) {
                    //TODO:
                    throw;
                }
            }
示例#41
0
 protected abstract IMessageEnvelope SendEnvelope(IMessageEnvelope envelope);
 protected override IMessageEnvelope SendEnvelope(IMessageEnvelope envelope)
 {
     return ServerMessageProcessor.ProcessMessage(envelope);
 }
示例#43
0
 public PipelineEventArgs(IMessageEnvelope<object> envelope)
 {
     MessageEnvelope = envelope;
 }
示例#44
0
 private IMessage RequestQueryExecute(IMessageEnvelope envelope)
 {
     throw new NotImplementedException();
 }
示例#45
0
 private IMessage RequestCreateLargeObject(IMessageEnvelope envelope)
 {
     throw new NotImplementedException();
 }
示例#46
0
 private IMessage RequestCreateTrigger(IMessageEnvelope envelope)
 {
     throw new NotImplementedException();
 }
示例#47
0
            private IMessageEnvelope CreateErrorResponse(IMessageEnvelope sourceMessage, Exception error)
            {
                IDictionary<string, object> metadata = null;
                if (sourceMessage != null)
                    metadata = sourceMessage.Metadata;

                return CreateErrorResponse(metadata, error);
            }
示例#48
0
            public IMessageEnvelope ProcessMessage(IMessageEnvelope envelope)
            {
                var message = envelope.Message;
                IMessage response = null;

                if (message is ConnectRequest)
                    response = RequestConnect(envelope);
                else if (message is AuthenticateRequest)
                    response = RequestAuthenticate(envelope);
                else if (message is QueryExecuteRequest)
                    response = RequestQueryExecute(envelope);
                else if (message is QueryResultPartRequest)
                    response = RequestQueryResultPart(envelope);
                else if (message is DisposeResultRequest)
                    response = RequestDisposeResult(envelope);
                else if (message is LargeObjectCreateRequest)
                    response = RequestCreateLargeObject(envelope);
                else if (message is LargeObjectDisposeRequest)
                    response = RequestDisposeLargeObject(envelope);
                else if (message is TriggerCreateRequest)
                    response = RequestCreateTrigger(envelope);
                else if (message is BeginRequest)
                    response = RequestBegin(envelope);
                else if (message is CommitRequest)
                    response = RequestCommit(envelope);
                else if (message is RollbackRequest)
                    response = RequestRollback(envelope);
                else if (message is PingRequest)
                    response = Ping(envelope);
                else if (message is CloseRequest)
                    response = RequestClose(envelope);

                if (response == null)
                    throw new NotSupportedException();

                return CreateResponse(envelope.Metadata, response);
            }
示例#49
0
 protected virtual IMessage OpenEnvelope(IMessageEnvelope envelope)
 {
     return envelope.Message;
 }
示例#50
0
 protected virtual byte[] SerializeEnvelope(IMessageEnvelope envelope)
 {
     using (var stream = new MemoryStream()) {
         var formatter = new BinaryFormatter();
         formatter.Serialize(stream, envelope);
         stream.Flush();
         return stream.ToArray();
     }
 }
示例#51
0
            public IMessageEnvelope ProcessMessage(IMessageEnvelope message)
            {
                var response = connector.SendEnvelope(message);
                if (response == null)
                    throw new InvalidOperationException("Unable to obtain a response from the server.");

                if (response.Error != null)
                {
                    var sb = new StringBuilder();
                    if (null != response.Error) {
                        sb.Append (response.Error.ErrorMessage);
                        sb.AppendFormat (", ErrorCode: {0}", response.Error.ErrorCode);
                        sb.AppendFormat (", ErrorClass: {0}", response.Error.ErrorClass);
                    }
                    else
                        sb.Append ("response.Error == null");
                    // ServerError class is not an exception!!! so it have no stack trace...
                    throw new DeveelDbServerException (sb.ToString(), -1, -1);
                }

                var content = connector.OpenEnvelope(response);
                connector.OnMessageReceived(content);
                return response;
            }
示例#52
0
 private IMessage RequestQueryResultPart(IMessageEnvelope envelope)
 {
     throw new NotImplementedException();
 }
示例#53
0
 private IMessage RequestCommit(IMessageEnvelope envelope)
 {
     throw new NotImplementedException();
 }
示例#54
0
 private IMessage RequestDisposeResult(IMessageEnvelope envelope)
 {
     throw new NotImplementedException();
 }
示例#55
0
 protected virtual bool ShouldReceive(IDictionary<string, object> senderMetadata, IMessageEnvelope envelope)
 {
     var senderId = ExtractDispatchId(senderMetadata);
     var envelopeId = ExtractDispatchId(envelope.Metadata);
     return senderId == envelopeId;
 }
示例#56
0
            private IMessage RequestClose(IMessageEnvelope envelope)
            {
                try {
                    var response = Request(envelope);
                    var responseMessage = (AcknowledgeResponse) response;
                    if (!responseMessage.State)
                        throw new InvalidOperationException();

                    connector.Close();

                    return response;
                } catch (Exception) {

                    throw;
                }
            }
示例#57
0
            private IMessage RequestAuthenticate(IMessageEnvelope envelope)
            {
                try {
                    connector.AssertOpen();

                    var response = Request(envelope);
                    var responseMessage = (AuthenticateResponse) response;
                    if (!responseMessage.Authenticated)
                        throw new InvalidOperationException();

                    connector.OnAuthenticated(((AuthenticateRequest)envelope.Message).UserName, responseMessage.TimeStamp);
                    return response;
                } catch (Exception) {

                    throw;
                }
            }
示例#58
0
 private IMessage Request(IMessageEnvelope envelope)
 {
     connector.SendEnvelope(envelope);
     var response = connector.ReceiveResponse(connector.Timeout, envelope.Metadata);
     return connector.OnProcessServerResponse(response);
 }
示例#59
0
        protected virtual void OnTriggerNotification(IMessageEnvelope envelope)
        {
            if (triggerChannels == null)
                return;

            lock (triggerChannels) {
                foreach (var channel in triggerChannels) {
                }
            }
        }
示例#60
0
 private IMessage RequestRollback(IMessageEnvelope envelope)
 {
     throw new NotImplementedException();
 }