コード例 #1
0
ファイル: MQQueue.cs プロジェクト: halfsilvered/TestCodes
        public void PutReportMessage(MQMessage message, MQPutMessageOptions putMessageOptions)
        {
            uint method = 0x22d;

            this.TrEntry(method, new object[] { message, putMessageOptions });
            int compCode = 0;
            int reason   = 0;

            try
            {
                if (message == null)
                {
                    base.throwNewMQException(2, 0x7ea);
                }
                if (putMessageOptions == null)
                {
                    base.throwNewMQException(2, 0x87d);
                }
                MQMessage newMsg = new MQMessage();
                if ((putMessageOptions.Options & 0x800000) != 0)
                {
                    newMsg = this.CopyMDFromOldMsgIntoReportMsg(message, newMsg, putMessageOptions.Options);
                    putMessageOptions.Options &= -8388609;
                }
                IEnumerator          propertyNames = message.GetPropertyNames("%");
                MQPropertyDescriptor pd            = new MQPropertyDescriptor();
                while (propertyNames.MoveNext())
                {
                    string name           = propertyNames.Current.ToString();
                    object objectProperty = message.GetObjectProperty(name, pd);
                    if (this.ValidToCopy(pd.CopyOptions, 0x10))
                    {
                        newMsg.SetObjectProperty(name, pd, objectProperty);
                    }
                }
                base.Put(newMsg, putMessageOptions);
            }
            catch (MQException exception)
            {
                compCode = exception.CompCode;
                reason   = exception.Reason;
                throw exception;
            }
            finally
            {
                base.unsafe_compCode = compCode;
                base.unsafe_reason   = reason;
                base.TrExit(method);
            }
        }