| 265 | |
| 266 | private: |
| 267 | static Handle<Object> CreateCallbackData(Handle<Function> callback, |
| 268 | Handle<Value> receiver) { |
| 269 | EscapableHandleScope scope; |
| 270 | |
| 271 | Local<Object> callbackData; |
| 272 | if (!callback.IsEmpty() && !callback->Equals(Undefined())) { |
| 273 | callbackData = New<Object>(); |
| 274 | |
| 275 | if (!receiver.IsEmpty()) { |
| 276 | Nan::SetPrototype(callbackData, receiver); |
| 277 | } |
| 278 | |
| 279 | Nan::Set(callbackData, New<String>("callback").ToLocalChecked(), |
| 280 | callback); |
| 281 | |
| 282 | // get the current domain: |
| 283 | Local<Value> currentDomain = Undefined(); |
| 284 | |
| 285 | Local<Object> process = |
| 286 | Nan::To<Object>(Nan::Get(GetCurrentContext()->Global(), |
| 287 | New<String>("process").ToLocalChecked()) |
| 288 | .ToLocalChecked()) |
| 289 | .ToLocalChecked(); |
| 290 | if (!process->Equals(Undefined())) { |
| 291 | currentDomain = process->Get(New<String>("domain").ToLocalChecked()); |
| 292 | } |
| 293 | |
| 294 | Nan::Set(callbackData, New<String>("domain").ToLocalChecked(), |
| 295 | currentDomain); |
| 296 | } |
| 297 | |
| 298 | return scope.Escape(callbackData); |
| 299 | }; |
| 300 | |
| 301 | template <typename TInput, typename TResult> |
| 302 | static void __cdecl AsyncWork(uv_work_t* req) { |