Exemple #1
0
        public static XmlDictionaryReader SetupMessageContractTests(bool isWrapped)
        {
            MyInspector      inspector = new MyInspector();
            BasicHttpBinding binding   = new BasicHttpBinding();
            ChannelFactory <IMessageContract> factory = new ChannelFactory <IMessageContract>(binding, new EndpointAddress(Endpoints.HttpBaseAddress_Basic));

            factory.Endpoint.EndpointBehaviors.Add(inspector);
            IMessageContract clientProxy = factory.CreateChannel();

            MessageContractTypes.RequestBankingData transaction = new MessageContractTypes.RequestBankingData();
            transaction.accountName     = MessageContractConstants.customerElementValue;
            transaction.transactionDate = DateTime.Now;
            MessageContractConstants.dateElementValue = transaction.transactionDate.TimeOfDay.ToString();
            transaction.amount = Convert.ToInt32(MessageContractConstants.transactionElementValue);

            if (isWrapped)
            {
                MessageContractTypes.ReplyBankingData responseData = clientProxy.MessageContractRequestReply(transaction);
            }
            else
            {
                MessageContractTypes.ReplyBankingDataNotWrapped responseData = clientProxy.MessageContractRequestReplyNotWrapped(transaction);
            }

            XmlDictionaryReader reader = inspector.ReceivedMessage.GetReaderAtBodyContents();

            return(reader);
        }
        public void SendMessageContract(IMessageContract contract, bool compress = false, bool encrypt = false, bool close = false)
        {
            var builder = new SimpleMessage(MessageType.MessageContract, this, Debug)
                          .CompressMessage(compress)
                          .EncryptMessage(encrypt)
                          .SetHeaderString(contract.MessageHeader)
                          .SetBytes(contract.SerializeToBytes());

            builder.Build();
            SendToSocket(builder.PayLoad, close, false);
        }
Exemple #3
0
        private MessageTable CreateNewMessage(IMessageContract messageContract)
        {
            UserTable    user       = RetrieveUser(messageContract.UserName);
            MessageTable newMessage = new MessageTable
            {
                MessageText    = messageContract.Message,
                SenderId       = user.Id,
                MessageCreated = messageContract.MessageCreated
            };

            return(newMessage);
        }
Exemple #4
0
        public object HandleMessage(IMessageContract message)
        {
            var handler = handlers.FirstOrDefault(m => m.CanHandle(message.MessageType));

            if (handler == null)
            {
                Console.WriteLine($"No handler found for {message.MessageType} messageType");
                return(null);
            }

            return(handler.Handle(message.Data));
        }
Exemple #5
0
        private void Publish(IMessageContract message, Guid correlationId)
        {
            var props = channel.CreateBasicProperties();

            props.CorrelationId = correlationId.ToString();
            props.ReplyTo       = responseQueueName;

            var body = message.Serialize();

            logger.LogInformation($"Sending {message?.MessageType} message with CorrelationId {correlationId}");
            channel.BasicPublish(string.Empty, requestQueueName, props, body);
        }
        private Message CreateNewMessage(IMessageContract messageContract)
        {
            User    user       = RetrieveUser(messageContract.UserName);
            Message newMessage = new Message
            {
                MessageText        = messageContract.Message,
                SenderId           = user.Id,
                SenderEmailAddress = user.EmailAddress,
                MessageCreated     = messageContract.MessageCreated
            };

            return(newMessage);
        }
 private void ProcessMessageDispatch(IMessageContract messageContract, Message message,
                                     IRepoTransaction repoTransaction)
 {
     foreach (var emailAddress in messageContract.EmailAccounts)
     {
         MessageDispatch messageDispatch = new MessageDispatch
         {
             EmailAddress    = emailAddress,
             MessageId       = message.Id,
             MessageReceived = false
         };
         PersistMessagedispatch(messageDispatch, repoTransaction);
     }
 }
        public async Task SendMessageContractAsync(int id, IMessageContract contract, bool compress = false, bool encrypt = false, bool close = false)
        {
            var client  = GetClient(id);
            var builder = new SimpleMessage(MessageType.MessageContract, this, Debug)
                          .CompressMessage(compress)
                          .EncryptMessage(encrypt)
                          .SetHeaderString(contract.MessageHeader)
                          .SetBytes(contract.SerializeToBytes())
                          .SetSendClient(client);

            await builder.BuildAsync();

            SendToSocket(builder.PayLoad, close, false, id);
        }
        public static MyInspector SetupMessageContractTests(out IMessageContract clientProxy,
            out MessageContractTypes.RequestBankingData transaction)
        {
            MyInspector inspector = new MyInspector();
            BasicHttpBinding binding = new BasicHttpBinding();
            ChannelFactory<IMessageContract> factory = new ChannelFactory<IMessageContract>(binding, new EndpointAddress(Endpoints.HttpBaseAddress_Basic));
            factory.Endpoint.EndpointBehaviors.Add(inspector);
            clientProxy = factory.CreateChannel();
            transaction = new MessageContractTypes.RequestBankingData();
            transaction.accountName = MessageContractConstants.customerElementValue;
            transaction.transactionDate = DateTime.Now;
            MessageContractConstants.dateElementValue = transaction.transactionDate.TimeOfDay.ToString();
            transaction.amount = Convert.ToInt32(MessageContractConstants.transactionElementValue);

            return inspector;
        }
