/// <summary> /// Tries to read a previously written object. /// </summary> /// <param name="already">The available object if it exists.</param> /// <returns> /// The read state. When <see cref="ReadState.Success"/> is false, the object must be read /// and <see cref="ReadState.SetReadResult(T)"/> must be called. /// </returns> public ReadState TryRead(out T already) { byte b = _r.ReadByte(); switch (b) { case 0: already = default(T); return(new ReadState()); case 1: already = _objects[_r.ReadNonNegativeSmallInt32()]; return(new ReadState(1)); default: already = default(T); return(new ReadState(this, b)); } }
public DeserializerContext(ICKBinaryReader reader) { Version = reader.ReadNonNegativeSmallInt32(); Reader = reader; TraitContextPool = new CKBinaryReader.ObjectPool <CKTraitContext>(Reader); TraitPool = new CKBinaryReader.ObjectPool <CKTrait>(Reader); }
internal SymmetricKey(ISystemClock clock, ICKBinaryReader r) : base(clock, r) { r.ReadByte(); _key = r.ReadBytes(r.ReadNonNegativeSmallInt32()); }