protected override void OnProcessOutputSchema(MutableObject newSchema)
        {
            var ids = new List <MutableObject>();

            var id1 = new MutableObject();

            id1.Add("TraceRequestID", Trace1RequestIdField.GetFirstValue(newSchema));
            id1.Add("TraceBinaryID", Trace1BinaryIdField.GetFirstValue(newSchema));
            ids.Add(id1);

            var id2 = new MutableObject();

            id2.Add("TraceRequestID", Trace2RequestIdField.GetFirstValue(newSchema));
            id2.Add("TraceBinaryID", Trace2BinaryIdField.GetFirstValue(newSchema));
            ids.Add(id2);

            var id3 = new MutableObject();

            id3.Add("TraceRequestID", Trace3RequestIdField.GetFirstValue(newSchema));
            id3.Add("TraceBinaryID", Trace3BinaryIdField.GetFirstValue(newSchema));
            ids.Add(id3);

            newSchema.Add("Trace IDs", ids);

            Router.TransmitAllSchema(newSchema);
        }
        public override IEnumerator ReceivePayload(VisualPayload payload)
        {
            var ids = new List <MutableObject>();

            var id1    = new MutableObject();
            var ignore = Trace1RequestIdField.GetFirstValue(payload.Data) == -1 ||
                         Trace1BinaryIdField.GetFirstValue(payload.Data) == -1;

            if (!ignore)
            {
                id1.Add("TraceRequestID", Trace1RequestIdField.GetFirstValue(payload.Data));
                id1.Add("TraceBinaryID", Trace1BinaryIdField.GetFirstValue(payload.Data));
                ids.Add(id1);
            }

            var id2 = new MutableObject();

            ignore = Trace2RequestIdField.GetFirstValue(payload.Data) == -1 ||
                     Trace2BinaryIdField.GetFirstValue(payload.Data) == -1;
            if (!ignore)
            {
                id2.Add("TraceRequestID", Trace2RequestIdField.GetFirstValue(payload.Data));
                id2.Add("TraceBinaryID", Trace2BinaryIdField.GetFirstValue(payload.Data));
                ids.Add(id2);
            }

            var id3 = new MutableObject();

            ignore = Trace3RequestIdField.GetFirstValue(payload.Data) == -1 ||
                     Trace3BinaryIdField.GetFirstValue(payload.Data) == -1;
            if (!ignore)
            {
                id3.Add("TraceRequestID", Trace3RequestIdField.GetFirstValue(payload.Data));
                id3.Add("TraceBinaryID", Trace3BinaryIdField.GetFirstValue(payload.Data));
                ids.Add(id3);
            }

            payload.Data.Add("Trace IDs", ids);

            var iterator = Router.TransmitAll(payload);

            while (iterator.MoveNext())
            {
                yield return(null);
            }
        }