コード例 #1
0
ファイル: SystemSettings.cs プロジェクト: zerox981/EventStore
        public static SystemSettings FromJsonBytes(ReadOnlyMemory <byte> json)
        {
            using (var reader = new JsonTextReader(new StreamReader(new MemoryStream(json.ToArray())))) {
                Check(reader.Read(), reader);
                Check(JsonToken.StartObject, reader);

                StreamAcl userStreamAcl   = null;
                StreamAcl systemStreamAcl = null;

                while (true)
                {
                    Check(reader.Read(), reader);
                    if (reader.TokenType == JsonToken.EndObject)
                    {
                        break;
                    }
                    Check(JsonToken.PropertyName, reader);
                    var name = (string)reader.Value;
                    switch (name)
                    {
                    case SystemMetadata.UserStreamAcl:
                        userStreamAcl = StreamMetadata.ReadAcl(reader);
                        break;

                    case SystemMetadata.SystemStreamAcl:
                        systemStreamAcl = StreamMetadata.ReadAcl(reader);
                        break;

                    default: {
                        Check(reader.Read(), reader);
                        // skip
                        JToken.ReadFrom(reader);
                        break;
                    }
                    }
                }

                return(new SystemSettings(userStreamAcl, systemStreamAcl));
            }
        }