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); } }
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; }
public void Get(MQMessage message, MQGetMessageOptions gmo) => _subQueue.Get(message, gmo);