public override string ToString() { string result; switch (Mode_) { case Mode.Phase: return("Phase: " + Phase + (Completed ? " (completed)" : "")); case Mode.Position: result = Position.ToString(); break; case Mode.PreparePosition: result = PreparePosition.ToString(); break; case Mode.Stream: result = Streams.Keys.First() + ": " + Streams.Values.First(); break; case Mode.MultiStream: case Mode.EventTypeIndex: var sb = new StringBuilder(); if (Mode_ == Mode.EventTypeIndex) { sb.Append(Position.ToString()); sb.Append("; "); } foreach (var stream in Streams) { sb.AppendFormat("{0}: {1}; ", stream.Key, stream.Value); } result = sb.ToString(); break; case Mode.ByStream: result = string.Format( "{0}:{1}/{2}:{3}/{4}", CatalogStream, CatalogPosition, DataStream, DataPosition, CommitPosition); break; default: return("Unsupported mode: " + Mode_.ToString()); } if (Phase == 0) { return(result); } else { return("(" + Phase + ") " + result); } }
public void WriteTo(ProjectionVersion projectionVersion, IEnumerable <KeyValuePair <string, JToken> > extraMetaData, JsonWriter jsonWriter) { jsonWriter.WriteStartObject(); if (projectionVersion.ProjectionId > 0) { jsonWriter.WritePropertyName("$v"); WriteVersion(projectionVersion, jsonWriter); } if (Phase != 0) { jsonWriter.WritePropertyName("$ph"); jsonWriter.WriteValue(Phase); } switch (Mode_) { case Mode.Phase: jsonWriter.WritePropertyName("$cp"); jsonWriter.WriteValue(Completed); break; case Mode.Position: case Mode.EventTypeIndex: jsonWriter.WritePropertyName("$c"); jsonWriter.WriteValue(CommitPosition.GetValueOrDefault()); jsonWriter.WritePropertyName("$p"); jsonWriter.WriteValue(PreparePosition.GetValueOrDefault()); if (Mode_ == Mode.EventTypeIndex) { goto case Mode.MultiStream; } break; case Mode.PreparePosition: jsonWriter.WritePropertyName("$p"); jsonWriter.WriteValue(PreparePosition.GetValueOrDefault()); break; case Mode.Stream: case Mode.MultiStream: jsonWriter.WritePropertyName("$s"); jsonWriter.WriteStartObject(); foreach (var stream in Streams) { jsonWriter.WritePropertyName(stream.Key); jsonWriter.WriteValue(stream.Value); } jsonWriter.WriteEndObject(); break; case Mode.ByStream: jsonWriter.WritePropertyName("$m"); jsonWriter.WriteValue("bs"); jsonWriter.WritePropertyName("$c"); jsonWriter.WriteValue(CommitPosition.GetValueOrDefault()); jsonWriter.WritePropertyName("$s"); jsonWriter.WriteStartArray(); jsonWriter.WriteStartObject(); jsonWriter.WritePropertyName(CatalogStream); jsonWriter.WriteValue(CatalogPosition); jsonWriter.WriteEndObject(); if (!string.IsNullOrEmpty(DataStream)) { jsonWriter.WriteStartObject(); jsonWriter.WritePropertyName(DataStream); jsonWriter.WriteValue(DataPosition); jsonWriter.WriteEndObject(); } jsonWriter.WriteEndArray(); break; } if (extraMetaData != null) { foreach (var pair in extraMetaData) { jsonWriter.WritePropertyName(pair.Key); pair.Value.WriteTo(jsonWriter); } } jsonWriter.WriteEndObject(); }