| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -474,7 +474,7 @@ void Initialize(Local<Object> target, | |||
| 474 | 474 | SetProtoMethod(isolate, channel_wrap, "queryA", Query<QueryAWrap>); | |
| 475 | 475 | // ... | |
| 476 | 476 | SetProtoMethod(isolate, channel_wrap, "querySoa", Query<QuerySoaWrap>); | |
| 477 | - SetProtoMethod(isolate, channel_wrap, "getHostByAddr", Query<GetHostByAddrWrap>); | ||
| 477 | + SetProtoMethod(isolate, channel_wrap, "getHostByAddr", Query<QueryReverseWrap>); | ||
| 478 | 478 | ||
| 479 | 479 | SetProtoMethodNoSideEffect(isolate, channel_wrap, "getServers", GetServers); | |
| 480 | 480 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1612,7 +1612,7 @@ Maybe<int> SoaTraits::Parse(QuerySoaWrap* wrap, | |||
| 1612 | 1612 | return Just<int>(ARES_SUCCESS); | |
| 1613 | 1613 | } | |
| 1614 | 1614 | ||
| 1615 | - int ReverseTraits::Send(GetHostByAddrWrap* wrap, const char* name) { | ||
| 1615 | + int ReverseTraits::Send(QueryReverseWrap* wrap, const char* name) { | ||
| 1616 | 1616 | int length, family; | |
| 1617 | 1617 | char address_buffer[sizeof(struct in6_addr)]; | |
| 1618 | 1618 | ||
@@ -1631,17 +1631,16 @@ int ReverseTraits::Send(GetHostByAddrWrap* wrap, const char* name) { | |||
| 1631 | 1631 | "name", TRACE_STR_COPY(name), | |
| 1632 | 1632 | "family", family == AF_INET ? "ipv4" : "ipv6"); | |
| 1633 | 1633 | ||
| 1634 | - ares_gethostbyaddr( | ||
| 1635 | - wrap->channel()->cares_channel(), | ||
| 1636 | - address_buffer, | ||
| 1637 | - length, | ||
| 1638 | - family, | ||
| 1639 | - GetHostByAddrWrap::Callback, | ||
| 1640 | - wrap->MakeCallbackPointer()); | ||
| 1634 | + ares_gethostbyaddr(wrap->channel()->cares_channel(), | ||
| 1635 | + address_buffer, | ||
| 1636 | + length, | ||
| 1637 | + family, | ||
| 1638 | + QueryReverseWrap::Callback, | ||
| 1639 | + wrap->MakeCallbackPointer()); | ||
| 1641 | 1640 | return ARES_SUCCESS; | |
| 1642 | 1641 | } | |
| 1643 | 1642 | ||
| 1644 | - Maybe<int> ReverseTraits::Parse(GetHostByAddrWrap* wrap, | ||
| 1643 | + Maybe<int> ReverseTraits::Parse(QueryReverseWrap* wrap, | ||
| 1645 | 1644 | const std::unique_ptr<ResponseData>& response) { | |
| 1646 | 1645 | if (!response->is_host) [[unlikely]] { | |
| 1647 | 1646 | return Just<int>(ARES_EBADRESP); | |
@@ -2220,21 +2219,10 @@ void Initialize(Local<Object> target, | |||
| 2220 | 2219 | ChannelWrap::kInternalFieldCount); | |
| 2221 | 2220 | channel_wrap->Inherit(AsyncWrap::GetConstructorTemplate(env)); | |
| 2222 | 2221 | ||
| 2223 | - SetProtoMethod(isolate, channel_wrap, "queryAny", Query<QueryAnyWrap>); | ||
| 2224 | - SetProtoMethod(isolate, channel_wrap, "queryA", Query<QueryAWrap>); | ||
| 2225 | - SetProtoMethod(isolate, channel_wrap, "queryAaaa", Query<QueryAaaaWrap>); | ||
| 2226 | - SetProtoMethod(isolate, channel_wrap, "queryCaa", Query<QueryCaaWrap>); | ||
| 2227 | - SetProtoMethod(isolate, channel_wrap, "queryCname", Query<QueryCnameWrap>); | ||
| 2228 | - SetProtoMethod(isolate, channel_wrap, "queryMx", Query<QueryMxWrap>); | ||
| 2229 | - SetProtoMethod(isolate, channel_wrap, "queryNs", Query<QueryNsWrap>); | ||
| 2230 | - SetProtoMethod(isolate, channel_wrap, "queryTlsa", Query<QueryTlsaWrap>); | ||
| 2231 | - SetProtoMethod(isolate, channel_wrap, "queryTxt", Query<QueryTxtWrap>); | ||
| 2232 | - SetProtoMethod(isolate, channel_wrap, "querySrv", Query<QuerySrvWrap>); | ||
| 2233 | - SetProtoMethod(isolate, channel_wrap, "queryPtr", Query<QueryPtrWrap>); | ||
| 2234 | - SetProtoMethod(isolate, channel_wrap, "queryNaptr", Query<QueryNaptrWrap>); | ||
| 2235 | - SetProtoMethod(isolate, channel_wrap, "querySoa", Query<QuerySoaWrap>); | ||
| 2236 | - SetProtoMethod( | ||
| 2237 | - isolate, channel_wrap, "getHostByAddr", Query<GetHostByAddrWrap>); | ||
| 2222 | + #define V(Name, _, JS) \ | ||
| 2223 | + SetProtoMethod(isolate, channel_wrap, #JS, Query<Query##Name##Wrap>); | ||
| 2224 | + QUERY_TYPES(V) | ||
| 2225 | + #undef V | ||
| 2238 | 2226 | ||
| 2239 | 2227 | SetProtoMethodNoSideEffect(isolate, channel_wrap, "getServers", GetServers); | |
| 2240 | 2228 | SetProtoMethod(isolate, channel_wrap, "setServers", SetServers); | |
@@ -2252,20 +2240,9 @@ void RegisterExternalReferences(ExternalReferenceRegistry* registry) { | |||
| 2252 | 2240 | registry->Register(StrError); | |
| 2253 | 2241 | registry->Register(ChannelWrap::New); | |
| 2254 | 2242 | ||
| 2255 | - registry->Register(Query<QueryAnyWrap>); | ||
| 2256 | - registry->Register(Query<QueryAWrap>); | ||
| 2257 | - registry->Register(Query<QueryAaaaWrap>); | ||
| 2258 | - registry->Register(Query<QueryCaaWrap>); | ||
| 2259 | - registry->Register(Query<QueryCnameWrap>); | ||
| 2260 | - registry->Register(Query<QueryMxWrap>); | ||
| 2261 | - registry->Register(Query<QueryNsWrap>); | ||
| 2262 | - registry->Register(Query<QueryTlsaWrap>); | ||
| 2263 | - registry->Register(Query<QueryTxtWrap>); | ||
| 2264 | - registry->Register(Query<QuerySrvWrap>); | ||
| 2265 | - registry->Register(Query<QueryPtrWrap>); | ||
| 2266 | - registry->Register(Query<QueryNaptrWrap>); | ||
| 2267 | - registry->Register(Query<QuerySoaWrap>); | ||
| 2268 | - registry->Register(Query<GetHostByAddrWrap>); | ||
| 2243 | + #define V(Name, _, __) registry->Register(Query<Query##Name##Wrap>); | ||
| 2244 | + QUERY_TYPES(V) | ||
| 2245 | + #undef V | ||
| 2269 | 2246 | ||
| 2270 | 2247 | registry->Register(GetServers); | |
| 2271 | 2248 | registry->Register(SetServers); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -406,119 +406,38 @@ class QueryWrap final : public AsyncWrap { | |||
| 406 | 406 | QueryWrap<Traits>** callback_ptr_ = nullptr; | |
| 407 | 407 | }; | |
| 408 | 408 | ||
| 409 | - struct AnyTraits final { | ||
| 410 | - static constexpr const char* name = "resolveAny"; | ||
| 411 | - static int Send(QueryWrap<AnyTraits>* wrap, const char* name); | ||
| 412 | - static v8::Maybe<int> Parse(QueryWrap<AnyTraits>* wrap, | ||
| 413 | - const std::unique_ptr<ResponseData>& response); | ||
| 414 | - }; | ||
| 415 | - | ||
| 416 | - struct ATraits final { | ||
| 417 | - static constexpr const char* name = "resolve4"; | ||
| 418 | - static int Send(QueryWrap<ATraits>* wrap, const char* name); | ||
| 419 | - static v8::Maybe<int> Parse(QueryWrap<ATraits>* wrap, | ||
| 420 | - const std::unique_ptr<ResponseData>& response); | ||
| 421 | - }; | ||
| 422 | - | ||
| 423 | - struct AaaaTraits final { | ||
| 424 | - static constexpr const char* name = "resolve6"; | ||
| 425 | - static int Send(QueryWrap<AaaaTraits>* wrap, const char* name); | ||
| 426 | - static v8::Maybe<int> Parse(QueryWrap<AaaaTraits>* wrap, | ||
| 427 | - const std::unique_ptr<ResponseData>& response); | ||
| 428 | - }; | ||
| 429 | - | ||
| 430 | - struct CaaTraits final { | ||
| 431 | - static constexpr const char* name = "resolveCaa"; | ||
| 432 | - static int Send(QueryWrap<CaaTraits>* wrap, const char* name); | ||
| 433 | - static v8::Maybe<int> Parse(QueryWrap<CaaTraits>* wrap, | ||
| 434 | - const std::unique_ptr<ResponseData>& response); | ||
| 435 | - }; | ||
| 436 | - | ||
| 437 | - struct CnameTraits final { | ||
| 438 | - static constexpr const char* name = "resolveCname"; | ||
| 439 | - static int Send(QueryWrap<CnameTraits>* wrap, const char* name); | ||
| 440 | - static v8::Maybe<int> Parse(QueryWrap<CnameTraits>* wrap, | ||
| 441 | - const std::unique_ptr<ResponseData>& response); | ||
| 442 | - }; | ||
| 443 | - | ||
| 444 | - struct MxTraits final { | ||
| 445 | - static constexpr const char* name = "resolveMx"; | ||
| 446 | - static int Send(QueryWrap<MxTraits>* wrap, const char* name); | ||
| 447 | - static v8::Maybe<int> Parse(QueryWrap<MxTraits>* wrap, | ||
| 448 | - const std::unique_ptr<ResponseData>& response); | ||
| 449 | - }; | ||
| 450 | - | ||
| 451 | - struct NsTraits final { | ||
| 452 | - static constexpr const char* name = "resolveNs"; | ||
| 453 | - static int Send(QueryWrap<NsTraits>* wrap, const char* name); | ||
| 454 | - static v8::Maybe<int> Parse(QueryWrap<NsTraits>* wrap, | ||
| 455 | - const std::unique_ptr<ResponseData>& response); | ||
| 456 | - }; | ||
| 457 | - | ||
| 458 | - struct TlsaTraits final { | ||
| 459 | - static constexpr const char* name = "resolveTlsa"; | ||
| 460 | - static int Send(QueryWrap<TlsaTraits>* wrap, const char* name); | ||
| 461 | - static v8::Maybe<int> Parse(QueryWrap<TlsaTraits>* wrap, | ||
| 462 | - const std::unique_ptr<ResponseData>& response); | ||
| 463 | - }; | ||
| 464 | - | ||
| 465 | - struct TxtTraits final { | ||
| 466 | - static constexpr const char* name = "resolveTxt"; | ||
| 467 | - static int Send(QueryWrap<TxtTraits>* wrap, const char* name); | ||
| 468 | - static v8::Maybe<int> Parse(QueryWrap<TxtTraits>* wrap, | ||
| 469 | - const std::unique_ptr<ResponseData>& response); | ||
| 470 | - }; | ||
| 471 | - | ||
| 472 | - struct SrvTraits final { | ||
| 473 | - static constexpr const char* name = "resolveSrv"; | ||
| 474 | - static int Send(QueryWrap<SrvTraits>* wrap, const char* name); | ||
| 475 | - static v8::Maybe<int> Parse(QueryWrap<SrvTraits>* wrap, | ||
| 476 | - const std::unique_ptr<ResponseData>& response); | ||
| 477 | - }; | ||
| 478 | - | ||
| 479 | - struct PtrTraits final { | ||
| 480 | - static constexpr const char* name = "resolvePtr"; | ||
| 481 | - static int Send(QueryWrap<PtrTraits>* wrap, const char* name); | ||
| 482 | - static v8::Maybe<int> Parse(QueryWrap<PtrTraits>* wrap, | ||
| 483 | - const std::unique_ptr<ResponseData>& response); | ||
| 484 | - }; | ||
| 485 | - | ||
| 486 | - struct NaptrTraits final { | ||
| 487 | - static constexpr const char* name = "resolveNaptr"; | ||
| 488 | - static int Send(QueryWrap<NaptrTraits>* wrap, const char* name); | ||
| 489 | - static v8::Maybe<int> Parse(QueryWrap<NaptrTraits>* wrap, | ||
| 490 | - const std::unique_ptr<ResponseData>& response); | ||
| 491 | - }; | ||
| 492 | - | ||
| 493 | - struct SoaTraits final { | ||
| 494 | - static constexpr const char* name = "resolveSoa"; | ||
| 495 | - static int Send(QueryWrap<SoaTraits>* wrap, const char* name); | ||
| 496 | - static v8::Maybe<int> Parse(QueryWrap<SoaTraits>* wrap, | ||
| 497 | - const std::unique_ptr<ResponseData>& response); | ||
| 498 | - }; | ||
| 499 | - | ||
| 500 | - struct ReverseTraits final { | ||
| 501 | - static constexpr const char* name = "reverse"; | ||
| 502 | - static int Send(QueryWrap<ReverseTraits>* wrap, const char* name); | ||
| 503 | - static v8::Maybe<int> Parse(QueryWrap<ReverseTraits>* wrap, | ||
| 504 | - const std::unique_ptr<ResponseData>& response); | ||
| 505 | - }; | ||
| 506 | - | ||
| 507 | - using QueryAnyWrap = QueryWrap<AnyTraits>; | ||
| 508 | - using QueryAWrap = QueryWrap<ATraits>; | ||
| 509 | - using QueryAaaaWrap = QueryWrap<AaaaTraits>; | ||
| 510 | - using QueryCaaWrap = QueryWrap<CaaTraits>; | ||
| 511 | - using QueryCnameWrap = QueryWrap<CnameTraits>; | ||
| 512 | - using QueryMxWrap = QueryWrap<MxTraits>; | ||
| 513 | - using QueryNsWrap = QueryWrap<NsTraits>; | ||
| 514 | - using QueryTlsaWrap = QueryWrap<TlsaTraits>; | ||
| 515 | - using QueryTxtWrap = QueryWrap<TxtTraits>; | ||
| 516 | - using QuerySrvWrap = QueryWrap<SrvTraits>; | ||
| 517 | - using QueryPtrWrap = QueryWrap<PtrTraits>; | ||
| 518 | - using QueryNaptrWrap = QueryWrap<NaptrTraits>; | ||
| 519 | - using QuerySoaWrap = QueryWrap<SoaTraits>; | ||
| 520 | - using GetHostByAddrWrap = QueryWrap<ReverseTraits>; | ||
| 521 | - | ||
| 409 | + #define QUERY_TYPES(V) \ | ||
| 410 | + V(Reverse, reverse, getHostByAddr) \ | ||
| 411 | + V(A, resolve4, queryA) \ | ||
| 412 | + V(Any, resolveAny, queryAny) \ | ||
| 413 | + V(Aaaa, resolve6, queryAaaa) \ | ||
| 414 | + V(Caa, resolveCaa, queryCaa) \ | ||
| 415 | + V(Cname, resolveCname, queryCname) \ | ||
| 416 | + V(Mx, resolveMx, queryMx) \ | ||
| 417 | + V(Naptr, resolveNaptr, queryNaptr) \ | ||
| 418 | + V(Ns, resolveNs, queryNs) \ | ||
| 419 | + V(Ptr, resolvePtr, queryPtr) \ | ||
| 420 | + V(Srv, resolveSrv, querySrv) \ | ||
| 421 | + V(Soa, resolveSoa, querySoa) \ | ||
| 422 | + V(Tlsa, resolveTlsa, queryTlsa) \ | ||
| 423 | + V(Txt, resolveTxt, queryTxt) | ||
| 424 | + | ||
| 425 | + // All query type handlers share the same basic structure, so we can simplify | ||
| 426 | + // the code a bit by using a macro to define that structure. | ||
| 427 | + #define TYPE_TRAITS(Name, label) \ | ||
| 428 | + struct Name##Traits final { \ | ||
| 429 | + static constexpr const char* name = #label; \ | ||
| 430 | + static int Send(QueryWrap<Name##Traits>* wrap, const char* name); \ | ||
| 431 | + static v8::Maybe<int> Parse( \ | ||
| 432 | + QueryWrap<Name##Traits>* wrap, \ | ||
| 433 | + const std::unique_ptr<ResponseData>& response); \ | ||
| 434 | + }; \ | ||
| 435 | + using Query##Name##Wrap = QueryWrap<Name##Traits>; | ||
| 436 | + | ||
| 437 | + #define V(NAME, LABEL, _) TYPE_TRAITS(NAME, LABEL) | ||
| 438 | + QUERY_TYPES(V) | ||
| 439 | + #undef V | ||
| 440 | + #undef TYPE_TRAITS | ||
| 522 | 441 | } // namespace cares_wrap | |
| 523 | 442 | } // namespace node | |
| 524 | 443 | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments