mirror of https://github.com/lukechilds/node.git
Browse Source
This commit also breaks up req_wrap.h into req-wrap.h and req-wrap-inl.h to work around a circular dependency issue in env.h. PR-URL: https://github.com/iojs/io.js/pull/667 Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com> Reviewed-By: Trevor Norris <trev.norris@gmail.com>v1.8.0-commit
Ben Noordhuis
10 years ago
25 changed files with 171 additions and 181 deletions
@ -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_
|
@ -0,0 +1,30 @@ |
|||||
|
#ifndef SRC_REQ_WRAP_H_ |
||||
|
#define SRC_REQ_WRAP_H_ |
||||
|
|
||||
|
#include "async-wrap.h" |
||||
|
#include "env.h" |
||||
|
#include "util.h" |
||||
|
#include "v8.h" |
||||
|
|
||||
|
namespace node { |
||||
|
|
||||
|
template <typename T> |
||||
|
class ReqWrap : public AsyncWrap { |
||||
|
public: |
||||
|
inline ReqWrap(Environment* env, |
||||
|
v8::Handle<v8::Object> object, |
||||
|
AsyncWrap::ProviderType provider); |
||||
|
inline ~ReqWrap() override; |
||||
|
inline void Dispatched(); // Call this after the req has been dispatched.
|
||||
|
|
||||
|
private: |
||||
|
friend class Environment; |
||||
|
ListNode<ReqWrap> req_wrap_queue_; |
||||
|
|
||||
|
public: |
||||
|
T req_; // Must be last. TODO(bnoordhuis) Make private.
|
||||
|
}; |
||||
|
|
||||
|
} // namespace node
|
||||
|
|
||||
|
#endif // SRC_REQ_WRAP_H_
|
@ -1,49 +0,0 @@ |
|||||
#ifndef SRC_REQ_WRAP_H_ |
|
||||
#define SRC_REQ_WRAP_H_ |
|
||||
|
|
||||
#include "async-wrap.h" |
|
||||
#include "async-wrap-inl.h" |
|
||||
#include "env.h" |
|
||||
#include "env-inl.h" |
|
||||
#include "queue.h" |
|
||||
#include "util.h" |
|
||||
|
|
||||
namespace node { |
|
||||
|
|
||||
template <typename T> |
|
||||
class ReqWrap : public AsyncWrap { |
|
||||
public: |
|
||||
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)); |
|
||||
|
|
||||
QUEUE_INSERT_TAIL(env->req_wrap_queue(), &req_wrap_queue_); |
|
||||
} |
|
||||
|
|
||||
|
|
||||
~ReqWrap() override { |
|
||||
QUEUE_REMOVE(&req_wrap_queue_); |
|
||||
// Assert that someone has called Dispatched()
|
|
||||
CHECK_EQ(req_.data, this); |
|
||||
CHECK_EQ(false, persistent().IsEmpty()); |
|
||||
persistent().Reset(); |
|
||||
} |
|
||||
|
|
||||
// Call this after the req has been dispatched.
|
|
||||
void Dispatched() { |
|
||||
req_.data = this; |
|
||||
} |
|
||||
|
|
||||
// TODO(bnoordhuis) Make these private.
|
|
||||
QUEUE req_wrap_queue_; |
|
||||
T req_; // *must* be last, GetActiveRequests() in node.cc depends on it
|
|
||||
}; |
|
||||
|
|
||||
|
|
||||
} // namespace node
|
|
||||
|
|
||||
|
|
||||
#endif // SRC_REQ_WRAP_H_
|
|
Loading…
Reference in new issue