Example #1
0
        public int onResponse(object cbArg, LBMRequest req, LBMMessage msg)
        {
            switch (msg.type())
            {
            case LBM.MSG_RESPONSE:
                response_count++;
                response_byte_count += msg.data().Length;
                if (_verbose > 0)
                {
                    Console.Out.WriteLine("LBM.MSG_RESPONSE [" + msg.source() + "][" + msg.sequenceNumber() + "], " + msg.data().Length + " bytes");
                    if (_verbose > 1)
                    {
                        dump(msg);
                    }
                }
                break;

            default:
                Console.Out.WriteLine("Unknown message type " + msg.type() + "[" + msg.source() + "]");
                break;
            }
            msg.dispose();
            Console.Out.Flush();
            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 onResponse(object cbArg, LBMRequest req, LBMMessage msg)
        {
            switch (msg.type())
            {
            case LBM.MSG_RESPONSE:
                response_count++;
                response_byte_count += msg.data().Length;
                if (_verbose > 0)
                {
                    System.Console.Out.WriteLine("Response ["
                                                 + msg.source()
                                                 + "]["
                                                 + msg.sequenceNumber()
                                                 + "], "
                                                 + msg.data().Length
                                                 + " bytes");
                    if (_verbose > 1)
                    {
                        dump(msg);
                    }
                }
                break;

            default:
                System.Console.Out.WriteLine("Unhandled receiver event [" + msg.type() + "] from source [" + msg.source() + "]. 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);
        }
Example #4
0
            protected int onReceive(object cbArg, LBMMessage msg)
            {
                switch (msg.type())
                {
                case LBM.MSG_DATA:
                    IntPtr messagePtr = msg.dataPointerSafe();

                    if (bufferAcquiredSize != msg.length())
                    {
                        if (bufferAcquiredSize >= 0)
                        {
                            source.buffsCancel();
                        }

                        // assume that the payload size is correctly checked on the pinger size
                        bufferAcquiredSize =
                            (source.buffAcquire(out bufferAcquired, (uint)msg.length(), 0) == 0)
                                            ? (int)msg.length() : -1;
                    }
#if RunUnsafeMode
                    dqwordBlockCopy(bufferAcquired.ToPointer(), messagePtr.ToPointer(), (int)msg.length());
#else
                    memcpy(bufferAcquired, messagePtr, (int)msg.length());
#endif
                    source.buffsCompleteAndAcquire(out bufferAcquired, (uint)bufferAcquiredSize, 0);
                    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");
                    break;

                case LBM.MSG_UNRECOVERABLE_LOSS:
                    System.Console.Error.WriteLine("[" + msg.topicName() + "][" + msg.source() + "]["
                                                   + msg.sequenceNumber() + "], LOST");
                    /* Any kind of loss makes this test invalid */
                    System.Console.WriteLine("Unrecoverable loss occurred.  Quitting...");
                    System.Environment.Exit(1);
                    break;

                case LBM.MSG_UNRECOVERABLE_LOSS_BURST:
                    System.Console.Error.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], LOST BURST");
                    /* Any kind of loss makes this test invalid */
                    System.Console.WriteLine("Unrecoverable loss occurred.  Quitting...");
                    System.Environment.Exit(1);
                    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();
                return(0);
            }
Example #5
0
        } // ReceiverLoss

        private void ReceiverBurstLoss(LBMMessage msg)
        {
            _timeOfDay.NewTimeStamp();

            _burstCount++;
            long burstSize = msg.sequenceNumber() - _lastSequenceNum;

            _lastSequenceNum = msg.sequenceNumber();

            // Send no more than one loss/burst report within any 10-second period.
            if ((_timeOfDay.GetSec() - _lossReportSec) >= _parentTmonContext.GetLossSuppress())
            {
                _reportBuffer.Clear();
                _reportBuffer.Append('l'); _reportBuffer.Append(',');
                _reportBuffer.Append(_parentTmonContext.GetMessageHeader());
                _reportBuffer.Append(','); _reportBuffer.Append(_timeOfDay.GetSec());
                _reportBuffer.Append(','); _reportBuffer.Append(_timeOfDay.GetUsec());
                _reportBuffer.Append(','); _reportBuffer.Append(_objectId);
                _reportBuffer.Append(','); _reportBuffer.Append(msg.sequenceNumber());
                _reportBuffer.Append(','); _reportBuffer.Append(burstSize);

                _tmonUmSource.send(Encoding.ASCII.GetBytes(_reportBuffer.ToString()), _reportBuffer.Length, 0);
                _lossReportSec = _timeOfDay.GetSec(); /* Remember when the report was made. */
            }
        } // receiverBurstLoss
Example #6
0
        } // receiverBurstLoss

        public void ReceiverEvent(LBMMessage msg)
        {
            switch (msg.type())
            {
            case LBM.MSG_DATA:
                _msgCount++;
                _lastSequenceNum = msg.sequenceNumber();
                break;

            case LBM.MSG_BOS:
                ReceiverBos(msg);
                break;

            case LBM.MSG_EOS:
                ReceiverEos(msg);
                break;

            case LBM.MSG_UNRECOVERABLE_LOSS:
                ReceiverLoss(msg);
                break;

            case LBM.MSG_UNRECOVERABLE_LOSS_BURST:
                ReceiverBurstLoss(msg);
                break;
            }
        }
    }/* ReceiverCallback */

    /* Class for receiving responses */
    public static int onResponse(object cbArg, LBMRequest req, LBMMessage msg)
    {
        switch (msg.type())
        {
        case LBM.MSG_RESPONSE:
            System.Console.Out.WriteLine("Response Received");
            run = 0;
            break;
        }
        return(0);
    } /* ResponseCallback */
