/// <exception cref="System.IO.IOException"/> internal void WriteInternal(IBufferObjectDataOutput output, IPortable p) { var cd = _context.LookupOrRegisterClassDefinition(p); output.WriteInt(cd.GetVersion()); var writer = new DefaultPortableWriter(this, output, cd); p.WritePortable(writer); writer.End(); }
/// <exception cref="System.IO.IOException" /> public DefaultPortableWriter(PortableSerializer serializer, IBufferObjectDataOutput @out, IClassDefinition cd) { this.serializer = serializer; this.@out = @out; this.cd = cd; writtenFields = new HashSet<string>(); //cd.GetFieldCount() begin = @out.Position(); // room for final offset @out.WriteZeroBytes(4); @out.WriteInt(cd.GetFieldCount()); offset = @out.Position(); // one additional for raw data var fieldIndexesLength = (cd.GetFieldCount() + 1)*Bits.IntSizeInBytes; @out.WriteZeroBytes(fieldIndexesLength); }
/// <exception cref="System.IO.IOException" /> public DefaultPortableWriter(PortableSerializer serializer, IBufferObjectDataOutput @out, IClassDefinition cd) { _serializer = serializer; _out = @out; _cd = cd; _writtenFields = new HashSet <string>(); //cd.GetFieldCount() _begin = @out.Position(); // room for final offset @out.WriteZeroBytes(4); @out.WriteInt(cd.GetFieldCount()); _offset = @out.Position(); // one additional for raw data var fieldIndexesLength = (cd.GetFieldCount() + 1) * Bits.IntSizeInBytes; @out.WriteZeroBytes(fieldIndexesLength); }
/// <exception cref="System.IO.IOException" /> public virtual void WriteInt(string fieldName, int value) { SetPosition(fieldName, FieldType.Int); _out.WriteInt(value); }