| 106 | |
| 107 | public: |
| 108 | inline TMappedBlobBase(const TMemoryMap& map, ui64 offset, size_t len, EMappingMode mode) |
| 109 | : Map_(map) |
| 110 | , Mode_(mode) |
| 111 | { |
| 112 | Y_ENSURE(Map_.IsOpen(), TStringBuf("memory map not open")); |
| 113 | |
| 114 | Map_.Map(offset, len); |
| 115 | |
| 116 | if (len && !Map_.Ptr()) { // Ptr is 0 for blob of size 0 |
| 117 | ythrow yexception() << "can not map(" << offset << ", " << len << ")"; |
| 118 | } |
| 119 | |
| 120 | if (Mode_ == EMappingMode::Locked) { |
| 121 | LockMemory(Data(), Length()); |
| 122 | } |
| 123 | } |
| 124 | |
| 125 | ~TMappedBlobBase() override { |
| 126 | if (Mode_ == EMappingMode::Locked && Length()) { |