Example #8
0
    } /* main */

    /* Class for receiving messages */
    static int onReceive(Object cbArg, LBMMessage msg)
    {
        switch (msg.type())
        {
        case LBM.MSG_DATA:
            System.Console.Out.WriteLine("LBM_MSG_DATA received");
            cleanup = 1;
            break;
        }
        return(0);
    }
Example #9
0
 /* Class for receiving responses */
 public static int onResponse(object cbArg, LBMRequest req, LBMMessage msg)
 {
     switch (msg.type())
     {
         case LBM.MSG_RESPONSE:
             System.Console.Out.WriteLine("Response Received");
             run = 0;
             break;
     }
     return 0;
 }
Example #10
0
 /* Class for receiving messages */
 static int onReceive(Object cbArg, LBMMessage msg)
 {
     switch (msg.type())
             {
                     case LBM.MSG_NO_SOURCE_NOTIFICATION:
                             System.Console.Out.WriteLine("[" + msg.topicName() + "], no sources found for topic after " + noSourceQueries +" queries");
                             noSource++;
                             break;
                     default:
                             System.Console.Out.WriteLine("Other event, type=" + msg.type());
                             break;
             }
             return 0;
 }
Example #11
0
            public int onReceive(Object cbArgs, LBMMessage theMessage)
            {
                /* There are several different events that can cause the
                 *  receiver callbackto be called.  Decode the event that
                 * caused this.  */
                switch (theMessage.type())
                {
                case LBM.MSG_DATA:

                    /* NOTE:  Normally it would be a bad idea to do
                     * something as slow as a print statement in the
                     * callback function itself.  In this example, we'll
                     * probably only receive one message, so it doesn't
                     * matter.
                     */
                    System.Console.WriteLine(
                        "Received "
                        + theMessage.length()
                        + " bytes on topic "
                        + theMessage.topicName()
                        + ": '"
                        + System.Text.Encoding.GetEncoding("ISO-8859-1").GetString(theMessage.data())
                        + "'");


                    /* Increment the number of messages we've received.*/
                    messagesReceived++;
                    break;

                case LBM.MSG_BOS:
                    System.Console.WriteLine("[" + theMessage.topicName() + "][" + theMessage.source() + "], Beginning of Transport Session");
                    break;

                case LBM.MSG_EOS:
                    System.Console.WriteLine("[" + theMessage.topicName() + "][" + theMessage.source() + "], End of Transport Session");
                    break;

                default:
                    System.Console.WriteLine("unexpected event: " + theMessage.type());
                    System.Environment.Exit(1);
                    break;
                }
                theMessage.dispose();

                /*
                 * Return 0 if there were no errors. Returning a non-zero value will
                 * cause LBM to log a generic error message.
                 */
                return(0);
            } /* onReceive */
