Example #1
0
 private void HandleMessage(BasicDeliverEventArgs result)
 {
     var data = Encoding.UTF8.GetString(result.Body);
     var telegram = new Telegram(data);
     var telegramEventArgs = new TelegramReceivedEventArgs(telegram);
     OnTelegramReceived(telegramEventArgs);
 }
Example #2
0
        /// <summary>
        /// Handles the TelegramReceived event of the client control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="TelegramReceivedEventArgs{XAMUmpTelegram}"/> instance containing the event data.</param>
        void client_TelegramReceived(object sender, TelegramReceivedEventArgs <XAMUmpTelegram> e)
        {
            try
            {
                string remoteaddr = XAMUmUtils.GetSwitchIdentifier(e.Telegram.ProjectID, e.Telegram.SwitchId, e.Telegram.DesignId);
                List <TelegramReceivedEventArgs <XAMUmpTelegram> > devBuf;
                if (!receivebuffer.TryGetValue(remoteaddr, out devBuf))
                {
                    devBuf = new List <TelegramReceivedEventArgs <XAMUmpTelegram> >();
                    receivebuffer.Add(remoteaddr, devBuf);
                }

                if (devBuf == null)
                {
                    devBuf = new List <TelegramReceivedEventArgs <XAMUmpTelegram> >();
                }

                lock (receivebuffer)
                {
                    if (devBuf.Count > 100)
                    {
                        Trace("To many telegrams in receive buffer of <" + remoteaddr + "> - cleare it!", TracePrio.FATALERROR);
                        devBuf.Clear();
                    }

                    devBuf.Add(e);
                }
            }
            catch (Exception ex1)
            {
                Trace("receive exception: " + ex1.Message, TracePrio.ERROR);
            }
        }
        /// <summary>
        /// Handles the telegram received.
        /// </summary>
        public void HandleTelegramReceived()
        {
            try
            {
                TelegramReceivedEventArgs <XAMUmpTelegram> e = null;
                do
                {
                    e = dispatcher.GetNextRcvTel(remoteAddressIdent);
                    if (e == null)
                    {
                        break;
                    }

                    // If there is no message in the telegrame --> it is an Ack!
                    if (AckReceived != null /*&& e.Telegram.Messages.Count == 0*/)
                    {
                        AckReceived();
                    }

                    foreach (var msg in e.Telegram.Messages)
                    {
                        try
                        {
                            switch (msg.MessageID)
                            {
                            case UmpMessageID.IdState:
                                _IdState = new XAMUmpStateFlags(msg.Value);
                                break;

                            case UmpMessageID.PageCount:
                                _PageCount = BitConverter.ToInt16(msg.Value, 0);
                                break;

                            case UmpMessageID.IdControl:
                                _IdControl = BitConverter.ToInt16(msg.Value, 0);
                                break;

                            case UmpMessageID.PageIndex:
                                _PageIndex = BitConverter.ToInt16(msg.Value, 0);
                                break;

                            case UmpMessageID.EditValue:
                            case UmpMessageID.I2C_Temperature:
                                if (ValueEvent == null)
                                {
                                    break;
                                }
                                ValueEvent(msg.MessageID, msg.ActorID, msg.Value);
                                break;

                            case UmpMessageID.VideoState:
                                if (msg.Value.Length < 12)
                                {
                                    trace("rcv VideoState: to less data", TracePrio.ERROR);
                                    break;
                                }
                                int cnt          = 0;
                                int StateFlags   = BitConverter.ToInt32(msg.Value, cnt); cnt += 4;
                                int BoundsLeft   = BitConverter.ToInt16(msg.Value, cnt); cnt += 2;
                                int BoundsTop    = BitConverter.ToInt16(msg.Value, cnt); cnt += 2;
                                int BoundsRight  = BitConverter.ToInt16(msg.Value, cnt); cnt += 2;
                                int BoundsBottom = BitConverter.ToInt16(msg.Value, cnt); cnt += 2;
                                trace("HandleTelegramReceived video state '" + StateFlags + "' left '" + BoundsLeft + "' top '" + BoundsTop + "' right '" + BoundsRight + "' bottom '" + BoundsBottom + "' ", TracePrio.MESSAGE);
                                if (VideoStateEvent != null)
                                {
                                    VideoStateEvent(StateFlags, BoundsLeft, BoundsTop, BoundsRight, BoundsBottom);
                                }

                                break;

                            default:
                            {
                                break;
                            }
                            }
                        }
                        catch (Exception ex)
                        {
                            trace("receive message exception: " + ex.Message, TracePrio.ERROR);
                        }
                    }
                } while (e != null);
            }
            catch (Exception ex1)
            {
                trace("receive exception: " + ex1.Message, TracePrio.ERROR);
            }
        }
Example #4
0
 protected virtual void OnTelegramReceived(TelegramReceivedEventArgs e)
 {
     var handler = TelegramReceived;
     if (handler != null) handler(this, e);
 }
 protected virtual void OnTelegramReceived(TelegramReceivedEventArgs e)
 {
     var handler = TelegramReceived;
     if (handler == null) Assert.Fail("No listener attached");
     handler(this, e);
 }