private bool MultiGroupBroadcastDataMessagesEqual(MultiGroupBroadcastDataMessage x,
                                                   MultiGroupBroadcastDataMessage y)
 {
     return(SequenceEqual(x.GroupList, y.GroupList) &&
            PayloadsEqual(x.Payloads, y.Payloads) &&
            x.TracingId == y.TracingId);
 }
Пример #2
0
            public static void StartToBroadcastMessageToGroups(ILogger logger, MultiGroupBroadcastDataMessage message)
            {
                if (!Enabled())
                {
                    return;
                }
                var groups = string.Join(", ", message.GroupList);

                _startToBroadcastMessageToGroups(logger, message.TracingId, message.GroupList.Count, groups, null);
            }
Пример #3
0
        public override Task SendGroupsAsync(IReadOnlyList <string> groupNames, string methodName, object[] args, CancellationToken cancellationToken = default)
        {
            if (IsInvalidArgument(groupNames))
            {
                throw new ArgumentException(NullOrEmptyStringErrorMessage, nameof(groupNames));
            }

            if (IsInvalidArgument(methodName))
            {
                throw new ArgumentException(NullOrEmptyStringErrorMessage, nameof(methodName));
            }

            var message = new MultiGroupBroadcastDataMessage(groupNames, SerializeAllProtocols(methodName, args)).WithTracingId();

            Log.StartToBroadcastMessageToGroups(Logger, message);
            // Send this message from a random service connection because this message involves of multiple groups.
            // Unless we send message for each group one by one, we can not guarantee the message order for all groups.
            return(WriteAsync(message));
        }