static int onReceive(Object cbArg, LBMMessage msg) { switch (msg.type()) { case LBM.MSG_DATA: if((msg.flags() & LBM.MSG_FLAG_OTR)==LBM.MSG_FLAG_OTR) System.Console.Out.WriteLine("Processing OTR Message. SQN: " + msg.sequenceNumber()); else if((msg.flags() & LBM.MSG_FLAG_RETRANSMIT)==LBM.MSG_FLAG_RETRANSMIT) System.Console.Out.WriteLine("Processing Late Join Message. SQN: " + msg.sequenceNumber()); else System.Console.Out.WriteLine("Processing Normal Message. SQN: " + msg.sequenceNumber()); System.Console.Out.WriteLine("Msg Received: " + msg.dataString()); break; case LBM.MSG_BOS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], Beginning of Transport Session"); break; case LBM.MSG_EOS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], End of Transport Session"); break; default: System.Console.Out.WriteLine("Unknown lbm_msg_t type " + msg.type() + " [" + msg.topicName() + "][" + msg.source() + "]"); break; } System.Console.Out.Flush(); msg.dispose(); return 0; }
static int onReceive(Object cbArg, LBMMessage msg) { switch (msg.type()) { case LBM.MSG_DATA: if ((msg.flags() & LBM.MSG_FLAG_OTR) == LBM.MSG_FLAG_OTR) { System.Console.Out.WriteLine("Processing OTR Message. SQN: " + msg.sequenceNumber()); } else if ((msg.flags() & LBM.MSG_FLAG_RETRANSMIT) == LBM.MSG_FLAG_RETRANSMIT) { System.Console.Out.WriteLine("Processing Late Join Message. SQN: " + msg.sequenceNumber()); } else { System.Console.Out.WriteLine("Processing Normal Message. SQN: " + msg.sequenceNumber()); } System.Console.Out.WriteLine("Msg Received: " + msg.dataString()); break; case LBM.MSG_BOS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], Beginning of Transport Session"); break; case LBM.MSG_EOS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], End of Transport Session"); break; default: System.Console.Out.WriteLine("Unknown lbm_msg_t type " + msg.type() + " [" + msg.topicName() + "][" + msg.source() + "]"); break; } System.Console.Out.Flush(); msg.dispose(); return(0); }
public int onReceive(object cbArg, LBMMessage msg) { // keep the sqn of a regular or hot failover sequence UInt64 sqn = (UInt64)msg.sequenceNumber(); if (_verbose) { if ((msg.flags() & LBM.MSG_FLAG_HF_64) > 0) { sqn = msg.hfSequenceNumber64(); } else if ((msg.flags() & LBM.MSG_FLAG_HF_32) > 0) { sqn = (UInt64)msg.hfSequenceNumber32(); } } switch (msg.type()) { case LBM.MSG_DATA: if (stotal_msg_count == 0) { data_start_time = Environment.TickCount; } else { data_end_time = Environment.TickCount; } msg_count++; total_msg_count++; stotal_msg_count++; subtotal_msg_count++; byte_count += msg.length(); total_byte_count += msg.length(); if ((msg.flags() & LBM.MSG_FLAG_RETRANSMIT) != 0) { rx_msgs++; } if ((msg.flags() & LBM.MSG_FLAG_OTR) != 0) { otr_msgs++; } if (_verbose) { Console.WriteLine("@{0}.{1:000000}[{2}{3}][{4}][{5}]{6}{7}{8}{9}{10}{11}{12}, {13} bytes", msg.timestampSeconds(), msg.timestampMicroseconds(), msg.topicName(), String.Empty, msg.source(), sqn, ((msg.flags() & LBM.MSG_FLAG_RETRANSMIT) != 0 ? "-RX" : String.Empty), ((msg.flags() & LBM.MSG_FLAG_HF_64) != 0 ? "-HF64" : String.Empty), ((msg.flags() & LBM.MSG_FLAG_HF_32) != 0 ? "-HF32" : String.Empty), ((msg.flags() & LBM.MSG_FLAG_HF_DUPLICATE) != 0 ? "-HFDUP" : String.Empty), ((msg.flags() & LBM.MSG_FLAG_HF_PASS_THROUGH) != 0 ? "-PASS" : String.Empty), ((msg.flags() & LBM.MSG_FLAG_HF_OPTIONAL) != 0 ? "-HFOPT" : String.Empty), ((msg.flags() & LBM.MSG_FLAG_OTR) != 0 ? "-OTR" : String.Empty), msg.length()); if (lbmrcv.verifiable) { int rc = VerifiableMessage.verifyMessage(msg.data(), msg.data().Length, lbmrcv.verbose); if (rc == 0) { System.Console.WriteLine("Message sqn " + sqn + " does not verify!"); } else if (rc == -1) { System.Console.Error.WriteLine("Message sqn " + sqn + " is not a verifiable message."); System.Console.Error.WriteLine("Use -V option on source and restart receiver."); } else { if (lbmrcv.verbose) { System.Console.WriteLine("Message sqn " + sqn + " verfies"); } } } else if (lbmrcv.sdm) { try { SDMsg.parse(msg.data()); LBMSDMField f = SDMsg.locate("Sequence Number"); long recvdseq = ((LBMSDMFieldInt64)f).get(); System.Console.Out.WriteLine("SDM Message contains " + SDMsg.count() + " fields and Field Sequence Number == " + recvdseq); } catch (LBMSDMException sdme) { System.Console.Out.WriteLine("Error occurred processing received SDM Message: " + sdme); } } } break; case LBM.MSG_BOS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], Beginning of Transport Session"); break; case LBM.MSG_EOS: //data_end_time = System.DateTime.Now.Ticks; System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], End of Transport Session"); if (_end_on_eos) { if (_summary) { print_summary(); } end(); } subtotal_msg_count = 0; break; case LBM.MSG_UNRECOVERABLE_LOSS: unrec_count++; total_unrec_count++; if (_verbose) { System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + sqn + "],"); System.Console.Out.WriteLine(" LOST"); } break; case LBM.MSG_UNRECOVERABLE_LOSS_BURST: burst_loss++; if (_verbose) { System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + sqn + "],"); System.Console.Out.WriteLine(" LOST BURST"); } break; case LBM.MSG_REQUEST: if (stotal_msg_count == 0) { data_start_time = Environment.TickCount; } else { data_end_time = Environment.TickCount; } msg_count++; stotal_msg_count++; subtotal_msg_count++; byte_count += msg.data().Length; total_byte_count += msg.data().Length; if (_verbose) { System.Console.Out.Write("Request [" + msg.topicName() + "][" + msg.source() + "][" + sqn + "], "); System.Console.Out.WriteLine(msg.data().Length + " bytes"); } break; case LBM.MSG_HF_RESET: if (_verbose) { Console.WriteLine("[{0}][{1}][{2}]{3}{4}{5}{6}-RESET\n", msg.topicName(), msg.source(), sqn, ((msg.flags() & LBM.MSG_FLAG_RETRANSMIT) != 0 ? "-RX" : String.Empty), ((msg.flags() & LBM.MSG_FLAG_OTR) != 0 ? "-OTR" : String.Empty), ((msg.flags() & LBM.MSG_FLAG_HF_64) != 0 ? "-HF64" : String.Empty), ((msg.flags() & LBM.MSG_FLAG_HF_32) != 0 ? "-HF32" : String.Empty)); } break; default: System.Console.Out.WriteLine("Unknown lbm_msg_t type " + msg.type() + " [" + msg.topicName() + "][" + msg.source() + "]"); break; } msg.dispose(); return(0); }
public int onReceive(object cbArg, LBMMessage msg) { switch (msg.type()) { case LBM.MSG_DATA: if (stotal_msg_count == 0) { data_start_time = Environment.TickCount; } else { data_end_time = Environment.TickCount; } msg_count++; total_msg_count++; if ((total_msg_count == 100) && _dereg == 1) { System.Console.Out.WriteLine("Sending DEREGISTRATION\n"); System.Console.Out.Flush(); _lbmrcvr.umederegister(); } stotal_msg_count++; subtotal_msg_count++; byte_count += msg.data().Length; total_byte_count += msg.data().Length; if ((msg.flags() & LBM.MSG_FLAG_RETRANSMIT) != 0) { rx_msgs++; } if ((msg.flags() & LBM.MSG_FLAG_OTR) != 0) { otr_msgs++; } if (_verbose) { System.Console.Error.Write("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "]"); if ((msg.flags() & LBM.MSG_FLAG_UME_RETRANSMIT) != 0) { System.Console.Error.Write("-RX-"); } if ((msg.flags() & LBM.MSG_FLAG_OTR) != 0) { System.Console.Error.Write("-OTR-"); } System.Console.Error.Write(", "); System.Console.Error.WriteLine(msg.data().Length + " bytes"); } if (_exack > 0) { if ((msg.sequenceNumber() % _exack) == 0) { if (_verbose) { System.Console.Out.WriteLine(" Sending Explicit ACK"); } try { msg.sendExplicitAck(); } catch (Exception e) { System.Console.Error.WriteLine("msg.sendExplicitAck(): " + e.Message); } } } break; case LBM.MSG_BOS: System.Console.Error.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], Beginning of Transport Session"); break; case LBM.MSG_EOS: System.Console.Error.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], End of Transport Session"); if (_end_on_eos) { if (_summary) { print_summary(); } end(); } subtotal_msg_count = 0; break; case LBM.MSG_UNRECOVERABLE_LOSS: unrec_count++; total_unrec_count++; if (_verbose) { System.Console.Error.WriteLine("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber().ToString("x") + "], LOST"); } break; case LBM.MSG_UNRECOVERABLE_LOSS_BURST: burst_loss++; if (_verbose) { System.Console.Error.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], LOST BURST"); } break; case LBM.MSG_REQUEST: if (stotal_msg_count == 0) { data_start_time = Environment.TickCount; } else { data_end_time = Environment.TickCount; } msg_count++; stotal_msg_count++; subtotal_msg_count++; byte_count += msg.data().Length; total_byte_count += msg.data().Length; break; case LBM.MSG_UME_REGISTRATION_ERROR: System.Console.Error.WriteLine("[" + msg.topicName() + "][" + msg.source() + "] UME registration error: " + msg.dataString()); break; case LBM.MSG_UME_DEREGISTRATION_SUCCESS_EX: System.Console.Out.Write("Received MSG_UME_DEREGISTRATION_SUCCESS_EX\n"); UMEDeregistrationSuccessInfo dereg = msg.deregistrationSuccessInfo(); System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "] store " + dereg.storeIndex() + ": " + dereg.store() + " UME registration successful. SrcRegID " + dereg.sourceRegistrationId() + " RcvRegID " + dereg.receiverRegistrationId() + ". Flags " + dereg.flags() + " "); if ((dereg.flags() & LBM.MSG_UME_REGISTRATION_SUCCESS_EX_FLAG_OLD) != 0) { System.Console.Out.Write("OLD[SQN " + dereg.sequenceNumber() + "] "); } if ((dereg.flags() & LBM.MSG_UME_REGISTRATION_SUCCESS_EX_FLAG_NOCACHE) != 0) { System.Console.Out.Write("NOCACHE "); } System.Console.Out.WriteLine(); break; case LBM.MSG_UME_DEREGISTRATION_COMPLETE_EX: System.Console.Out.Write("Received MSG_UME_DEREGISTRATION_COMPLETE_EX\n"); break; case LBM.MSG_UME_REGISTRATION_SUCCESS_EX: UMERegistrationSuccessInfo reg = msg.registrationSuccessInfo(); System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "] store " + reg.storeIndex() + ": " + reg.store() + " UME registration successful. SrcRegID " + reg.sourceRegistrationId() + " RcvRegID " + reg.receiverRegistrationId() + ". Flags " + reg.flags() + " "); if ((reg.flags() & LBM.MSG_UME_REGISTRATION_SUCCESS_EX_FLAG_OLD) != 0) { System.Console.Out.Write("OLD[SQN " + reg.sequenceNumber() + "] "); } if ((reg.flags() & LBM.MSG_UME_REGISTRATION_SUCCESS_EX_FLAG_NOCACHE) != 0) { System.Console.Out.Write("NOCACHE "); } if ((reg.flags() & LBM.MSG_UME_REGISTRATION_SUCCESS_EX_FLAG_SRC_SID) != 0) { System.Console.Out.Write("Src Session ID 0x" + reg.sourceSessionId().ToString("x") + " "); } System.Console.Out.WriteLine(); break; case LBM.MSG_UME_REGISTRATION_COMPLETE_EX: UMERegistrationCompleteInfo regcomplete = msg.registrationCompleteInfo(); System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "] UME registration complete. SQN " + regcomplete.sequenceNumber() + ". Flags " + regcomplete.flags() + " "); if ((regcomplete.flags() & LBM.MSG_UME_REGISTRATION_COMPLETE_EX_FLAG_QUORUM) != 0) { System.Console.Out.Write("QUORUM "); } if ((regcomplete.flags() & LBM.MSG_UME_REGISTRATION_COMPLETE_EX_FLAG_RXREQMAX) != 0) { System.Console.Out.Write("RXREQMAX "); } if ((regcomplete.flags() & LBM.MSG_UME_REGISTRATION_COMPLETE_EX_FLAG_SRC_SID) != 0) { System.Console.Out.Write("Src Session ID 0x" + regcomplete.sourceSessionId().ToString("x") + " "); } System.Console.Out.WriteLine(); break; case LBM.MSG_UME_REGISTRATION_CHANGE: System.Console.Error.WriteLine("[" + msg.topicName() + "][" + msg.source() + "] UME registration change: " + msg.dataString()); break; default: System.Console.Out.WriteLine("Unhandled receiver event [" + msg.type() + "] from source [" + msg.source() + "] with topic [" + msg.topicName() + "]. Refer to https://ultramessaging.github.io/currdoc/doc/dotnet_example/index.html#unhandledcsevents for a detailed description."); break; } msg.dispose(); // Send ACK now System.Console.Out.Flush(); return(0); }
public int onReceive(object cbArg, LBMMessage msg) { switch (msg.type()) { case LBM.MSG_DATA: if (stotal_msg_count == 0) { data_start_time = Environment.TickCount; } else { data_end_time = Environment.TickCount; } msg_count++; total_msg_count++; stotal_msg_count++; subtotal_msg_count++; byte_count += msg.length(); total_byte_count += msg.length(); if ((msg.flags() & LBM.MSG_FLAG_RETRANSMIT) != 0) { rx_msgs++; } if ((msg.flags() & LBM.MSG_FLAG_OTR) != 0) { otr_msgs++; } if (_verbose) { Console.Write("[@{0}.{1:000000}]", msg.timestampSeconds(), msg.timestampMicroseconds()); if (msg.channelInfo() != null) { switch (msg.channelInfo().channelFlags()) { case LBM.MSG_FLAG_NUMBERED_CHANNEL: System.Console.Out.Write("[" + msg.topicName() + ":" + msg.channelInfo().channelNumber() + "][" + msg.source() + "][" + msg.sequenceNumber() + "], "); break; default: break; } } else { System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "], "); } if ((msg.flags() & LBM.MSG_FLAG_RETRANSMIT) != 0) { System.Console.Out.Write("-RX- "); } if ((msg.flags() & LBM.MSG_FLAG_OTR) != 0) { System.Console.Out.Write("-OTR- "); } System.Console.Out.WriteLine(msg.data().Length + " bytes"); if (lbmhfxrcv.verifiable) { int rc = VerifiableMessage.verifyMessage(msg.data(), msg.data().Length, lbmhfxrcv.verbose); if (rc == 0) { System.Console.WriteLine("Message sqn " + msg.sequenceNumber() + " does not verify!"); } else if (rc == -1) { System.Console.Error.WriteLine("Message sqn " + msg.sequenceNumber() + " is not a verifiable message."); System.Console.Error.WriteLine("Use -V option on source and restart receiver."); } else { if (lbmhfxrcv.verbose) { System.Console.WriteLine("Message sqn " + msg.sequenceNumber() + " verfies"); } } } } break; case LBM.MSG_BOS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], Beginning of Transport Session"); break; case LBM.MSG_EOS: //data_end_time = System.DateTime.Now.Ticks; System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], End of Transport Session"); if (_end_on_eos) { if (_summary) { print_summary(); } end(); } subtotal_msg_count = 0; break; case LBM.MSG_UNRECOVERABLE_LOSS: unrec_count++; total_unrec_count++; if (_verbose) { System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "],"); System.Console.Out.WriteLine(" LOST"); } break; case LBM.MSG_UNRECOVERABLE_LOSS_BURST: burst_loss++; if (_verbose) { System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "],"); System.Console.Out.WriteLine(" LOST BURST"); } break; case LBM.MSG_REQUEST: if (stotal_msg_count == 0) { data_start_time = Environment.TickCount; } else { data_end_time = Environment.TickCount; } msg_count++; stotal_msg_count++; subtotal_msg_count++; byte_count += msg.data().Length; total_byte_count += msg.data().Length; if (_verbose) { System.Console.Out.Write("Request [" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "], "); System.Console.Out.WriteLine(msg.data().Length + " bytes"); } break; default: System.Console.Out.WriteLine("Unknown lbm_msg_t type " + msg.type() + " [" + msg.topicName() + "][" + msg.source() + "]"); break; } msg.dispose(); System.Console.Out.Flush(); return(0); }
/* Class for receiving messages */ static int onReceive(Object cbArg, LBMMessage msg) { switch (msg.type()) { case LBM.MSG_DATA: System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "]"); if ((msg.flags() & LBM.MSG_FLAG_UME_RETRANSMIT) != 0) { System.Console.Out.Write("-RX-"); } if ((msg.flags() & LBM.MSG_FLAG_OTR) != 0) { System.Console.Out.Write("-OTR-"); } System.Console.Out.Write(", "); System.Console.Out.WriteLine(msg.data().Length + " bytes"); break; case LBM.MSG_REQUEST: if ((msg.flags() & LBM.MSG_FLAG_UME_RETRANSMIT) != 0) { System.Console.Out.Write("-RX-"); } if ((msg.flags() & LBM.MSG_FLAG_OTR) != 0) { System.Console.Out.Write("-OTR-"); } System.Console.Out.Write(", "); System.Console.Out.WriteLine(msg.data().Length + " bytes"); break; case LBM.MSG_BOS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], Beginning of Transport Session"); break; case LBM.MSG_EOS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], End of Transport Session"); break; case LBM.MSG_UNRECOVERABLE_LOSS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber().ToString("x") + "], LOST"); break; case LBM.MSG_UNRECOVERABLE_LOSS_BURST: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber().ToString("x") + "], LOST BURST"); break; case LBM.MSG_UME_REGISTRATION_ERROR: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "] UME registration error: " + msg.dataString()); break; case LBM.MSG_UME_REGISTRATION_SUCCESS_EX: UMERegistrationSuccessInfo reg = msg.registrationSuccessInfo(); System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "] store " + reg.storeIndex() + ": " + reg.store() + " UME registration successful. Sequence number is " + reg.sequenceNumber()); break; case LBM.MSG_UME_REGISTRATION_COMPLETE_EX: UMERegistrationCompleteInfo regcomplete = msg.registrationCompleteInfo(); System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "] UME registration complete. SQN " + regcomplete.sequenceNumber() + ". Flags " + regcomplete.flags()); break; case LBM.MSG_UME_DEREGISTRATION_SUCCESS_EX: System.Console.Out.Write("DEREGISTRATION SUCCESSFUL "); UMEDeregistrationSuccessInfo dereg = msg.deregistrationSuccessInfo(); System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "] store " + dereg.storeIndex() + ": " + dereg.store() + " UME deregistration successful. SrcRegID " + dereg.sourceRegistrationId() + " RcvRegID " + dereg.receiverRegistrationId() + ". Flags " + dereg.flags() + " "); System.Console.Out.WriteLine(); break; case LBM.MSG_UME_DEREGISTRATION_COMPLETE_EX: System.Console.Out.WriteLine("DEREGISTRATION COMPLETE"); break; case LBM.MSG_UME_REGISTRATION_CHANGE: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "] UME registration change: " + msg.dataString()); break; default: System.Console.Out.WriteLine("Other event, type=" + msg.type()); break; } return 0; }
protected int onReceive(object cbArg, LBMMessage msg) { switch (msg.type()) { case LBM.MSG_DATA: if (msg_count == 0) { saved_source = msg.source(); } msg_count++; total_msg_count++; subtotal_msg_count++; byte_count += msg.data().Length; if ((msg.flags() & LBM.MSG_FLAG_RETRANSMIT) != 0) { rx_msgs++; } if ((msg.flags() & LBM.MSG_FLAG_OTR) != 0) { otr_msgs++; } if (_verbose) { System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "], "); if ((msg.flags() & LBM.MSG_FLAG_RETRANSMIT) != 0) { System.Console.Out.Write("-RX- "); } if ((msg.flags() & LBM.MSG_FLAG_OTR) != 0) { System.Console.Out.Write("-OTR- "); } System.Console.Out.WriteLine(msg.data().Length + " bytes"); } break; case LBM.MSG_BOS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], Beginning of Transport Session"); break; case LBM.MSG_EOS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], End of Transport Session"); subtotal_msg_count = 0; break; case LBM.MSG_NO_SOURCE_NOTIFICATION: if (_verbose) { System.Console.Out.WriteLine("[" + msg.topicName() + "], no sources found for topic"); } break; case LBM.MSG_UNRECOVERABLE_LOSS: unrec_count++; total_unrec_count++; if (_verbose) { System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "],"); System.Console.Out.WriteLine(" LOST"); } break; case LBM.MSG_UNRECOVERABLE_LOSS_BURST: burst_loss++; if (_verbose) { System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "],"); System.Console.Out.WriteLine(" LOST BURST"); } break; case LBM.MSG_REQUEST: msg_count++; total_msg_count++; subtotal_msg_count++; byte_count += msg.data().Length; if (_verbose) { System.Console.Out.Write("Request [" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "], "); System.Console.Out.WriteLine(msg.data().Length + " bytes"); } break; default: System.Console.Out.WriteLine("Unhandled receiver event [" + msg.type() + "] from source [" + msg.source() + "] with topic [" + msg.topicName() + "]. Refer to https://ultramessaging.github.io/currdoc/doc/dotnet_example/index.html#unhandledcsevents for a detailed description."); break; } System.Console.Out.Flush(); msg.dispose(); return(0); }
protected int onReceive(object cbArg, LBMMessage msg) { switch (msg.type()) { case LBM.MSG_DATA: if (msg_count == 0) { saved_source = msg.source(); } msg_count++; total_msg_count++; subtotal_msg_count++; byte_count += msg.data().Length; if ((msg.flags() & LBM.MSG_FLAG_RETRANSMIT) != 0) { rx_msgs++; } if ((msg.flags() & LBM.MSG_FLAG_OTR) != 0) { otr_msgs++; } if (_verbose) { System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "], "); if ((msg.flags() & LBM.MSG_FLAG_RETRANSMIT) != 0) { System.Console.Out.Write("-RX- "); } if ((msg.flags() & LBM.MSG_FLAG_OTR) != 0) { System.Console.Out.Write("-OTR- "); } System.Console.Out.WriteLine(msg.data().Length + " bytes"); } break; case LBM.MSG_BOS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], Beginning of Transport Session"); break; case LBM.MSG_EOS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], End of Transport Session"); subtotal_msg_count = 0; break; case LBM.MSG_NO_SOURCE_NOTIFICATION: if (_verbose) { System.Console.Out.WriteLine("[" + msg.topicName() + "], no sources found for topic"); } break; case LBM.MSG_UNRECOVERABLE_LOSS: unrec_count++; total_unrec_count++; if (_verbose) { System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "],"); System.Console.Out.WriteLine(" LOST"); } break; case LBM.MSG_UNRECOVERABLE_LOSS_BURST: burst_loss++; if (_verbose) { System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "],"); System.Console.Out.WriteLine(" LOST BURST"); } break; case LBM.MSG_REQUEST: msg_count++; total_msg_count++; subtotal_msg_count++; byte_count += msg.data().Length; if (_verbose) { System.Console.Out.Write("Request [" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "], "); System.Console.Out.WriteLine(msg.data().Length + " bytes"); } break; default: System.Console.Out.WriteLine("Unknown lbm_msg_t type " + msg.type() + " [" + msg.topicName() + "][" + msg.source() + "]"); break; } System.Console.Out.Flush(); msg.dispose(); return(0); }
public int onReceive(object cbArg, LBMMessage msg) { // keep the sqn of a regular or hot failover sequence UInt64 sqn = (UInt64)msg.sequenceNumber(); if (_verbose) { if ((msg.flags() & LBM.MSG_FLAG_HF_64) > 0) { sqn = msg.hfSequenceNumber64(); } else if ((msg.flags() & LBM.MSG_FLAG_HF_32) > 0) { sqn = (UInt64)msg.hfSequenceNumber32(); } } switch (msg.type()) { case LBM.MSG_DATA: msg_count++; total_msg_count++; subtotal_msg_count++; byte_count += msg.length(); if ((total_msg_count == 100) && (_dereg == 1)) { _wrcvr.umederegister(); _dereg = 0; } if ((msg.flags() & LBM.MSG_FLAG_RETRANSMIT) != 0) { rx_msgs++; } if ((msg.flags() & LBM.MSG_FLAG_OTR) != 0) { otr_msgs++; } if (_verbose) { if (msg.channelInfo() != null) { Console.WriteLine("@{0}.{1:000000}[{2}{3}][{4}][{5}]{6}{7}{8}{9}{10}{11}{12}, {13} bytes", msg.timestampSeconds(), msg.timestampMicroseconds(), msg.topicName(), String.Empty, msg.source(), sqn, ((msg.flags() & LBM.MSG_FLAG_RETRANSMIT) != 0 ? "-RX" : String.Empty), ((msg.flags() & LBM.MSG_FLAG_OTR) != 0 ? "-OTR" : String.Empty), ((msg.flags() & LBM.MSG_FLAG_HF_64) != 0 ? "-HF64" : String.Empty), ((msg.flags() & LBM.MSG_FLAG_HF_32) != 0 ? "-HF32" : String.Empty), ((msg.flags() & LBM.MSG_FLAG_HF_DUPLICATE) != 0 ? "-HFDUP" : String.Empty), ((msg.flags() & LBM.MSG_FLAG_HF_PASS_THROUGH) != 0 ? "-PASS" : String.Empty), ((msg.flags() & LBM.MSG_FLAG_HF_OPTIONAL) != 0 ? "-HFOPT" : String.Empty), msg.length()); } } break; case LBM.MSG_BOS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], Beginning of Transport Session"); break; case LBM.MSG_EOS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], End of Transport Session"); if (_end_on_eos) { end(); } subtotal_msg_count = 0; break; case LBM.MSG_UNRECOVERABLE_LOSS: unrec_count++; total_unrec_count++; if (_verbose) { System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + sqn + "],"); System.Console.Out.WriteLine(" LOST"); } break; case LBM.MSG_UNRECOVERABLE_LOSS_BURST: burst_loss++; if (_verbose) { System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + sqn + "],"); System.Console.Out.WriteLine(" LOST BURST"); } break; case LBM.MSG_REQUEST: msg_count++; total_msg_count++; subtotal_msg_count++; byte_count += msg.length(); if (_verbose) { System.Console.Out.Write("Request [" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "], "); System.Console.Out.WriteLine(msg.length() + " bytes"); } break; case LBM.MSG_NO_SOURCE_NOTIFICATION: System.Console.Out.WriteLine("[" + msg.topicName() + "], no sources found for topic"); break; case LBM.MSG_UME_DEREGISTRATION_SUCCESS_EX: System.Console.Out.Write("Received MSG_UME_DEREGISTRATION_SUCCESS_EX\n"); break; case LBM.MSG_UME_DEREGISTRATION_COMPLETE_EX: System.Console.Out.Write("Received MSG_UME_DEREGISTRATION_COMPLETE_EX\n"); break; default: System.Console.Out.WriteLine("Unhandled receiver event [" + msg.type() + "] from source [" + msg.source() + "] with topic [" + msg.topicName() + "]. Refer to https://ultramessaging.github.io/currdoc/doc/dotnet_example/index.html#unhandledcsevents for a detailed description."); break; } msg.dispose(); System.Console.Out.Flush(); return(0); }
} /* main */ /* Class for receiving messages */ static int onReceive(Object cbArg, LBMMessage msg) { switch (msg.type()) { case LBM.MSG_DATA: System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "]"); if ((msg.flags() & LBM.MSG_FLAG_UME_RETRANSMIT) != 0) { System.Console.Out.Write("-RX-"); } if ((msg.flags() & LBM.MSG_FLAG_OTR) != 0) { System.Console.Out.Write("-OTR-"); } System.Console.Out.Write(", "); System.Console.Out.WriteLine(msg.data().Length + " bytes"); break; case LBM.MSG_REQUEST: if ((msg.flags() & LBM.MSG_FLAG_UME_RETRANSMIT) != 0) { System.Console.Out.Write("-RX-"); } if ((msg.flags() & LBM.MSG_FLAG_OTR) != 0) { System.Console.Out.Write("-OTR-"); } System.Console.Out.Write(", "); System.Console.Out.WriteLine(msg.data().Length + " bytes"); break; case LBM.MSG_BOS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], Beginning of Transport Session"); break; case LBM.MSG_EOS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], End of Transport Session"); break; case LBM.MSG_UNRECOVERABLE_LOSS: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber().ToString("x") + "], LOST"); break; case LBM.MSG_UNRECOVERABLE_LOSS_BURST: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber().ToString("x") + "], LOST BURST"); break; case LBM.MSG_UME_REGISTRATION_ERROR: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "] UME registration error: " + msg.dataString()); break; case LBM.MSG_UME_REGISTRATION_SUCCESS_EX: UMERegistrationSuccessInfo reg = msg.registrationSuccessInfo(); System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "] store " + reg.storeIndex() + ": " + reg.store() + " UME registration successful. Sequence number is " + reg.sequenceNumber()); break; case LBM.MSG_UME_REGISTRATION_COMPLETE_EX: UMERegistrationCompleteInfo regcomplete = msg.registrationCompleteInfo(); System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "] UME registration complete. SQN " + regcomplete.sequenceNumber() + ". Flags " + regcomplete.flags()); break; case LBM.MSG_UME_DEREGISTRATION_SUCCESS_EX: System.Console.Out.Write("DEREGISTRATION SUCCESSFUL "); UMEDeregistrationSuccessInfo dereg = msg.deregistrationSuccessInfo(); System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "] store " + dereg.storeIndex() + ": " + dereg.store() + " UME deregistration successful. SrcRegID " + dereg.sourceRegistrationId() + " RcvRegID " + dereg.receiverRegistrationId() + ". Flags " + dereg.flags() + " "); System.Console.Out.WriteLine(); break; case LBM.MSG_UME_DEREGISTRATION_COMPLETE_EX: System.Console.Out.WriteLine("DEREGISTRATION COMPLETE"); break; case LBM.MSG_UME_REGISTRATION_CHANGE: System.Console.Out.WriteLine("[" + msg.topicName() + "][" + msg.source() + "] UME registration change: " + msg.dataString()); break; default: System.Console.Out.WriteLine("Other event, type=" + msg.type()); break; } return(0); }