Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
Exemplo n.º 3
0
            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);
            }