コード例 #1
0
        public MqttMessage Publish(MqttMessage mqttMessage)
        {
            // todo: Check for connectivity? Or QoS level if message will be retained
            if (mqttMessage.GetRawMessage() == null || mqttMessage.GetRawMessage().Length == 0)
            {
                mqttMessage.messageId = client.Publish(mqttMessage.GetRawTopic(),
                                                       Encoding.UTF8.GetBytes(mqttMessage.message),
                                                       MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE,
                                                       mqttMessage.retain);
            }
            else
            {
                mqttMessage.messageId = client.Publish(mqttMessage.GetRawTopic(),
                                                       mqttMessage.rawMessage,
                                                       MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE,
                                                       mqttMessage.retain);
            }

            if (mqttMessage.messageId > 0)
            {
                MessagePublished?.Invoke(mqttMessage);
            }

            return(mqttMessage);
        }
コード例 #2
0
        public MqttMessage Publish(MqttMessage message)
        {
            var success = SometimesFalse();

            if (!success)
            {
                Log.Verbose($"Randomly failing Publish call for {message.GetRawTopic()}: {message.message}");
            }

            if (success)
            {
                message.messageId = _messageId++;

                MessagePublished?.Invoke(message);

                message.messageId = _messageId++;

                /*
                 * Task.Run(() =>
                 * {
                 *  //System.Threading.Thread.Sleep(GetRandom());
                 *  //message.prependDeviceId = false;
                 *  MessageReceivedString?.Invoke(message);
                 * });
                 */

                System.Threading.Thread.Sleep(GetRandom(100));
                MessageReceivedString?.Invoke(message);
            }
            return(message);
        }
コード例 #3
0
        public void Run()
        {
            new TaskFactory().StartNew(() =>
            {
                while (true)
                {
                    // Send messages only if we have something to send and Relay is ready to receive messages
                    if (_backpressureNeeded || _systemEvents.Count < 1)
                    {
                        // wait for load on relay to slow down
                        Thread.Sleep(2000);
                        continue;
                    }
                    var systemEvent = _systemEvents.Dequeue();

                    Thread.Sleep(100);

                    Console.WriteLine($"Passing message with command {systemEvent.Command} of type {systemEvent.MessageType} to relay");
                    MessagePublished?.Invoke(this, new Message
                    {
                        Command     = systemEvent.Command,
                        MessageType = systemEvent.MessageType
                    });
                }
            });
        }
コード例 #4
0
 private void OnMessagePublished(string topic, string payload)
 {
     MessagePublished?.Invoke(this, new MessagePublishedEventArgs()
     {
         Topic = topic, Payload = payload
     });
 }
コード例 #5
0
        public void PublishMessage(RabbitMessage message)
        {
            var queueMessage = message.Copy();

            queueMessage.Queue = Name;
            Messages.Enqueue(queueMessage);
            MessagePublished?.Invoke(this, queueMessage);
        }
コード例 #6
0
 private void DispatchMulticastMessage(MulticastTransportOperation multicastTransportOperation)
 {
     try
     {
         MessagePublished?.Invoke(multicastTransportOperation);
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
     }
 }
コード例 #7
0
        public async Task <IActionResult> PublishMessage(PublishMessageViewModel model)
        {
            var currentUser = await GetCurrentUserAsync();

            if (ModelState.IsValid)
            {
                string uniqueFileName = null;

                if (model.File1 != null)
                {
                    string uploadsFolder = Path.Combine(hostingEnvironment.WebRootPath, "Files");
                    uniqueFileName = Guid.NewGuid().ToString() + "_" + model.File1.FileName;
                    string filePath = Path.Combine(uploadsFolder, uniqueFileName);
                    model.File1.CopyTo(new FileStream(filePath, FileMode.Create));
                }

                MessagePublished message = new MessagePublished
                {
                    Content       = model.Content,
                    DatePublished = DateTime.Now,
                    YoutubeLink1  = model.YoutubeLink1,
                    File1         = uniqueFileName,
                    UserEmail     = currentUser.Email,
                    Year          = currentUser.Year
                };

                database.Add(message);
                database.SaveChanges();

                return(RedirectToAction("Index"));
            }
            else
            {
                ModelState.AddModelError(string.Empty, "It wasn't possible to send your message.");
            }

            return(View(model));
        }
コード例 #8
0
ファイル: MockMQTTWrapper.cs プロジェクト: sukhajata/iot-hub
 public void Publish(object sender, MQTTMessageArgs args)
 {
     numPublishedMessages++;
     receivedMessages.Add(args);
     MessagePublished?.Invoke(this, args);
 }
コード例 #9
0
ファイル: Message.cs プロジェクト: assafwe/mixter-old
 private void When(MessagePublished evt)
 {
     Id = evt.Id;
     _publishers.Add(evt.Author);
 }
コード例 #10
0
ファイル: Message.cs プロジェクト: assafwe/mixter-old
        public static Message Publish(IEventPublisher eventPublisher, UserId author, string content)
        {
            var messagePublished = new MessagePublished(MessageId.Generate(), author, content);

            return(new Message(eventPublisher, messagePublished));
        }
コード例 #11
0
ファイル: Message.cs プロジェクト: assafwe/mixter-old
 private Message(IEventPublisher eventPublisher, MessagePublished evt)
 {
     PublishEvent(eventPublisher, evt);
 }
コード例 #12
0
 protected virtual void OnMessagePublished(PublishMessageEventArgs e)
 {
     MessagePublished?.Invoke(this, e);
 }
コード例 #13
0
 public TimelineMessageProjection(UserId ownerId, MessagePublished evt)
     : this(ownerId, evt.Author, evt.Content, evt.Id)
 {
 }
コード例 #14
0
 public MessageDescription(MessagePublished evt)
     : this(evt.Author, evt.Content)
 {
 }