| 188 | class Statement; |
| 189 | |
| 190 | class Blob final : public RefCntIface<IBlobImpl<Blob, CheckStatusWrapper> > |
| 191 | { |
| 192 | public: |
| 193 | // IBlob implementation |
| 194 | int release() override; |
| 195 | void getInfo(CheckStatusWrapper* status, |
| 196 | unsigned int itemsLength, const unsigned char* items, |
| 197 | unsigned int bufferLength, unsigned char* buffer) override; |
| 198 | int getSegment(CheckStatusWrapper* status, unsigned int bufferLength, |
| 199 | void* buffer, unsigned int* segmentLength) override; |
| 200 | void putSegment(CheckStatusWrapper* status, unsigned int length, const void* buffer) override; |
| 201 | void cancel(CheckStatusWrapper* status) override; |
| 202 | void close(CheckStatusWrapper* status) override; |
| 203 | int seek(CheckStatusWrapper* status, int mode, int offset) override; // returns position |
| 204 | void deprecatedCancel(CheckStatusWrapper* status) override; |
| 205 | void deprecatedClose(CheckStatusWrapper* status) override; |
| 206 | |
| 207 | public: |
| 208 | explicit Blob(Rbl* handle) |
| 209 | : blob(handle) |
| 210 | { |
| 211 | blob->rbl_self = &blob; |
| 212 | } |
| 213 | |
| 214 | private: |
| 215 | void freeClientData(CheckStatusWrapper* status, bool force = false); |
| 216 | void internalCancel(CheckStatusWrapper* status); |
| 217 | void internalClose(CheckStatusWrapper* status); |
| 218 | // seek in cached blob |
| 219 | int seekCached(int mode, int offset); |
| 220 | |
| 221 | Rbl* blob; |
| 222 | }; |
| 223 | |
| 224 | int Blob::release() |
| 225 | { |
no outgoing calls
no test coverage detected