Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class RandomBytesRequest : public AsyncWrap {
- public:
- enum FreeMode { FREE_DATA, DONT_FREE_DATA };
- RandomBytesRequest(Environment* env,
- Local<Object> object,
- size_t size,
- char* data,
- FreeMode free_mode)
- : AsyncWrap(env, object, AsyncWrap::PROVIDER_RANDOMBYTESREQUEST),
- error_(0),
- size_(size),
- data_(data),
- free_mode_(free_mode) {
- Wrap(object, this);
- }
- ~RandomBytesRequest() override {
- ClearWrap(object());
- persistent().Reset();
- }
- uv_work_t* work_req() {
- return &work_req_;
- }
- inline size_t size() const {
- return size_;
- }
- inline char* data() const {
- return data_;
- }
- inline void set_data(char* data) {
- data_ = data;
- }
- inline void release() {
- size_ = 0;
- if (free_mode_ == FREE_DATA) {
- free(data_);
- }
- }
- inline void return_memory(char** d, size_t* len) {
- *d = data_;
- data_ = nullptr;
- *len = size_;
- size_ = 0;
- }
- inline unsigned long error() const { // NOLINT(runtime/int)
- return error_;
- }
- inline void set_error(unsigned long err) { // NOLINT(runtime/int)
- error_ = err;
- }
- size_t self_size() const override { return sizeof(*this); }
- uv_work_t work_req_;
- private:
- unsigned long error_; // NOLINT(runtime/int)
- size_t size_;
- char* data_;
- const FreeMode free_mode_;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement