public virtual void TestLinkOffset() { int linkOffset = 7; MarshallingBuffer buffer = new MarshallingBuffer(); buffer.WriteInt(Data1); buffer.WriteByte(Data2); MarshallingBuffer child = buffer.AddChild(); child.WriteInt(Data3); child.WriteInt(Data4); MarshallingBuffer grandChild = child.AddChild(); grandChild.WriteInt(Data5); buffer.MergeChildren(null, 0, linkOffset); ByteArrayBuffer content = InspectContent(buffer); ByteArrayBuffer extendedBuffer = new ByteArrayBuffer(content.Length() + linkOffset ); content.CopyTo(extendedBuffer, 0, linkOffset, content.Length()); extendedBuffer.Seek(linkOffset); Assert.AreEqual(Data1, extendedBuffer.ReadInt()); Assert.AreEqual(Data2, extendedBuffer.ReadByte()); int address = extendedBuffer.ReadInt(); extendedBuffer.Seek(address); Assert.AreEqual(Data3, extendedBuffer.ReadInt()); Assert.AreEqual(Data4, extendedBuffer.ReadInt()); address = extendedBuffer.ReadInt(); extendedBuffer.Seek(address); Assert.AreEqual(Data5, extendedBuffer.ReadInt()); }
private void DeleteUpThrough(int location) { // int start = location + 1; // start at the first byte after the location byte[] newBuffer = Arrays.CopyOfRange(buffer.ToByteArray(), location, buffer.Length ()); buffer.Clear(); buffer.Append(newBuffer, 0, newBuffer.Length); }
public virtual Msg GetWriter(Transaction trans, ByteArrayBuffer bytes) { MsgD msg = GetWriterForLength(trans, bytes.Length()); msg._payLoad.Append(bytes._buffer); return(msg); }
private void AppendPayLoad(StatefulBuffer target, Pointer4 pointer, ByteArrayBuffer payLoad) { target.WriteInt(payLoad.Length()); target.WriteInt(pointer.Id()); target.WriteInt(pointer.Address()); target.Append(payLoad._buffer); }
public MsgD GetWriterForBuffer(Transaction trans , ByteArrayBuffer buffer) { var writer = GetWriterForLength(trans, buffer .Length()); writer.WriteBytes(buffer._buffer); return(writer); }
private static byte[] BytesToSendFor(string message) { var io = new LatinStringIO(); var marshalledStringLength = io.Length(message); var buffer = new ByteArrayBuffer(marshalledStringLength + Const4.IntLength); buffer.WriteInt(marshalledStringLength); io.WriteLengthAndString(buffer, message); buffer.Seek(0); return(buffer.ReadBytes(buffer.Length())); }
public Msg ReplyFromServer() { ByteArrayBuffer bytes = GetByteLoad(); int classMetadataID = bytes.ReadInt(); int prefetchDepth = bytes.ReadInt(); int prefetchCount = bytes.ReadInt(); bool triggerQueryEvents = bytes.ReadInt() == 1; ByteArrayBuffer payload = MarshallIDsFor(classMetadataID, prefetchDepth, prefetchCount , triggerQueryEvents); MsgD message = Msg.IdList.GetWriterForLength(Transaction(), payload.Length()); message.PayLoad().WriteBytes(payload._buffer); return(message); }
internal MsgD GetWriter(Transaction trans, Pointer4 pointer, ByteArrayBuffer buffer , int[] prependInts) { int lengthNeeded = buffer.Length() + LengthForFirst; if (prependInts != null) { lengthNeeded += (prependInts.Length * Const4.IntLength); } MsgD message = GetWriterForLength(trans, lengthNeeded); if (prependInts != null) { for (int i = 0; i < prependInts.Length; i++) { message._payLoad.WriteInt(prependInts[i]); } } AppendPayLoad(message._payLoad, pointer, buffer); return(message); }
private int CopyDependentSlot(IDefragmentContext context, int sourceId) { try { ByteArrayBuffer sourceBuffer = context.SourceBufferById(sourceId); Slot targetPayloadSlot = context.AllocateTargetSlot(sourceBuffer.Length()); int targetId = context.Services().TargetNewId(); context.Services().MapIDs(sourceId, targetId, false); context.Services().Mapping().MapId(targetId, targetPayloadSlot); DefragmentContextImpl payloadContext = new DefragmentContextImpl(sourceBuffer, (DefragmentContextImpl )context); int clazzId = payloadContext.CopyIDReturnOriginalID(); ITypeHandler4 payloadHandler = payloadContext.TypeHandlerForId(clazzId); ITypeHandler4 versionedPayloadHandler = HandlerRegistry.CorrectHandlerVersion(payloadContext , payloadHandler); versionedPayloadHandler.Defragment(payloadContext); payloadContext.WriteToTarget(targetPayloadSlot.Address()); return(targetId); } catch (IOException ioexc) { throw new Db4oIOException(ioexc); } }
private MsgD BuildQueryResultMessage(int queryResultId, IIntIterator4 ids, int maxCount , ObjectExchangeConfiguration config) { ByteArrayBuffer payload = ObjectExchangeStrategyFactory.ForConfig(config).Marshall ((LocalTransaction)Transaction(), ids, maxCount); MsgD message = QueryResult.GetWriterForLength(Transaction(), Const4.IntLength + payload .Length()); StatefulBuffer writer = message.PayLoad(); writer.WriteInt(queryResultId); writer.WriteBytes(payload._buffer); return(message); }
private void Write(IBin storage, ByteArrayBuffer buffer) { storage.Write(0, buffer._buffer, buffer.Length()); }
private void Read(IBin storage, ByteArrayBuffer buffer) { storage.Read(0, buffer._buffer, buffer.Length()); }
private void Write(IBin storage, ByteArrayBuffer buffer) { storage.Write(0, buffer._buffer, buffer.Length()); }
/// <exception cref="System.IO.IOException"></exception> private static void WriteBytes(ByteArrayBuffer b, OutputStream @out) { @out.Write(b.Buffer(), 0, b.Length()); }
/// <exception cref="System.IO.IOException"></exception> private static void WriteBytes(ByteArrayBuffer b, OutputStream @out) { @out.Write(b.Buffer(), 0, b.Length()); }
public Db4objects.Db4o.CS.Internal.Messages.MsgD GetWriterForBuffer(Transaction trans , ByteArrayBuffer buffer) { Db4objects.Db4o.CS.Internal.Messages.MsgD writer = GetWriterForLength(trans, buffer .Length()); writer.WriteBytes(buffer._buffer); return(writer); }
private void Read(IBin storage, ByteArrayBuffer buffer) { storage.Read(0, buffer._buffer, buffer.Length()); }