コード例 #1
0
ファイル: RedisGroup.cs プロジェクト: yevhen/MagicOnion
        static Task PublishFromRedisToMemoryGroup(RedisValue value, IGroup group)
        {
            byte[] buffer = value;
            var    reader = new MessagePackReader(buffer);

            var len1 = reader.ReadArrayHeader();

            if (len1 == 3)
            {
                var isExcept = reader.ReadBoolean();
                if (isExcept)
                {
                    var excludes = NativeGuidArrayFormatter.Deserialize(ref reader);
                    var offset   = (int)reader.Consumed;
                    return(group.WriteExceptRawAsync(new ArraySegment <byte>(buffer, offset, buffer.Length - offset), excludes, fireAndForget: false));
                }
                else
                {
                    var includes = NativeGuidArrayFormatter.Deserialize(ref reader);
                    var offset   = (int)reader.Consumed;
                    return(group.WriteToRawAsync(new ArraySegment <byte>(buffer, offset, buffer.Length - offset), includes, fireAndForget: false));
                }
            }

            return(Task.CompletedTask);
        }
コード例 #2
0
ファイル: RedisGroup.cs プロジェクト: zuoann301/MagicOnion
        static Task PublishFromRedisToMemoryGroup(RedisValue value, IGroup group)
        {
            byte[] buffer = value;
            var    offset = 0;
            int    readSize;
            var    len1 = MessagePackBinary.ReadArrayHeader(buffer, offset, out readSize);

            offset += readSize;
            if (len1 == 2)
            {
                var excludes = NativeGuidArrayFormatter.Deserialize(buffer, offset, out readSize);
                offset += readSize;

                return(group.WriteRawAsync(new ArraySegment <byte>(buffer, offset, buffer.Length - offset), excludes, fireAndForget: false));
            }

            return(Task.CompletedTask);
        }