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); } }
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); }