aboutsummaryrefslogtreecommitdiff
path: root/src/req_wrap.h
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2011-07-18 02:32:32 -0700
committerRyan Dahl <ry@tinyclouds.org>2011-07-18 03:08:54 -0700
commit1ae148909a2bd220cf48218a4c9ff295a611a65e (patch)
tree59b1f7634e4ffde64a9a982eb7f1ae3b9ef49cc9 /src/req_wrap.h
parent404a4db6111f9dad8fe1bd924cc3ee6cc9eea06d (diff)
downloadandroid-node-v8-1ae148909a2bd220cf48218a4c9ff295a611a65e.tar.gz
android-node-v8-1ae148909a2bd220cf48218a4c9ff295a611a65e.tar.bz2
android-node-v8-1ae148909a2bd220cf48218a4c9ff295a611a65e.zip
Abstract StreamWrap from TCPWrap
Diffstat (limited to 'src/req_wrap.h')
-rw-r--r--src/req_wrap.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/req_wrap.h b/src/req_wrap.h
new file mode 100644
index 0000000000..cc60547013
--- /dev/null
+++ b/src/req_wrap.h
@@ -0,0 +1,35 @@
+#ifndef REQ_WRAP_H_
+#define REQ_WRAP_H_
+
+namespace node {
+
+template <typename T>
+class ReqWrap {
+ public:
+ ReqWrap() {
+ v8::HandleScope scope;
+ object_ = v8::Persistent<v8::Object>::New(v8::Object::New());
+ }
+
+ ~ReqWrap() {
+ // Assert that someone has called Dispatched()
+ assert(req_.data == this);
+ assert(!object_.IsEmpty());
+ object_.Dispose();
+ object_.Clear();
+ }
+
+ // Call this after the req has been dispatched.
+ void Dispatched() {
+ req_.data = this;
+ }
+
+ v8::Persistent<v8::Object> object_;
+ T req_;
+};
+
+
+} // namespace node
+
+
+#endif // REQ_WRAP_H_