WPILibC++  2019.1.1-beta-1-4-ga8aacd3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
GetNameInfo.h
1 /*----------------------------------------------------------------------------*/
2 /* Copyright (c) 2018 FIRST. All Rights Reserved. */
3 /* Open Source Software - may be modified and shared by FRC teams. The code */
4 /* must be accompanied by the FIRST BSD license file in the root directory of */
5 /* the project. */
6 /*----------------------------------------------------------------------------*/
7 
8 #ifndef WPIUTIL_WPI_UV_GETNAMEINFO_H_
9 #define WPIUTIL_WPI_UV_GETNAMEINFO_H_
10 
11 #include <uv.h>
12 
13 #include <functional>
14 #include <memory>
15 
16 #include "wpi/Signal.h"
17 #include "wpi/Twine.h"
18 #include "wpi/uv/Request.h"
19 
20 namespace wpi {
21 namespace uv {
22 
23 class Loop;
24 
29 class GetNameInfoReq : public RequestImpl<GetNameInfoReq, uv_getnameinfo_t> {
30  public:
32 
33  Loop& GetLoop() const { return *static_cast<Loop*>(GetRaw()->loop->data); }
34 
40 };
41 
52 void GetNameInfo(Loop& loop, const std::shared_ptr<GetNameInfoReq>& req,
53  const sockaddr& addr, int flags = 0);
54 
65 inline void GetNameInfo(const std::shared_ptr<Loop>& loop,
66  const std::shared_ptr<GetNameInfoReq>& req,
67  const sockaddr& addr, int flags = 0) {
68  GetNameInfo(*loop, req, addr, flags);
69 }
70 
80 void GetNameInfo(Loop& loop,
81  std::function<void(const char*, const char*)> callback,
82  const sockaddr& addr, int flags = 0);
83 
94 inline void GetNameInfo(const std::shared_ptr<Loop>& loop,
95  std::function<void(const char*, const char*)> callback,
96  const sockaddr& addr, int flags = 0) {
97  GetNameInfo(*loop, callback, addr, flags);
98 }
99 
111 void GetNameInfo4(Loop& loop, const std::shared_ptr<GetNameInfoReq>& req,
112  const Twine& ip, unsigned int port, int flags = 0);
113 
125 inline void GetNameInfo4(const std::shared_ptr<Loop>& loop,
126  const std::shared_ptr<GetNameInfoReq>& req,
127  const Twine& ip, unsigned int port, int flags = 0) {
128  return GetNameInfo4(*loop, req, ip, port, flags);
129 }
130 
141 void GetNameInfo4(Loop& loop,
142  std::function<void(const char*, const char*)> callback,
143  const Twine& ip, unsigned int port, int flags = 0);
144 
156 inline void GetNameInfo4(const std::shared_ptr<Loop>& loop,
157  std::function<void(const char*, const char*)> callback,
158  const Twine& ip, unsigned int port, int flags = 0) {
159  return GetNameInfo4(*loop, callback, ip, port, flags);
160 }
161 
173 void GetNameInfo6(Loop& loop, const std::shared_ptr<GetNameInfoReq>& req,
174  const Twine& ip, unsigned int port, int flags = 0);
175 
187 inline void GetNameInfo6(const std::shared_ptr<Loop>& loop,
188  const std::shared_ptr<GetNameInfoReq>& req,
189  const Twine& ip, unsigned int port, int flags = 0) {
190  GetNameInfo6(*loop, req, ip, port, flags);
191 }
192 
204 void GetNameInfo6(Loop& loop,
205  std::function<void(const char*, const char*)> callback,
206  const Twine& ip, unsigned int port, int flags = 0);
207 
219 inline void GetNameInfo6(const std::shared_ptr<Loop>& loop,
220  std::function<void(const char*, const char*)> callback,
221  const Twine& ip, unsigned int port, int flags = 0) {
222  return GetNameInfo6(*loop, callback, ip, port, flags);
223 }
224 
225 } // namespace uv
226 } // namespace wpi
227 
228 #endif // WPIUTIL_WPI_UV_GETNAMEINFO_H_
WPILib C++ utilities (wpiutil) namespace.
Definition: SmallString.h:21
uv_getnameinfo_t * GetRaw() noexcept
Get the underlying request data structure.
Definition: Request.h:149
GetNameInfo request.
Definition: GetNameInfo.h:29
Event loop.
Definition: Loop.h:39
sig::Signal< const char *, const char * > resolved
Resolved lookup signal.
Definition: GetNameInfo.h:39
SignalBase is an implementation of the observer pattern, through the use of an emitting object and sl...
Definition: Signal.h:495
Request.
Definition: Request.h:134