Exemple #10
0
        public static MyInspector SetupMessageContractTests(out IMessageContract clientProxy,
                                                            out MessageContractTypes.RequestBankingData transaction)
        {
            MyInspector      inspector = new MyInspector();
            BasicHttpBinding binding   = new BasicHttpBinding();
            ChannelFactory <IMessageContract> factory = new ChannelFactory <IMessageContract>(binding, new EndpointAddress(Endpoints.HttpBaseAddress_Basic));

            factory.Endpoint.EndpointBehaviors.Add(inspector);
            clientProxy                 = factory.CreateChannel();
            transaction                 = new MessageContractTypes.RequestBankingData();
            transaction.accountName     = MessageContractConstants.customerElementValue;
            transaction.transactionDate = DateTime.Now;
            MessageContractConstants.dateElementValue = transaction.transactionDate.TimeOfDay.ToString();
            transaction.amount = Convert.ToInt32(MessageContractConstants.transactionElementValue);

            return(inspector);
        }
Exemple #11
0
        private void CreateMessageTransaction(IMessageContract messageContract,
                                              MessageTable message)
        {
            List <MessageTransactionTable> messageTransactions = new List <MessageTransactionTable>();

            foreach (var emailAddress in messageContract.EmailAccounts)
            {
                var messageTransaction = new MessageTransactionTable
                {
                    EmailAddress    = emailAddress,
                    MessageId       = message.Id,
                    MessageReceived = false
                };
                messageTransactions.Add(messageTransaction);
            }

            PersistMessageTransaction(messageTransactions);
        }
Exemple #12
0
        private void PublishResponse(IMessageContract responseValue, string correlationId, string responseQueueName)
        {
            try
            {
                var body = responseValue.Serialize();

                var responseProps = channel.CreateBasicProperties();
                responseProps.CorrelationId = correlationId;

                channel.BasicPublish(string.Empty, responseQueueName, responseProps, body);

                Console.WriteLine($"Sending {responseValue?.MessageType} response with CorrelationId {correlationId}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error occurred during sending message with a {correlationId} correlationId - {ex.Message}");
            }
        }
 private void ProcessNewMessage(IMessageContract messageContract, Message message)
 {
     using (IRepoTransaction repoTransaction = RepoTransactionFactory.GetRepoTransaction(DatabaseOption.DatabaseEngine,
                                                                                         DatabaseOption.DbConnectionString))
     {
         try
         {
             repoTransaction.BeginTransaction();
             PersistMessage(message, repoTransaction);
             ProcessMessageDispatch(messageContract, message, repoTransaction);
             repoTransaction.Commit();
         }
         catch (Exception exception)
         {
             WriteErrorLog("Unable to process new message request.", exception);
             repoTransaction.Callback();
             throw;
         }
     }
 }
        public MessageRequestTokenContract CreateMessage(IMessageContract message)
        {
            ValidateAccessToken(message.AccessToken);

            if (message.EmailAccounts == null || message.EmailAccounts.Count <= 0)
            {
                throw new InvalidOperationException("Message contract does not have ant emails attahed.");
            }
            WriteInfoLog(string.Format("Going to create message. Message content\n{0}", message.Message));
            Message newMessage = CreateNewMessage(message);

            //PersistMessage(newMessage);
            //CreateMessageDispatch(message, newMessage);

            ProcessNewMessage(message, newMessage);
            //PersistMessageToMongoDbService(newMessage);

            return(CreateMessageStateTokenContract(MessageReceivedState.AcknowledgedRequest,
                                                   "Message was successfully acknowledged and persisted in our system."));
        }
