Esempio n. 1
0
            public static void Serializer(object untypedInput, ISerializationContext context, Type expected)
            {
                HeadersContainer input = (HeadersContainer)untypedInput;
                var sm      = context.GetSerializationManager();
                var headers = input.GetHeadersMask();
                var writer  = context.StreamWriter;

                writer.Write((int)headers);
                if ((headers & Headers.CACHE_INVALIDATION_HEADER) != Headers.NONE)
                {
                    var count = input.CacheInvalidationHeader.Count;
                    writer.Write(input.CacheInvalidationHeader.Count);
                    for (int i = 0; i < count; i++)
                    {
                        WriteObj(sm, context, typeof(ActivationAddress), input.CacheInvalidationHeader[i]);
                    }
                }

                if ((headers & Headers.CATEGORY) != Headers.NONE)
                {
                    writer.Write((byte)input.Category);
                }

                if ((headers & Headers.DIRECTION) != Headers.NONE)
                {
                    writer.Write((byte)input.Direction.Value);
                }

                if ((headers & Headers.TIME_TO_LIVE) != Headers.NONE)
                {
                    writer.Write(input.TimeToLive.Value);
                }

                if ((headers & Headers.FORWARD_COUNT) != Headers.NONE)
                {
                    writer.Write(input.ForwardCount);
                }

                if ((headers & Headers.CORRELATION_ID) != Headers.NONE)
                {
                    writer.Write(input.Id);
                }

                if ((headers & Headers.ALWAYS_INTERLEAVE) != Headers.NONE)
                {
                    writer.Write(input.IsAlwaysInterleave);
                }

                if ((headers & Headers.IS_NEW_PLACEMENT) != Headers.NONE)
                {
                    writer.Write(input.IsNewPlacement);
                }

                if ((headers & Headers.IS_RETURNED_FROM_REMOTE_CLUSTER) != Headers.NONE)
                {
                    writer.Write(input.IsReturnedFromRemoteCluster);
                }

                if ((headers & Headers.INTERFACE_VERSION) != Headers.NONE)
                {
                    writer.Write(input.InterfaceVersion);
                }

                if ((headers & Headers.READ_ONLY) != Headers.NONE)
                {
                    writer.Write(input.IsReadOnly);
                }

                if ((headers & Headers.IS_UNORDERED) != Headers.NONE)
                {
                    writer.Write(input.IsUnordered);
                }

                if ((headers & Headers.REJECTION_INFO) != Headers.NONE)
                {
                    writer.Write(input.RejectionInfo);
                }

                if ((headers & Headers.REJECTION_TYPE) != Headers.NONE)
                {
                    writer.Write((byte)input.RejectionType);
                }

                if ((headers & Headers.REQUEST_CONTEXT) != Headers.NONE)
                {
                    var requestData = input.RequestContextData;
                    var count       = requestData.Count;
                    writer.Write(count);
                    foreach (var d in requestData)
                    {
                        writer.Write(d.Key);
                        SerializationManager.SerializeInner(d.Value, context, typeof(object));
                    }
                }

                if ((headers & Headers.RESULT) != Headers.NONE)
                {
                    writer.Write((byte)input.Result);
                }

                if ((headers & Headers.SENDING_ACTIVATION) != Headers.NONE)
                {
                    writer.Write(input.SendingActivation);
                }

                if ((headers & Headers.SENDING_GRAIN) != Headers.NONE)
                {
                    writer.Write(input.SendingGrain);
                }

                if ((headers & Headers.SENDING_SILO) != Headers.NONE)
                {
                    writer.Write(input.SendingSilo);
                }

                if ((headers & Headers.TARGET_ACTIVATION) != Headers.NONE)
                {
                    writer.Write(input.TargetActivation);
                }

                if ((headers & Headers.TARGET_GRAIN) != Headers.NONE)
                {
                    writer.Write(input.TargetGrain);
                }

                if ((headers & Headers.CALL_CHAIN_ID) != Headers.NONE)
                {
                    writer.Write(input.CallChainId);
                }

                if ((headers & Headers.TARGET_SILO) != Headers.NONE)
                {
                    writer.Write(input.TargetSilo);
                }

                if ((headers & Headers.TRANSACTION_INFO) != Headers.NONE)
                {
                    SerializationManager.SerializeInner(input.TransactionInfo, context, typeof(ITransactionInfo));
                }

                if ((headers & Headers.TRACE_CONTEXT) != Headers.NONE)
                {
                    SerializationManager.SerializeInner(input._traceContext, context, typeof(TraceContext));
                }

                if ((headers & Headers.INTERFACE_TYPE) != Headers.NONE)
                {
                    writer.Write(input.interfaceType);
                }
            }
