public BBDataCache(ByteBuffer buffer, int id) { Checker.Assert(buffer != null && id != 0); _bBData = new BBData <T>(buffer.id, id); _buffer = buffer; _version = buffer.version; _headerPtrCache = buffer.FindHeaderPtrWithID(id); _dataPtrCache = buffer.GetData <T>(_headerPtrCache); }
internal BBDataCache(ByteBuffer buffer, BBDataHeader *headerPtr, T *dataPtr) { Checker.Assert(buffer != null && buffer.isValid && headerPtr != null && dataPtr != null); _bBData = new BBData <T>(buffer.id, headerPtr->id); _buffer = buffer; _version = buffer.version; _headerPtrCache = headerPtr; _dataPtrCache = dataPtr; }
private void CheckVersion() { if (_buffer == null) { _buffer = ByteBuffer.Get(_bBData.bbId); } else if (_version == _buffer.version) { return; } Checker.Assert(isValid); //版本发生变化,重新缓存指针 _headerPtrCache = _buffer.FindHeaderPtrWithID(_bBData.id); _dataPtrCache = _buffer.GetData <T>(_headerPtrCache); _version = _buffer.version; }