next() { message_wrapper rv = null; amqp_msg = (BasicDeliverEventArgs)consumer.Queue.Dequeue(); if (amqp_msg.Body.Length != 0) { MemoryStream stream = new MemoryStream(amqp_msg.Body); var proto = new TCompactProtocol(new TStreamTransport(stream, stream)); int delta_stream_id = (int)proto.ReadI32(); bool read_in_delta_mode; if (delta_stream_id < 0) { read_in_delta_mode = false; delta_stream_id = -delta_stream_id; } else { read_in_delta_mode = true; } uint type_id = (uint)proto.ReadI32(); Dictionary <uint, Dictionary <int, message_wrapper> > old_subject = null; if (!previous_messages.TryGetValue(amqp_msg.RoutingKey, out old_subject)) { var deltas = new Dictionary <int, message_wrapper>(); deltas[delta_stream_id] = new message_wrapper(message_factory.from_type_id(type_id)); old_subject = new Dictionary <uint, Dictionary <int, message_wrapper> >(); old_subject[type_id] = deltas; previous_messages[amqp_msg.RoutingKey] = old_subject; } Dictionary <int, message_wrapper> old_type_id = null; if (!old_subject.TryGetValue(type_id, out old_type_id)) { var deltas = new Dictionary <int, message_wrapper>(); deltas[delta_stream_id] = new message_wrapper(message_factory.from_type_id(type_id)); old_subject[type_id] = deltas; } if (!old_type_id.TryGetValue(delta_stream_id, out rv)) { old_type_id[delta_stream_id] = rv = new message_wrapper(message_factory.from_type_id(type_id)); } rv.msg.read_in_delta_mode = read_in_delta_mode; if (rv.non_delta_seen == false && read_in_delta_mode == false) { rv.non_delta_seen = true; } rv.msg.Read(proto); } return(rv); }
next() { message_wrapper rv = null; amqp_msg = (BasicDeliverEventArgs)consumer.Queue.Dequeue(); if (amqp_msg.Body.Length != 0) { MemoryStream stream = new MemoryStream(amqp_msg.Body); var bytes = new byte[4]; stream.Read(bytes, 0, 4); if (BitConverter.IsLittleEndian) { Array.Reverse(bytes); } uint type_id = (uint)BitConverter.ToInt32(bytes, 0); var tmp = message_factory.from_type_id(type_id); var xmlSerializer = new XmlSerializer(tmp.GetType()); rv = new message_wrapper((message_base)xmlSerializer.Deserialize(stream)); } return(rv); }