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