Example #12
0
        } // Logger

        public int OnReceive(object cbArg, LBMMessage msg)
        {
            TmonConnection conn = (TmonConnection)msg.sourceClientObject();

            if (conn != null)
            {
                conn.ReceiverEvent(msg);
            }

            switch (msg.type())
            {
            case LBM.MSG_DATA:
                MyLog("app_rcv_callback: LBM_MSG_DATA: "
                      + (long)msg.length() + " bytes on topic " + msg.topicName() + ":"
                      + msg.dataString());

                _messagesReceived++;
                break;

            case LBM.MSG_BOS:
                MyLog("app_rcv_callback: LBM_MSG_BOS: ["
                      + msg.topicName() + "][" + msg.source() + "]");
                break;

            case LBM.MSG_EOS:
                MyLog("app_rcv_callback: LBM_MSG_EOS: ["
                      + msg.topicName() + "][" + msg.source() + "]");
                _messagesReceived++;
                break;

            case LBM.MSG_UNRECOVERABLE_LOSS:
                MyLog("app_rcv_callback: LBM_MSG_UNRECOVERABLE_LOSS: ["
                      + msg.topicName() + "][" + msg.source() + "]");
                _messagesReceived++;
                break;

            case LBM.MSG_UNRECOVERABLE_LOSS_BURST:
                MyLog("app_rcv_callback: LBM_MSG_UNRECOVERABLE_LOSS_BURST: ["
                      + msg.topicName() + "][" + msg.source() + "]");
                _messagesReceived++;
                break;

            default: // Unexpected receiver event.
                MyLog("app_rcv_callback: default: ["
                      + msg.topicName() + "][" + msg.source() + "], type=" + msg.type());
                break;
            } // switch

            return(0);
        } // OnReceive
Example #13
0
        } // Init

        private void ReceiverBos(LBMMessage msg)
        {
            _timeOfDay.NewTimeStamp();

            _reportBuffer.Clear();
            _reportBuffer.Append('B'); _reportBuffer.Append(',');
            _reportBuffer.Append(_parentTmonContext.GetMessageHeader());
            _reportBuffer.Append(','); _reportBuffer.Append(_timeOfDay.GetSec());
            _reportBuffer.Append(','); _reportBuffer.Append(_timeOfDay.GetUsec());
            _reportBuffer.Append(','); _reportBuffer.Append(_objectId);
            _reportBuffer.Append(','); _reportBuffer.Append(msg.topicName().Replace("\\", "\\1").Replace(",", "\\2"));

            _tmonUmSource.send(Encoding.ASCII.GetBytes(_reportBuffer.ToString()), _reportBuffer.Length, 0);
        } // ReceiverBos
Example #14
0
    }     /* main */

    /* Class for receiving messages */
    static int onReceive(Object cbArg, LBMMessage msg)
    {
        switch (msg.type())
        {
        case LBM.MSG_NO_SOURCE_NOTIFICATION:
            System.Console.Out.WriteLine("[" + msg.topicName() + "], no sources found for topic after " + noSourceQueries + " queries");
            noSource++;
            break;

        default:
            System.Console.Out.WriteLine("Other event, type=" + msg.type());
            break;
        }
        return(0);
    }     /* ReceiverCallback */
Example #15
0
        static int onReceiveImmediate(object cbArg, LBMMessage msg)
        {
            string nontopic_str = "Non-Topic Immediate Message";

            switch (msg.type())
            {
            case LBM.MSG_DATA:
                imsg_count++;
                imsg_byte_count += msg.data().Length;
                if (verbose)
                {
                    System.Console.Out.Write("["
                                             + nontopic_str
                                             + "]["
                                             + msg.source()
                                             + "]["
                                             + msg.sequenceNumber()
                                             + "], ");
                    System.Console.Out.WriteLine(msg.data().Length
                                                 + " bytes");
                }
                break;

            case LBM.MSG_REQUEST:
                imsg_count++;
                imsg_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() + " [" + nontopic_str + "][" + msg.source() + "]");
                break;
            }

            System.Console.Out.Flush();
            return(0);
        }
