summaryrefslogtreecommitdiff
path: root/src/req-wrap-inl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/req-wrap-inl.h')
-rw-r--r--src/req-wrap-inl.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/req-wrap-inl.h b/src/req-wrap-inl.h
new file mode 100644
index 0000000000..78c6735302
--- /dev/null
+++ b/src/req-wrap-inl.h
@@ -0,0 +1,41 @@
+#ifndef SRC_REQ_WRAP_INL_H_
+#define SRC_REQ_WRAP_INL_H_
+
+#include "req-wrap.h"
+#include "async-wrap.h"
+#include "async-wrap-inl.h"
+#include "env.h"
+#include "env-inl.h"
+#include "util.h"
+#include "util-inl.h"
+
+namespace node {
+
+template <typename T>
+ReqWrap<T>::ReqWrap(Environment* env,
+ v8::Handle<v8::Object> object,
+ AsyncWrap::ProviderType provider)
+ : AsyncWrap(env, object, provider) {
+ if (env->in_domain())
+ object->Set(env->domain_string(), env->domain_array()->Get(0));
+
+ // FIXME(bnoordhuis) The fact that a reinterpret_cast is needed is
+ // arguably a good indicator that there should be more than one queue.
+ env->req_wrap_queue()->PushBack(reinterpret_cast<ReqWrap<uv_req_t>*>(this));
+}
+
+template <typename T>
+ReqWrap<T>::~ReqWrap() {
+ CHECK_EQ(req_.data, this); // Assert that someone has called Dispatched().
+ CHECK_EQ(false, persistent().IsEmpty());
+ persistent().Reset();
+}
+
+template <typename T>
+void ReqWrap<T>::Dispatched() {
+ req_.data = this;
+}
+
+} // namespace node
+
+#endif // SRC_REQ_WRAP_INL_H_