def decode(msg): msg.next_frame() initial_frame = msg.next_frame() cost = FixSizedTypesCodec.decode_long(initial_frame.buf, _COST_DECODE_OFFSET) creation_time = FixSizedTypesCodec.decode_long( initial_frame.buf, _CREATION_TIME_DECODE_OFFSET) expiration_time = FixSizedTypesCodec.decode_long( initial_frame.buf, _EXPIRATION_TIME_DECODE_OFFSET) hits = FixSizedTypesCodec.decode_long(initial_frame.buf, _HITS_DECODE_OFFSET) last_access_time = FixSizedTypesCodec.decode_long( initial_frame.buf, _LAST_ACCESS_TIME_DECODE_OFFSET) last_stored_time = FixSizedTypesCodec.decode_long( initial_frame.buf, _LAST_STORED_TIME_DECODE_OFFSET) last_update_time = FixSizedTypesCodec.decode_long( initial_frame.buf, _LAST_UPDATE_TIME_DECODE_OFFSET) version = FixSizedTypesCodec.decode_long(initial_frame.buf, _VERSION_DECODE_OFFSET) ttl = FixSizedTypesCodec.decode_long(initial_frame.buf, _TTL_DECODE_OFFSET) max_idle = FixSizedTypesCodec.decode_long(initial_frame.buf, _MAX_IDLE_DECODE_OFFSET) key = DataCodec.decode(msg) value = DataCodec.decode(msg) CodecUtil.fast_forward_to_end_frame(msg) return SimpleEntryView(key, value, cost, creation_time, expiration_time, hits, last_access_time, last_stored_time, last_update_time, version, ttl, max_idle)
def handle(msg, handle_topic_event=None): message_type = msg.get_message_type() if message_type == _EVENT_TOPIC_MESSAGE_TYPE and handle_topic_event is not None: initial_frame = msg.next_frame() publish_time = FixSizedTypesCodec.decode_long( initial_frame.buf, _EVENT_TOPIC_PUBLISH_TIME_OFFSET) uuid = FixSizedTypesCodec.decode_uuid(initial_frame.buf, _EVENT_TOPIC_UUID_OFFSET) item = DataCodec.decode(msg) handle_topic_event(item, publish_time, uuid) return
def test_data(self): self.mark_initial_frame_as_non_final() data = Data("123456789".encode("utf-8")) DataCodec.encode(self.buf, data) DataCodec.encode_nullable(self.buf, data) DataCodec.encode_nullable(self.buf, None, True) message = self.write_and_decode() message.next_frame() # initial frame self.assertEqual(data, DataCodec.decode(message)) self.assertEqual(data, DataCodec.decode_nullable(message)) self.assertIsNone(DataCodec.decode_nullable(message))