private void HandleMessage(BasicDeliverEventArgs result) { var data = Encoding.UTF8.GetString(result.Body); var telegram = new Telegram(data); var telegramEventArgs = new TelegramReceivedEventArgs(telegram); OnTelegramReceived(telegramEventArgs); }
/// <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); } }
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); }