public static ClientMessage EncodePartitionsViewEvent(int version, ICollection <KeyValuePair <Guid, IList <int> > > partitions) { var clientMessage = new ClientMessage(); var initialFrame = new Frame(new byte[EventPartitionsViewInitialFrameSize], (FrameFlags)ClientMessageFlags.Unfragmented); initialFrame.Bytes.WriteIntL(Messaging.FrameFields.Offset.MessageType, EventPartitionsViewMessageType); initialFrame.Bytes.WriteIntL(Messaging.FrameFields.Offset.PartitionId, -1); initialFrame.Bytes.WriteIntL(EventPartitionsViewVersionFieldOffset, version); clientMessage.Append(initialFrame); clientMessage.Flags |= ClientMessageFlags.Event; EntryListUUIDListIntegerCodec.Encode(clientMessage, partitions); return(clientMessage); }
public static ValueTask HandleEventAsync(ClientMessage clientMessage, Func <int, IList <Hazelcast.Models.MemberInfo>, object, ValueTask> handleMembersViewEventAsync, Func <int, IList <KeyValuePair <Guid, IList <int> > >, object, ValueTask> handlePartitionsViewEventAsync, object state, ILoggerFactory loggerFactory) { using var iterator = clientMessage.GetEnumerator(); var messageType = clientMessage.MessageType; if (messageType == EventMembersViewMessageType) { var initialFrame = iterator.Take(); var version = initialFrame.Bytes.ReadIntL(EventMembersViewVersionFieldOffset); var memberInfos = ListMultiFrameCodec.Decode(iterator, MemberInfoCodec.Decode); return(handleMembersViewEventAsync(version, memberInfos, state)); } if (messageType == EventPartitionsViewMessageType) { var initialFrame = iterator.Take(); var version = initialFrame.Bytes.ReadIntL(EventPartitionsViewVersionFieldOffset); var partitions = EntryListUUIDListIntegerCodec.Decode(iterator); return(handlePartitionsViewEventAsync(version, partitions, state)); } loggerFactory.CreateLogger(typeof(EventHandler)).LogDebug("Unknown message type received on event handler :" + messageType); return(default);
public static void HandleEvent(ClientMessage clientMessage, HandleMembersViewEvent handleMembersViewEvent, HandlePartitionsViewEvent handlePartitionsViewEvent) { var messageType = clientMessage.MessageType; var iterator = clientMessage.GetIterator(); if (messageType == EventMembersViewMessageType) { var initialFrame = iterator.Next(); int version = DecodeInt(initialFrame.Content, EventMembersViewVersionFieldOffset); IList <Hazelcast.Core.MemberInfo> memberInfos = ListMultiFrameCodec.Decode(iterator, MemberInfoCodec.Decode); handleMembersViewEvent(version, memberInfos); return; } if (messageType == EventPartitionsViewMessageType) { var initialFrame = iterator.Next(); int version = DecodeInt(initialFrame.Content, EventPartitionsViewVersionFieldOffset); IList <KeyValuePair <Guid, IList <int> > > partitions = EntryListUUIDListIntegerCodec.Decode(iterator); handlePartitionsViewEvent(version, partitions); return; } Logger.GetLogger(typeof(EventHandler)).Finest("Unknown message type received on event handler :" + messageType); }