#ifndef UDP_WRAP_H_ #define UDP_WRAP_H_ #include "node.h" #include "req_wrap.h" #include "handle_wrap.h" namespace node { class UDPWrap: public HandleWrap { public: static void Initialize(v8::Handle target); static v8::Handle GetFD(v8::Local, const v8::AccessorInfo&); static v8::Handle New(const v8::Arguments& args); static v8::Handle Bind(const v8::Arguments& args); static v8::Handle Send(const v8::Arguments& args); static v8::Handle Bind6(const v8::Arguments& args); static v8::Handle Send6(const v8::Arguments& args); static v8::Handle RecvStart(const v8::Arguments& args); static v8::Handle RecvStop(const v8::Arguments& args); static v8::Handle GetSockName(const v8::Arguments& args); static v8::Handle AddMembership(const v8::Arguments& args); static v8::Handle DropMembership(const v8::Arguments& args); static v8::Handle SetMulticastTTL(const v8::Arguments& args); static v8::Handle SetMulticastLoopback(const v8::Arguments& args); static v8::Handle SetBroadcast(const v8::Arguments& args); static v8::Handle SetTTL(const v8::Arguments& args); static UDPWrap* Unwrap(v8::Local obj); static v8::Local Instantiate(); uv_udp_t* UVHandle(); private: UDPWrap(v8::Handle object); virtual ~UDPWrap(); static v8::Handle DoBind(const v8::Arguments& args, int family); static v8::Handle DoSend(const v8::Arguments& args, int family); static v8::Handle SetMembership(const v8::Arguments& args, uv_membership membership); static uv_buf_t OnAlloc(uv_handle_t* handle, size_t suggested_size); static void OnSend(uv_udp_send_t* req, int status); static void OnRecv(uv_udp_t* handle, ssize_t nread, uv_buf_t buf, struct sockaddr* addr, unsigned flags); uv_udp_t handle_; }; } // namespace node #endif // UDP_WRAP_H_