Esempio n. 2
0
            public static void Serializer(object untypedInput, ISerializationContext context, Type expected)
            {
                HeadersContainer input = (HeadersContainer)untypedInput;
                var headers            = input.GetHeadersMask();
                var writer             = context.StreamWriter;

                writer.Write((int)headers);
                if ((headers & Headers.CACHE_INVALIDATION_HEADER) != Headers.NONE)
                {
                    var count = input.CacheInvalidationHeader.Count;
                    writer.Write(input.CacheInvalidationHeader.Count);
                    for (int i = 0; i < count; i++)
                    {
                        WriteObj(context, typeof(ActivationAddress), input.CacheInvalidationHeader[i]);
                    }
                }

                if ((headers & Headers.CATEGORY) != Headers.NONE)
                {
                    writer.Write((byte)input.Category);
                }

                if ((headers & Headers.DEBUG_CONTEXT) != Headers.NONE)
                {
                    writer.Write(input.DebugContext);
                }

                if ((headers & Headers.DIRECTION) != Headers.NONE)
                {
                    writer.Write((byte)input.Direction.Value);
                }

                if ((headers & Headers.TIME_TO_LIVE) != Headers.NONE)
                {
                    writer.Write(input.TimeToLive.Value);
                }

                if ((headers & Headers.FORWARD_COUNT) != Headers.NONE)
                {
                    writer.Write(input.ForwardCount);
                }

                if ((headers & Headers.GENERIC_GRAIN_TYPE) != Headers.NONE)
                {
                    writer.Write(input.GenericGrainType);
                }

                if ((headers & Headers.CORRELATION_ID) != Headers.NONE)
                {
                    writer.Write(input.Id);
                }

                if ((headers & Headers.ALWAYS_INTERLEAVE) != Headers.NONE)
                {
                    writer.Write(input.IsAlwaysInterleave);
                }

                if ((headers & Headers.IS_NEW_PLACEMENT) != Headers.NONE)
                {
                    writer.Write(input.IsNewPlacement);
                }

                // Nothing to do with Headers.IS_USING_INTERFACE_VERSION since the value in
                // the header is sufficient

                if ((headers & Headers.READ_ONLY) != Headers.NONE)
                {
                    writer.Write(input.IsReadOnly);
                }

                if ((headers & Headers.IS_UNORDERED) != Headers.NONE)
                {
                    writer.Write(input.IsUnordered);
                }

                if ((headers & Headers.NEW_GRAIN_TYPE) != Headers.NONE)
                {
                    writer.Write(input.NewGrainType);
                }

                if ((headers & Headers.REJECTION_INFO) != Headers.NONE)
                {
                    writer.Write(input.RejectionInfo);
                }

                if ((headers & Headers.REJECTION_TYPE) != Headers.NONE)
                {
                    writer.Write((byte)input.RejectionType);
                }

                if ((headers & Headers.REQUEST_CONTEXT) != Headers.NONE)
                {
                    var requestData = input.RequestContextData;
                    var count       = requestData.Count;
                    writer.Write(count);
                    foreach (var d in requestData)
                    {
                        writer.Write(d.Key);
                        SerializationManager.SerializeInner(d.Value, context, typeof(object));
                    }
                }

                if ((headers & Headers.RESEND_COUNT) != Headers.NONE)
                {
                    writer.Write(input.ResendCount);
                }

                if ((headers & Headers.RESULT) != Headers.NONE)
                {
                    writer.Write((byte)input.Result);
                }

                if ((headers & Headers.SENDING_ACTIVATION) != Headers.NONE)
                {
                    writer.Write(input.SendingActivation);
                }

                if ((headers & Headers.SENDING_GRAIN) != Headers.NONE)
                {
                    writer.Write(input.SendingGrain);
                }

                if ((headers & Headers.SENDING_SILO) != Headers.NONE)
                {
                    writer.Write(input.SendingSilo);
                }

                if ((headers & Headers.TARGET_ACTIVATION) != Headers.NONE)
                {
                    writer.Write(input.TargetActivation);
                }

                if ((headers & Headers.TARGET_GRAIN) != Headers.NONE)
                {
                    writer.Write(input.TargetGrain);
                }

                if ((headers & Headers.TARGET_OBSERVER) != Headers.NONE)
                {
                    WriteObj(context, typeof(GuidId), input.TargetObserverId);
                }

                if ((headers & Headers.TARGET_SILO) != Headers.NONE)
                {
                    writer.Write(input.TargetSilo);
                }

                if ((headers & Headers.TRANSACTION_INFO) != Headers.NONE)
                {
                    SerializationManager.SerializeInner(input.TransactionInfo, context, typeof(ITransactionInfo));
                }
            }