Example #16
0
        static int onReceiveImmediate(object cbArg, LBMMessage msg)
        {
            string nontopic_str = "Non-Topic Immediate Message";

            switch (msg.type())
            {
            case LBM.MSG_DATA:
                imsg_count++;
                imsg_byte_count += msg.data().Length;
                if (verbose)
                {
                    System.Console.Out.Write("["
                                             + nontopic_str
                                             + "]["
                                             + msg.source()
                                             + "]["
                                             + msg.sequenceNumber()
                                             + "], ");
                    System.Console.Out.WriteLine(msg.data().Length
                                                 + " bytes");
                }
                break;

            case LBM.MSG_REQUEST:
                imsg_count++;
                imsg_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() + "] for immediate_msg 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();
            return(0);
        }
        private int onResponse(object cbArg, LBMRequest req, LBMMessage msg)
        {
            switch (msg.type())
            {
            case LBM.MSG_RESPONSE:
                Console.Out.WriteLine("LBM.MSG_RESPONSE [" + msg.source() + "][" + msg.sequenceNumber() + "], " + msg.data().Length + " bytes");

                break;

            default:
                Console.Out.WriteLine("Unknown message type " + msg.type() + "[" + msg.source() + "]");
                break;
            }
            msg.dispose();
            Console.Out.Flush();
            return(0);
        }
Example #18
0
        private void dump(LBMMessage msg)
        {
            int i, j;

            byte[] data = msg.data();
            int    size = msg.data().Length;

            StringBuilder sb;
            int           b;
            ASCIIEncoding encoding = new ASCIIEncoding();

            sb = new StringBuilder();
            for (i = 0; i < (size >> 4); i++)
            {
                for (j = 0; j < 16; j++)
                {
                    b = data[(i << 4) + j] & 0xff;
                    sb.Append(b.ToString("X2"));
                    sb.Append(" ");
                }
                sb.Append("\t");
                sb.Append(encoding.GetString(data, i << 4, 16));
                Console.Out.WriteLine(sb.ToString());
            }
            j = size % 16;
            if (j > 0)
            {
                sb = new StringBuilder();
                for (i = 0; i < j; i++)
                {
                    b = data[size - j + i] & 0xff;
                    sb.Append(b.ToString("X2"));
                    sb.Append(" ");
                }
                for (i = j; i < 16; i++)
                {
                    sb.Append("   ");
                }
                sb.Append("\t");
                sb.Append(encoding.GetString(data, size - j, j));
                Console.Out.WriteLine(sb.ToString());
            }
            Console.Out.Flush();
        }
Example #19
0
        private int LBMReceiverCallback(object cbArg, LBMMessage lbmMsg)
        {
            /* There are several different events that can cause the
             *  receiver callbackto be called.  Decode the event that
             * caused this.  */
            switch (lbmMsg.type())
            {
            case LBM.MSG_DATA:

                /* NOTE:  Normally it would be a bad idea to do
                 * something as slow as a print statement in the
                 * callback function itself.  In this example, we'll
                 * probably only receive one message, so it doesn't
                 * matter.
                 */
                System.Console.WriteLine("Received " + lbmMsg.length() + " bytes on topic " + lbmMsg.topicName() + ": '" + Encoding.UTF8.GetString(lbmMsg.data()) + "'");

                Thread.Sleep(10000);
                break;

            case LBM.MSG_BOS:
                System.Console.WriteLine("[" + lbmMsg.topicName() + "][" + lbmMsg.source() + "], Beginning of Transport Session");
                break;

            case LBM.MSG_EOS:
                System.Console.WriteLine("[" + lbmMsg.topicName() + "][" + lbmMsg.source() + "], End of Transport Session");
                break;

            default:
                System.Console.WriteLine("unexpected event: " + lbmMsg.type());
                System.Environment.Exit(1);
                break;
            }
            lbmMsg.dispose();

            /*
             * Return 0 if there were no errors. Returning a non-zero value will
             * cause LBM to log a generic error message.
             */
            return(0);
        }
Example #20
0
    /* Class for receiving messages */
    static int onReceive(Object cbArg, LBMMessage msg)
    {
        switch (msg.type())
                {
                        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;
                        default:
                                System.Console.Out.WriteLine("Other event, type=" + msg.type());
                                break;
                }

                return 0;
    }
Example #21
0
 static int onReceive(Object cbArg, LBMMessage msg)
 {
     switch (msg.type())
     {
         case LBM.MSG_DATA:
             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 #22
0
 /* Class for receiving messages */
 static int onReceive(Object cbArg, LBMMessage msg)
 {
     switch (msg.type())
             {
                     case LBM.MSG_DATA:
                             lastSqn = msg.sequenceNumber();
                             break;
                     case LBM.MSG_UNRECOVERABLE_LOSS:
                             lastSqn = msg.sequenceNumber();
                             break;
                     case LBM.MSG_UNRECOVERABLE_LOSS_BURST:
                             long burst = lastSqn - msg.sequenceNumber();
                             System.Console.Out.WriteLine("WARNING: Burst loss of " + burst + " messages!");
                             lastSqn = msg.sequenceNumber();
                             break;
                     default:
                             System.Console.Out.WriteLine("Other event, type=" + msg.type());
                             break;
             }
             return 0;
 }
Example #23
0
    }  /* main */

    /* Class for receiving messages */
    static protected int onReceive(object cbArg, LBMMessage msg)
    {
        switch (msg.type())
        {
        case LBM.MSG_REQUEST:
        {
            System.Console.Out.Write("Request Received");
            try
            {
                String msgData = "response";
                byte[] bytes   = new byte[msgData.Length * sizeof(char)];
                System.Buffer.BlockCopy(msgData.ToCharArray(), 0, bytes, 0, bytes.Length);
                msg.respond(bytes, msgData.Length, LBM.SRC_NONBLOCK);
            }
            catch (LBMException ex)
            {
                System.Console.Out.Write("Error responding to request: " + ex.Message);
            }
        }
        break;
        }
        return(0);
    }/* ReceiverCallback */
Example #24
0
    }     /* main */

    /* Class for receiving messages */
    static int onReceive(Object cbArg, LBMMessage msg)
    {
        switch (msg.type())
        {
        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;

        default:
            System.Console.Out.WriteLine("Other event, type=" + msg.type());
            break;
        }

        return(0);
    }
Example #25
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 #26
0
    static int onReceive(Object cbArg, LBMMessage msg)
    {
        switch (msg.type())
        {
        case LBM.MSG_DATA:
            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 #27
0
    }     /* main */

    /* Class for receiving messages */
    static int onReceive(Object cbArg, LBMMessage msg)
    {
        switch (msg.type())
        {
        case LBM.MSG_DATA:
            lastSqn = msg.sequenceNumber();
            break;

        case LBM.MSG_UNRECOVERABLE_LOSS:
            lastSqn = msg.sequenceNumber();
            break;

        case LBM.MSG_UNRECOVERABLE_LOSS_BURST:
            long burst = lastSqn - msg.sequenceNumber();
            System.Console.Out.WriteLine("WARNING: Burst loss of " + burst + " messages!");
            lastSqn = msg.sequenceNumber();
            break;

        default:
            System.Console.Out.WriteLine("Other event, type=" + msg.type());
            break;
        }
        return(0);
    }     /* ReceiverCallback */
Example #28
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 #29
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 #30
0
 // This immediate-mode receiver is *only* used for topicless
 // immediate-mode sends.  Immediate sends that use a topic
 // are received with normal receiver objects.
 public int onReceiveImmediate(object cbArg, LBMMessage msg)
 {
     imsg_count++;
     return(onReceive(cbArg, msg));
 }
Example #31
0
 /* Class for receiving messages */
 protected static int onReceive(object cbArg, LBMMessage msg)
 {
     switch (msg.type())
     {
         case LBM.MSG_REQUEST:
             {
                 System.Console.Out.Write("Request Received");
                 try
                 {
                     String msgData = "response";
                     byte[] bytes = new byte[msgData.Length * sizeof(char)];
                     System.Buffer.BlockCopy(msgData.ToCharArray(), 0, bytes, 0, bytes.Length);
                     msg.respond(bytes, msgData.Length, LBM.SRC_NONBLOCK);
                 }
                 catch (LBMException ex)
                 {
                     System.Console.Out.Write("Error responding to request: " + ex.Message);
                 }
             }
             break;
     }
     return 0;
 }
Example #32
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);
        }
