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)); }
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)); }
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); }