示例#1
0
        protected internal static object DeserializeGrainReference(Type t, IDeserializationContext context)
        {
            var         reader             = context.StreamReader;
            GrainId     id                 = reader.ReadGrainId();
            SiloAddress silo               = null;
            GuidId      observerId         = null;
            byte        siloAddressPresent = reader.ReadByte();

            if (siloAddressPresent != 0)
            {
                silo = reader.ReadSiloAddress();
            }
            bool expectObserverId = id.IsClient;

            if (expectObserverId)
            {
                observerId = GuidId.DeserializeFromStream(reader);
            }
            // store as null, serialize as empty.
            var genericArg = reader.ReadString();

            if (string.IsNullOrEmpty(genericArg))
            {
                genericArg = null;
            }

            var runtimeClient = context.AdditionalContext as IRuntimeClient;

            if (expectObserverId)
            {
                return(NewObserverGrainReference(id, observerId, runtimeClient));
            }

            return(FromGrainId(id, runtimeClient, genericArg, silo));
        }
示例#2
0
        protected internal static object DeserializeGrainReference(Type t, BinaryTokenStreamReader stream)
        {
            GrainId     id                 = stream.ReadGrainId();
            SiloAddress silo               = null;
            GuidId      observerId         = null;
            byte        siloAddressPresent = stream.ReadByte();

            if (siloAddressPresent != 0)
            {
                silo = stream.ReadSiloAddress();
            }
            bool expectObserverId = id.IsClient;

            if (expectObserverId)
            {
                observerId = GuidId.DeserializeFromStream(stream);
            }
            // store as null, serialize as empty.
            var genericArg = stream.ReadString();

            if (String.IsNullOrEmpty(genericArg))
            {
                genericArg = null;
            }

            if (expectObserverId)
            {
                return(NewObserverGrainReference(id, observerId));
            }
            return(FromGrainId(id, genericArg, silo));
        }
示例#3
0
        protected internal static object DeserializeGrainReference(Type t, IDeserializationContext context)
        {
            var         reader             = context.StreamReader;
            GrainId     id                 = reader.ReadGrainId();
            SiloAddress silo               = null;
            GuidId      observerId         = null;
            byte        siloAddressPresent = reader.ReadByte();

            if (siloAddressPresent != 0)
            {
                silo = reader.ReadSiloAddress();
            }
            bool expectObserverId = id.IsClient;

            if (expectObserverId)
            {
                observerId = GuidId.DeserializeFromStream(reader);
            }
            // store as null, serialize as empty.
            var genericArg = reader.ReadString();

            if (string.IsNullOrEmpty(genericArg))
            {
                genericArg = null;
            }

            GrainReference result;

            if (expectObserverId)
            {
                result = NewObserverGrainReference(id, observerId, null);
            }
            else
            {
                result = FromGrainId(id, null, genericArg, silo);
            }

            context.GrainFactory?.BindGrainReference(result);
            return(result);
        }