Example #33
0
            protected int onReceive(object cbArg, LBMMessage msg)
            {
                switch (msg.type())
                {
                case LBM.MSG_DATA:
                    try
                    {
                        if (++bounce_count < NUM_ROUNDTRIPS_PER_MSG)
                        {
                            // Bounce the message -- no need to size check
                            IntPtr messagePtr = msg.dataPointerSafe();
#if RunUnsafeMode
                            dqwordBlockCopy(bufferAcquired.ToPointer(), messagePtr.ToPointer(), (int)msg.length());
#else
                            memcpy(bufferAcquired, messagePtr, (int)msg.length());
#endif
                            source.buffsCompleteAndAcquire(out bufferAcquired, (uint)buffer.Length, 0);
                        }
                        else
                        {
                            tsend[rcvd_msgs] = getTicks();

                            bounce_count = 0;
                            if (rcvd_msgs > lbmlatping.NUM_MSGS)
                            {       // still doing statistics report (throw away the extraneous message)
                                break;
                            }
                            if (latping.usBusyWaitPause > 0)
                            {
                                // Busy wait for at least requested microseconds.
                                long tstarget = tsend[rcvd_msgs] + nanosToTicks(latping.usBusyWaitPause * 1000);
                                while (tstarget > getTicks())
                                {
                                    ;
                                }
                            }

                            tsstart[rcvd_msgs + 1] = getTicks();
#if RunUnsafeMode
                            fixed(void *buff = buffer)
                            {
                                dqwordBlockCopy(bufferAcquired.ToPointer(), buff, buffer.Length);
                            }
#else
                            memcpy(bufferAcquired, bufferptr, (int)buffer.Length);
#endif
                            source.buffsCompleteAndAcquire(out bufferAcquired, (uint)buffer.Length, 0);

                            if (rcvd_msgs++ == lbmlatping.NUM_MSGS)
                            {
                                int      i;
                                double   min = Double.MaxValue, max = 0;
                                int      max_idx    = -1;
                                double[] elapsed_ts = new double[lbmlatping.NUM_MSGS - lbmlatping.NUM_MSGS_IGNORED];

                                System.Console.Out.WriteLine("Successfully sent & received " + lbmlatping.NUM_MSGS + " total "
                                                             + buffer.Length + "-byte messages, ignoring the first "
                                                             + lbmlatping.NUM_MSGS_IGNORED + " messages.");
                                System.Console.Out.WriteLine("Round-trip times in nanoseconds.");

                                for (i = lbmlatping.NUM_MSGS_IGNORED; i < lbmlatping.NUM_MSGS; i++)
                                {
                                    elapsed_ts[i - lbmlatping.NUM_MSGS_IGNORED] =
                                        ((double)ticksToNanos(tsend[i] - tsstart[i])) / NUM_ROUNDTRIPS_PER_MSG;
                                    if (elapsed_ts[i - lbmlatping.NUM_MSGS_IGNORED] < min)
                                    {
                                        min = elapsed_ts[i - lbmlatping.NUM_MSGS_IGNORED];
                                    }
                                    else if (elapsed_ts[i - lbmlatping.NUM_MSGS_IGNORED] > max)
                                    {
                                        max     = elapsed_ts[i - lbmlatping.NUM_MSGS_IGNORED];
                                        max_idx = i - lbmlatping.NUM_MSGS_IGNORED;
                                    }
                                }
                                /* Now calculate some summary statistics. */
                                lbmStatistics stats = new lbmStatistics();
                                Array.Sort(elapsed_ts);
                                stats.calcSummaryStats(elapsed_ts);

                                string output = String.Format("Min: {0:0.00}, Max {1:0.00}", min, max);
                                System.Console.Out.WriteLine(output);

                                output = String.Format("Mean: {0:0.00}, Median: {1:0.00}, Standard Dev: {2:0.00}",
                                                       stats.mean, stats.data[stats.data.Length / 2], stats.sample_sd);
                                System.Console.Out.WriteLine(output);

                                output = String.Format("99.9%: {0:#.00}, 99%: {1:0.00}, 95%: {2:0.00}, 90%: {3:0.00}, 80%: {4:0.00}",
                                                       stats.data[(stats.data.Length * 999) / 1000],
                                                       stats.data[(stats.data.Length * 99) / 100],
                                                       stats.data[(stats.data.Length * 95) / 100],
                                                       stats.data[(stats.data.Length * 9) / 10],
                                                       stats.data[(stats.data.Length * 8) / 10]);
                                System.Console.Out.WriteLine(output);

                                /* We're done. */
                                Environment.Exit(0);
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        System.Console.Out.WriteLine(e.ToString());
                    }
                    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");
                    break;

                case LBM.MSG_UNRECOVERABLE_LOSS:
                    System.Console.Error.WriteLine("[" + msg.topicName() + "][" + msg.source() + "]["
                                                   + msg.sequenceNumber() + "], LOST");
                    /* Any kind of loss makes this test invalid */
                    System.Console.WriteLine("Unrecoverable loss occurred.  Quitting...");
                    System.Environment.Exit(1);
                    break;

                case LBM.MSG_UNRECOVERABLE_LOSS_BURST:
                    System.Console.Error.WriteLine("[" + msg.topicName() + "][" + msg.source() + "], LOST BURST");
                    /* Any kind of loss makes this test invalid */
                    System.Console.WriteLine("Unrecoverable loss occurred.  Quitting...");
                    System.Environment.Exit(1);
                    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();
                return(0);
            }
Example #34
0
        protected int onReceive(object cbArg, LBMMessage msg)
        {
            bool promoted = false;

            switch (msg.type())
            {
            case LBM.MSG_DATA:
                if (_verbose > 0)
                {
                    System.Console.Out.Write("["
                                             + msg.topicName()
                                             + "]["
                                             + msg.source()
                                             + "]["
                                             + msg.sequenceNumber()
                                             + "], ");
                    System.Console.Out.WriteLine(msg.data().Length
                                                 + " bytes");
                    if (_verbose > 1)
                    {
                        dump(msg);
                    }
                }
                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();
                }
                break;

            case LBM.MSG_UNRECOVERABLE_LOSS:
                if (_verbose > 0)
                {
                    System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "],");
                    System.Console.Out.WriteLine(" LOST");
                }
                break;

            case LBM.MSG_UNRECOVERABLE_LOSS_BURST:
                if (_verbose > 0)
                {
                    System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "],");
                    System.Console.Out.WriteLine(" LOST BURST");
                }
                break;

            case LBM.MSG_REQUEST:
                request_count++;
                bool skipped = request != null;
                if (_verbose > 0)
                {
                    System.Console.Out.Write("Request ["
                                             + msg.topicName()
                                             + "]["
                                             + msg.source()
                                             + "]["
                                             + msg.sequenceNumber()
                                             + "], ");
                    System.Console.Out.WriteLine(msg.data().Length
                                                 + " bytes"
                                                 + (skipped ? " (ignored)" : ""));
                    if (_verbose > 1)
                    {
                        dump(msg);
                    }
                }
                if (!skipped)
                {
                    request  = msg;
                    promoted = true;
                }
                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;
            }
            if (!promoted)
            {
                msg.dispose();
            }
            System.Console.Out.Flush();
            return(0);
        }
