public PkgWriter(int size) { Waiter = null; unsafe { mStreamWriter = new Support.NativeStreamWriter((UInt32)sizeof(PkgHeader) + (UInt32)size); PkgHeader header = new PkgHeader(); header.ToDefault(); WritePtr(&header, sizeof(PkgHeader)); } }
public void Reset() { mStreamWriter = new Support.NativeStreamWriter(0); PkgHeader header = new PkgHeader(); header.ToDefault(); unsafe { WritePtr(&header, sizeof(PkgHeader)); } }
public void InitPools(int stride) { mNumber = 65536 / stride; mPkgPools = new PkgPool[mNumber]; mStride = stride; for (int i = 0; i < mNumber; i++) { var pool = new PkgPool(); pool.Size = PkgHeader.SizeOf() + mStride * (i + 1); mPkgPools[i] = pool; } }
public bool FreePkg(byte[] pkg) { int size = pkg.Length - PkgHeader.SizeOf(); if (size < 0) { return(false); } int index = size / mStride - 1; if (index >= mNumber) { return(false); } return(mPkgPools[index].FreePkg(pkg)); }
public int CurPtr() { return(PkgHeader.SizeOf() + GetPosition()); }
public int DataPtr() { return(PkgHeader.SizeOf()); }