erlang网络库
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

82 rindas
3.7 KiB

pirms 5 gadiem
  1. -define(nlTcpMgrSup, nlTcpMgrSup).
  2. -define(nlSslMgrSup, nlSslMgrSup).
  3. -define(nlUdpMgrSup, nlUdpMgrSup).
  4. -define(nlDtlsMgrSup, nlDtlsMgrSup).
  5. -define(miSockReady, miSockReady).
  6. -define(WARN(Tag, Format, Data), nlNetCom:warnMsg(Tag, Format, Data)).
  7. -define(getListValue(Key, List, Default), nlNetCom:getListValue(Key, List, Default)).
  8. -define(SSL_CLOSE_TIMEOUT, 5000).
  9. -define(SSL_HANDSHAKE_TIMEOUT, 15000).
  10. -define(PROXY_RECV_TIMEOUT, 5000).
  11. -type(listenOpt() ::
  12. {acceptors, non_neg_integer()} |
  13. {tcpOpts, [gen_tcp:listen_option()]} |
  14. {sslOpts, [ssl:ssl_option()]} |
  15. {udpOpts, [gen_udp:option()]} |
  16. {dtlsOpts, [gen_udp:option() | ssl:ssl_option()]}).
  17. -type(listenOn() :: inet:port_number() | {host(), inet:port_number()}).
  18. %%--------------------------------------------------------------------
  19. %% SSL socket wrapper
  20. %%--------------------------------------------------------------------
  21. -record(ssl_socket, {tcp :: inet:socket(), ssl :: ssl:sslsocket()}).
  22. -define(IS_SSL(Sock), is_record(Sock, ssl_socket)).
  23. %% 令牌桶相关定义
  24. -record(tokenBucket, {
  25. rate :: pos_integer() %% 速率
  26. , tokens :: non_neg_integer() %% 剩余tokens数量
  27. , lastTime :: pos_integer() %% 最后一次更新访问时间单位毫秒
  28. , bucketSize :: pos_integer() %% 桶大小 可以容纳的令牌数量
  29. }).
  30. %%--------------------------------------------------------------------
  31. %% Proxy-Protocol Socket Wrapper
  32. %%--------------------------------------------------------------------
  33. -export_type([listenOn/0]).
  34. -type(proto() :: atom()).
  35. -type(transport() :: module()).
  36. -type(udp_transport() :: {udp | dtls, pid(), inet:socket()}).
  37. -type(socket() :: esockd_transport:socket()).
  38. -type(mfargs() :: atom() | {atom(), atom()} | {module(), atom(), [term()]}).
  39. -type(sock_fun() :: fun((esockd_transport:socket()) -> {ok, esockd_transport:socket()} | {error, term()})).
  40. -type(host() :: inet:ip_address() | string()).
  41. -type(listen_on() :: inet:port_number() | {host(), inet:port_number()}).
  42. -type(pp2_additional_ssl_field() :: {pp2_ssl_client, boolean()}
  43. | {pp2_ssl_client_cert_conn, boolean()}
  44. | {pp2_ssl_client_cert_sess, boolean()}
  45. | {pp2_ssl_verify, success | failed}
  46. | {pp2_ssl_version, binary()} % US-ASCII string
  47. | {pp2_ssl_cn, binary()} % UTF8-encoded string
  48. | {pp2_ssl_cipher, binary()} % US-ASCII string
  49. | {pp2_ssl_sig_alg, binary()} % US-ASCII string
  50. | {pp2_ssl_key_alg, binary()}).% US-ASCII string
  51. -type(pp2_additional_field() :: {pp2_alpn, binary()} % byte sequence
  52. | {pp2_authority, binary()} % UTF8-encoded string
  53. | {pp2_crc32c, integer()} % 32-bit number
  54. | {pp2_netns, binary()} % US-ASCII string
  55. | {pp2_ssl, list(pp2_additional_ssl_field())}).
  56. -record(proxy_socket, {inet :: inet4 | inet6 | 'unix' | 'unspec',
  57. socket :: inet:socket() | #ssl_socket{},
  58. src_addr :: inet:ip_address() | undefined,
  59. dst_addr :: inet:ip_address() | undefined,
  60. src_port :: inet:port_number() | undefined,
  61. dst_port :: inet:port_number() | undefined,
  62. %% Proxy protocol v2 addtional fields
  63. pp2_additional_info = [] :: list(pp2_additional_field())}).
  64. -define(IS_PROXY(Sock), is_record(Sock, proxy_socket)).