Example #35
0
 /* Class for receiving messages */
 static int onReceive(Object cbArg, LBMMessage msg)
 {
     switch (msg.type())
             {
                     case LBM.MSG_DATA:
                             System.Console.Out.WriteLine("LBM_MSG_DATA received");
                             cleanup = 1;
                             break;
             }
             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 #37
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 #38
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 #39
0
        protected int onReceive(object cbArg, LBMMessage msg)
        {
            bool promoted = false;

            switch (msg.type())
            {
            case LBM.MSG_DATA:
                if (_verbose > 0)
                {
                    System.Console.Out.Write("["
                                             + msg.topicName()
                                             + "]["
                                             + msg.source()
                                             + "]["
                                             + msg.sequenceNumber()
                                             + "], ");
                    System.Console.Out.WriteLine(msg.data().Length
                                                 + " bytes");
                    if (_verbose > 1)
                    {
                        dump(msg);
                    }
                }
                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();
                }
                break;

            case LBM.MSG_UNRECOVERABLE_LOSS:
                if (_verbose > 0)
                {
                    System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "],");
                    System.Console.Out.WriteLine(" LOST");
                }
                break;

            case LBM.MSG_UNRECOVERABLE_LOSS_BURST:
                if (_verbose > 0)
                {
                    System.Console.Out.Write("[" + msg.topicName() + "][" + msg.source() + "][" + msg.sequenceNumber() + "],");
                    System.Console.Out.WriteLine(" LOST BURST");
                }
                break;

            case LBM.MSG_REQUEST:
                request_count++;
                bool skipped = request != null;
                if (_verbose > 0)
                {
                    System.Console.Out.Write("Request ["
                                             + msg.topicName()
                                             + "]["
                                             + msg.source()
                                             + "]["
                                             + msg.sequenceNumber()
                                             + "], ");
                    System.Console.Out.WriteLine(msg.data().Length
                                                 + " bytes"
                                                 + (skipped ? " (ignored)" : ""));
                    if (_verbose > 1)
                    {
                        dump(msg);
                    }
                }
                if (!skipped)
                {
                    request  = msg;
                    promoted = true;
                }
                break;

            default:
                System.Console.Out.WriteLine("Unknown lbm_msg_t type " + msg.type() + " [" + msg.topicName() + "][" + msg.source() + "]");
                break;
            }
            if (!promoted)
            {
                msg.dispose();
            }
            System.Console.Out.Flush();
            return(0);
        }