Exemple #15
0
 /// <summary>
 /// Send a MessageContract to the server
 /// <para/>The close parameter indicates if the client should close after sending or not.
 /// </summary>
 /// <param name="contract"></param>
 /// <param name="close"></param>
 public void SendMessageContract(IMessageContract contract, bool close)
 {
     SendMessageContract(contract, false, close);
 }
Exemple #16
0
        /*=================================
         *
         *	MESSAGECONTRACT
         *
         *===========================================*/

        /// <summary>
        /// Send a MessageContract to the server
        /// <para/>The close parameter indicates if the client should close after sending or not.
        /// </summary>
        /// <param name="contract"></param>
        /// <param name="encryptContract"></param>
        /// <param name="close"></param>
        public void SendMessageContract(IMessageContract contract, bool encryptContract, bool close)
        {
            byte[] data = CreateByteMessageContract(contract, encryptContract);
            SendBytes(data, close);
        }
 public async Task Publish(IMessageContract message)
 {
     await _activator.Bus.Publish(message);
 }
 /// <summary>
 /// Creates an array of bytes for a MessageContract.
 /// </summary>
 /// <param name="contract"></param>
 /// <param name="encrypt"></param>
 /// <returns></returns>
 protected byte[] CreateByteMessageContract(IMessageContract contract, bool encrypt)
 {
     return(CreateByteArray(contract.SerializeToBytes(), "<MC>" + contract.MessageHeader + "</MC>", encrypt));
 }
Exemple #19
0
 public void SendMessage(IMessageContract message)
 {
     _view.SendMessage(IMessageAddInAdapter.ContractToViewAdapter(message));
 }
 /// <summary>
 /// Send a message to corresponding client asynchronous.
 /// <para/>The close parameter indicates if the client should close after the server has sent a message or not.
 /// <para>Id is not zero-based!</para>
 /// </summary>
 /// <param name="id"></param>
 /// <param name="contract"></param>
 /// <param name="encryptContract"></param>
 /// <param name="close"></param>
 public async Task SendMessageContractAsync(int id, IMessageContract contract, bool encryptContract, bool close)
 {
     await Task.Run(() => SendMessageContract(id, contract, encryptContract, close));
 }
 /// <summary>
 /// Sends a MessageContract to the corresponding client.
 /// <para/>The close parameter indicates if the client should close after the server has sent a message or not.
 /// <para>This method encrypts the message that will be send.</para>
 /// </summary>
 /// <param name="id"></param>
 /// <param name="contract"></param>
 /// <param name="close"></param>
 public void SendMessageContract(int id, IMessageContract contract, bool close)
 {
     SendMessageContract(id, contract, false, true);
 }
 public MainViewModel(IMessageContract messageContract)
 {
     _books = new ObservableCollection<Book>(new BooksService().GetAllBooks());
     AddBookCommand = new DelegateCommand(OnAddBook);
     _messageContract = messageContract;
 }
Exemple #23
0
 public async Task DeferLocal(TimeSpan delay, IMessageContract message)
 {
     await _activator.Bus.DeferLocal(delay, message);
 }
Exemple #24
0
 public MainViewModel(IMessageContract messageContract)
 {
     _books           = new ObservableCollection <Book>(new BooksService().GetAllBooks());
     AddBookCommand   = new DelegateCommand(OnAddBook);
     _messageContract = messageContract;
 }
Exemple #25
0
 /// <summary>
 /// Send a MessageContract to the server asynchronous.
 /// <para/>The close parameter indicates if the client should close after sending or not.
 /// </summary>
 /// <param name="contract"></param>
 /// <param name="close"></param>
 public async Task SendMessageContractAsync(IMessageContract contract, bool close)
 {
     await Task.Run(() => SendMessageContract(contract, close));
 }
Exemple #26
0
 static Network()
 {
     _contract  = new BinaryFormatterMessageContract();
     Statistics = new NetworkStatistics();
 }
 protected internal override void RaiseMessageContractReceived(IClientInfo client, IMessageContract contract, byte[] data)
 {
     contract.RaiseOnMessageReceived(this, client, contract.DeserializeToObject(data), contract.MessageHeader);
 }