Ejemplo n.º 1
0
        public void subscribe(SDKClient.IReceiver messageListener)
        {
            TLQMSG_INFO tLQMSG_INFO = default(TLQMSG_INFO);
            TLQMSG_OPT  tLQMSG_OPT  = default(TLQMSG_OPT);

            TLQInterface.Tlq_InitMsgInfo(ref tLQMSG_INFO);
            TLQInterface.Tlq_InitMsgOpt(ref tLQMSG_OPT);
            tLQMSG_INFO.Persistence = 1;
            tLQMSG_INFO.Priority    = 5;
            tLQMSG_INFO.Expiry      = -1;
            tLQMSG_INFO.MsgSize     = 10;
            tLQMSG_OPT.OperateType  = 5;
            tLQMSG_OPT.PubSubScope  = 3;
            tLQMSG_OPT.Topic        = this.topicName;
            tLQMSG_OPT.QueName      = this.rcvQueName;
            bool flag = this.cancelsubFlag == 0;

            if (flag)
            {
                int  num   = TLQInterface.Tlq_PutMsg(ref this.gid, ref this.qcuId, ref tLQMSG_INFO, ref tLQMSG_OPT, (IntPtr)0, null, ref this.errstru);
                bool flag2 = num < 0;
                if (flag2)
                {
                    throw new Exception("Sub topic faild.Error:" + this.errstru.errstr);
                }
                this.CorrMsgId = tLQMSG_INFO.MsgId;
                this.receiveData(messageListener);
            }
            else
            {
                this.receiveData(messageListener);
            }
        }
Ejemplo n.º 2
0
        private void receiveData(SDKClient.IReceiver messageListener)
        {
            int         num         = 0;
            TLQError    tLQError    = default(TLQError);
            TLQMSG_INFO tLQMSG_INFO = default(TLQMSG_INFO);
            TLQMSG_OPT  tLQMSG_OPT  = default(TLQMSG_OPT);

            while (true)
            {
                byte[] bytes = null;
                TLQInterface.Tlq_InitMsgInfo(ref tLQMSG_INFO);
                TLQInterface.Tlq_InitMsgOpt(ref tLQMSG_OPT);
                tLQMSG_INFO.Persistence = 1;
                tLQMSG_OPT.QueName      = this.rcvQueName;
                tLQMSG_OPT.AckMode      = 1;
                tLQMSG_OPT.WaitInterval = this.pWaitInterval;
                while (true)
                {
                    this.ret = TLQInterface.Tlq_GetMsg(ref this.gid, ref this.qcuId, ref tLQMSG_INFO, ref tLQMSG_OPT, ref bytes, ref tLQError);
                    bool flag = this.ret < 0;
                    if (!flag)
                    {
                        goto IL_FA;
                    }
                    num++;
                    bool flag2 = num > 3;
                    if (flag2)
                    {
                        goto Block_2;
                    }
                    this.ret = this.GetProcByTLQError(ref tLQError);
                    bool flag3 = this.ret == 1;
                    if (flag3)
                    {
                        this.ret = this.ReConnectToTLQ();
                    }
                    else
                    {
                        bool flag4 = this.ret == 2;
                        if (!flag4)
                        {
                            break;
                        }
                    }
                }
                continue;
IL_FA:
                string @string = encoding.GetString(bytes);
                messageListener.receiveData(@string);
            }
Block_2:
            throw new Exception("Receive message faild.Error:" + tLQError.errstr);
        }