Esempio n. 1
0
        public void Get(MQMessage message, MQGetMessageOptions gmo)
        {
            int dataLength, compCode, reason;

            if (message == null)
            {
                throw new MQException(MQC.MQCC_FAILED, MQC.MQRC_MD_ERROR);
            }
            if (gmo == null)
            {
                throw new MQException(MQC.MQCC_FAILED, MQC.MQRC_GMO_ERROR);
            }
            message.ClearMessage();
            var maxMsgSize  = defaultMaxMsgSize;
            var structMQMD  = message.md.StructMQMD;
            var structMQGMO = gmo.StructMQGMO;
            var buffer      = new byte[maxMsgSize];

            Bindings.MQGET(qMgr.Handle, objectHandle, ref structMQMD, ref structMQGMO, maxMsgSize, buffer, out dataLength, out compCode, out reason);
            while (compCode != MQC.MQCC_OK && reason == MQC.MQRC_TRUNCATED_MSG_FAILED)
            {
                maxMsgSize = dataLength;
                buffer     = new byte[maxMsgSize];
                Bindings.MQGET(qMgr.Handle, objectHandle, ref structMQMD, ref structMQGMO, maxMsgSize, buffer, out dataLength, out compCode, out reason);
            }
            if (compCode != MQC.MQCC_OK)
            {
                throw new MQException(compCode, reason);
            }
            if (dataLength > 0)
            {
                message.Write(buffer, 0, (dataLength < maxMsgSize) ? dataLength : maxMsgSize);
                message.Seek(0);
            }
        }
Esempio n. 2
0
 public MQGetMessageOptions(MQGetMessageOptions mqgmo)
 {
     this.mqGMO.StrucId       = (byte[])mqgmo.mqGMO.StrucId.Clone();
     this.mqGMO.Version       = mqgmo.mqGMO.Version;
     this.mqGMO.Options       = mqgmo.mqGMO.Options;
     this.mqGMO.WaitInterval  = mqgmo.mqGMO.WaitInterval;
     this.mqGMO.Signal1       = mqgmo.mqGMO.Signal1;
     this.mqGMO.Signal2       = mqgmo.mqGMO.Signal2;
     this.mqGMO.ResolvedQName = new byte[48];
     Buffer.BlockCopy(mqgmo.mqGMO.ResolvedQName, 0, this.mqGMO.ResolvedQName, 0, mqgmo.mqGMO.ResolvedQName.Length);
     this.mqGMO.MatchOptions  = mqgmo.mqGMO.MatchOptions;
     this.mqGMO.GroupStatus   = mqgmo.mqGMO.GroupStatus;
     this.mqGMO.SegmentStatus = mqgmo.mqGMO.SegmentStatus;
     this.mqGMO.Segmentation  = mqgmo.mqGMO.Segmentation;
     this.mqGMO.Reserved1     = mqgmo.mqGMO.Reserved1;
     this.mqGMO.MsgToken      = new byte[16];
     Buffer.BlockCopy(mqgmo.mqGMO.MsgToken, 0, this.mqGMO.MsgToken, 0, mqgmo.mqGMO.MsgToken.Length);
     this.mqGMO.ReturnedLength = mqgmo.mqGMO.ReturnedLength;
 }
Esempio n. 3
0
 public void Get(MQMessage message, MQGetMessageOptions gmo) => _subQueue.Get(message, gmo);