Example #1
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;
    }
Example #2
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);
    }
Example #3
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);
        }
Example #4
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);
        }
Example #5
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;
    }
Example #7
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);
        }
Example #8
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);
        }
Example #9
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);
    }