Esempio n. 3
0
            public static void Serializer(System.Object untypedInput, BinaryTokenStreamWriter stream, System.Type expected)
            {
                HeadersContainer input = (HeadersContainer)untypedInput;
                var headers            = input.GetHeadersMask();

                stream.Write((int)headers);
                if ((headers & Headers.CACHE_INVALIDATION_HEADER) != Headers.NONE)
                {
                    var count = input.CacheInvalidationHeader.Count;
                    stream.Write(input.CacheInvalidationHeader.Count);
                    for (int i = 0; i < count; i++)
                    {
                        WriteObj(stream, typeof(ActivationAddress), input.CacheInvalidationHeader[i]);
                    }
                }

                if ((headers & Headers.CATEGORY) != Headers.NONE)
                {
                    stream.Write((byte)input.Category);
                }

                if ((headers & Headers.DEBUG_CONTEXT) != Headers.NONE)
                {
                    stream.Write(input.DebugContext);
                }

                if ((headers & Headers.DIRECTION) != Headers.NONE)
                {
                    stream.Write((byte)input.Direction.Value);
                }

                if ((headers & Headers.EXPIRATION) != Headers.NONE)
                {
                    stream.Write(input.Expiration.Value);
                }

                if ((headers & Headers.FORWARD_COUNT) != Headers.NONE)
                {
                    stream.Write(input.ForwardCount);
                }

                if ((headers & Headers.GENERIC_GRAIN_TYPE) != Headers.NONE)
                {
                    stream.Write(input.GenericGrainType);
                }

                if ((headers & Headers.CORRELATION_ID) != Headers.NONE)
                {
                    stream.Write(input.Id);
                }

                if ((headers & Headers.ALWAYS_INTERLEAVE) != Headers.NONE)
                {
                    stream.Write(input.IsAlwaysInterleave);
                }

                if ((headers & Headers.IS_NEW_PLACEMENT) != Headers.NONE)
                {
                    stream.Write(input.IsNewPlacement);
                }

                if ((headers & Headers.READ_ONLY) != Headers.NONE)
                {
                    stream.Write(input.IsReadOnly);
                }

                if ((headers & Headers.IS_UNORDERED) != Headers.NONE)
                {
                    stream.Write(input.IsUnordered);
                }

                if ((headers & Headers.NEW_GRAIN_TYPE) != Headers.NONE)
                {
                    stream.Write(input.NewGrainType);
                }

                if ((headers & Headers.REJECTION_INFO) != Headers.NONE)
                {
                    stream.Write(input.RejectionInfo);
                }

                if ((headers & Headers.REJECTION_TYPE) != Headers.NONE)
                {
                    stream.Write((byte)input.RejectionType);
                }

                if ((headers & Headers.REQUEST_CONTEXT) != Headers.NONE)
                {
                    var requestData = input.RequestContextData;
                    var count       = requestData.Count;
                    stream.Write(count);
                    foreach (var d in requestData)
                    {
                        stream.Write(d.Key);
                        SerializationManager.SerializeInner(d.Value, stream, typeof(object));
                    }
                }

                if ((headers & Headers.RESEND_COUNT) != Headers.NONE)
                {
                    stream.Write(input.ResendCount);
                }

                if ((headers & Headers.RESULT) != Headers.NONE)
                {
                    stream.Write((byte)input.Result);
                }

                if ((headers & Headers.SENDING_ACTIVATION) != Headers.NONE)
                {
                    stream.Write(input.SendingActivation);
                }

                if ((headers & Headers.SENDING_GRAIN) != Headers.NONE)
                {
                    stream.Write(input.SendingGrain);
                }

                if ((headers & Headers.SENDING_SILO) != Headers.NONE)
                {
                    stream.Write(input.SendingSilo);
                }

                if ((headers & Headers.TARGET_ACTIVATION) != Headers.NONE)
                {
                    stream.Write(input.TargetActivation);
                }

                if ((headers & Headers.TARGET_GRAIN) != Headers.NONE)
                {
                    stream.Write(input.TargetGrain);
                }

                if ((headers & Headers.TARGET_OBSERVER) != Headers.NONE)
                {
                    WriteObj(stream, typeof(GuidId), input.TargetObserverId);
                }

                if ((headers & Headers.TARGET_SILO) != Headers.NONE)
                {
                    stream.Write(input.TargetSilo);
                }
            }