Esempio n. 1
0
 protected override void PopulateMethodBodyFromBuffer(ByteBuffer buffer)
 {
     Queue = EncodingUtils.ReadShortString(buffer);
     MessageCount = buffer.GetUInt32();
     ConsumerCount = buffer.GetUInt32();
     		 
 }
Esempio n. 2
0
 protected override void PopulateMethodBodyFromBuffer(ByteBuffer buffer)
 {
     PrefetchSize = buffer.GetUInt32();
     PrefetchCount = buffer.GetUInt16();
     ConsumeRate = buffer.GetUInt32();
     bool[] bools = EncodingUtils.ReadBooleans(buffer);Global = bools[0];
     		 
 }
Esempio n. 3
0
 protected override void PopulateMethodBodyFromBuffer(ByteBuffer buffer)
 {
     ChannelMax = buffer.GetUInt16();
     FrameMax = buffer.GetUInt32();
     Heartbeat = buffer.GetUInt16();
     		 
 }
        public MessageDecoderResult Decodable(ByteBuffer input)
        {
            if (_disabled)
            {
                return MessageDecoderResult.NOT_OK;
            }
            // final +1 represents the command end which we know we must require even
            // if there is an empty body
            if (input.Remaining < 1)
            {
                return MessageDecoderResult.NEED_DATA;
            }
            byte type = input.GetByte();

            // we have to check this isn't a protocol initiation frame here - we can't tell later on and we end up
            // waiting for more data. This could be improved if MINA supported some kind of state awareness when decoding
            if ((char)type == 'A')
            {
                _logger.Error("Received what appears to be a protocol initiation frame");
                return MessageDecoderResult.NOT_OK;
            }
            // zero, channel, body size and end byte
            if (input.Remaining < (1 + 2 + 4 + 1))
            {
                return MessageDecoderResult.NEED_DATA;
            }

            int channel = input.GetUInt16();
            long bodySize = input.GetUInt32();            

            // bodySize can be zero
            if (type <= 0 || channel < 0 || bodySize < 0)
            {
                _logger.Error(String.Format("Error decoding frame: Type={0}, Channel={1}, BodySize={2}", type, channel, bodySize));                
                return MessageDecoderResult.NOT_OK;
            }

            if (input.Remaining < (bodySize + 1))
            {
                return MessageDecoderResult.NEED_DATA;
            }

            if (IsSupportedFrameType(type))
            {
                if (_logger.IsDebugEnabled)
                {
                    // we have read 7 bytes so far, so output 7 + bodysize + 1 (for end byte) to get complete data block size
                    // this logging statement is useful when looking at exactly what size of data is coming in/out
                    // the broker
                    _logger.Debug("Able to decode data block of size " + (bodySize + 8));
                }
                return MessageDecoderResult.OK;
            }
            else
            {
                return MessageDecoderResult.NOT_OK;
            }
        }
Esempio n. 5
0
 protected override void PopulateMethodBodyFromBuffer(ByteBuffer buffer)
 {
     Integer1 = buffer.GetByte();
     Integer2 = buffer.GetUInt16();
     Integer3 = buffer.GetUInt32();
     Integer4 = buffer.GetUInt64();
     Operation = buffer.GetByte();
     		 
 }
Esempio n. 6
0
 protected override void PopulateMethodBodyFromBuffer(ByteBuffer buffer)
 {
     DeliveryTag = buffer.GetUInt64();
     bool[] bools = EncodingUtils.ReadBooleans(buffer);Redelivered = bools[0];
     Exchange = EncodingUtils.ReadShortString(buffer);
     RoutingKey = EncodingUtils.ReadShortString(buffer);
     MessageCount = buffer.GetUInt32();
     		 
 }
Esempio n. 7
0
 public static uint ReadUnsignedInteger(ByteBuffer buffer)
 {
    return buffer.GetUInt32();
 }
Esempio n. 8
0
 /// <summary>
 /// Reads the field table using the data in the specified buffer
 /// </summary>
 /// <param name="buffer">The buffer to read from.</param>
 /// <returns>a populated field table</returns>
 /// <exception cref="AMQFrameDecodingException">if the buffer does not contain a decodable field table</exception>
 public static FieldTable ReadFieldTable(ByteBuffer buffer)
 {
    uint length = buffer.GetUInt32();
    if ( length == 0 )
    {
       return null;
    } else
    {
       return new FieldTable(buffer, length);
    }
 }
Esempio n. 9
0
 public static byte[] ReadLongstr(ByteBuffer buffer)
 {
    uint length = buffer.GetUInt32();
    if ( length == 0 )
    {
       return null;
    } else
    {
       byte[] result = new byte[length];
       buffer.GetBytes(result);
       return result;
    }
 }
Esempio n. 10
0
 public static string ReadLongString(ByteBuffer buffer, Encoding encoding)
 {
    uint length = buffer.GetUInt32();
    if ( length == 0 )
    {
       return null;
    } else
    {
       byte[] data = new byte[length];
       buffer.GetBytes(data);
       lock ( encoding )
       {
          return encoding.GetString(data);
       }
    }
 }
Esempio n. 11
0
 protected override void PopulateMethodBodyFromBuffer(ByteBuffer buffer)
 {
     ContentChecksum = buffer.GetUInt32();
     		 
 }
Esempio n. 12
0
 protected override void PopulateMethodBodyFromBuffer(ByteBuffer buffer)
 {
     MessageCount = buffer.GetUInt32();
     		 
 }
Esempio n. 13
0
        protected Object CreateAndPopulateFrame(ByteBuffer input)
        {
            byte type = input.GetByte();
            ushort channel = input.GetUInt16();
            uint bodySize = input.GetUInt32();

            IBodyFactory bodyFactory = (IBodyFactory)_supportedBodies[type];
            if (bodyFactory == null)
            {
                throw new AMQFrameDecodingException("Unsupported body type: " + type);
            }
            AMQFrame frame = new AMQFrame();

            frame.PopulateFromBuffer(input, channel, bodySize, bodyFactory);

            byte marker = input.GetByte();
            if (marker != 0xCE) {
           		throw new FormatException("marker is not 0xCE"); 	
            }
            return frame;
        }