2
0

Dns.hx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package eval.luv;
  2. @:forward
  3. abstract AddrInfoRequest(Request) to Request {}
  4. typedef AddrInfo = {
  5. var family:SockAddr.AddressFamily;
  6. var sockType:SockAddr.SocketType;
  7. var protocol:Int;
  8. var addr:SockAddr;
  9. var ?canonName:String;
  10. }
  11. typedef AddrInfoOptions = {
  12. var ?request:AddrInfoRequest;
  13. var ?family:SockAddr.AddressFamily;
  14. var ?sockType:SockAddr.SocketType;
  15. var ?protocol:Int;
  16. var ?flags:Array<AddrInfoFlag>;
  17. }
  18. enum abstract AddrInfoFlag(Int) {
  19. var PASSIVE = 0;
  20. var CANONNAME = 1;
  21. var NUMERICHOST = 2;
  22. var NUMERICSERV = 3;
  23. var V4MAPPED = 4;
  24. var ALL = 5;
  25. var ADDRCONFIG = 6;
  26. }
  27. @:forward
  28. abstract NameInfoRequest(Request) to Request {}
  29. enum abstract NameInfoFlag(Int) {
  30. var NAMEREQD = 0;
  31. var DGRAM = 1;
  32. var NOFQDN = 2;
  33. var NUMERICHOST = 3;
  34. var NUMERICSERV = 4;
  35. }
  36. typedef NameInfoOptions = {
  37. var ?request:NameInfoRequest;
  38. var ?flags:Array<NameInfoFlag>;
  39. }
  40. /**
  41. DNS queries.
  42. @see https://aantron.github.io/luv/luv/Luv/Dns
  43. **/
  44. extern class Dns {
  45. static function createAddrRequest():AddrInfoRequest;
  46. static function createNameRequest():NameInfoRequest;
  47. /**
  48. Retrieves addresses.
  49. Either `node` or `service` may be `null` but not both.
  50. **/
  51. static function getAddrInfo(loop:Loop, node:Null<String>, service:Null<String>, ?options:AddrInfoOptions, callback:(result:Result<Array<AddrInfo>>)->Void):Void;
  52. /**
  53. Retrieves host names.
  54. **/
  55. static function getNameInfo(loop:Loop, addr:SockAddr, ?options:NameInfoOptions, callback:(result:Result<{hostName:String, service:String}>)->Void):Void;
  56. }