소스 검색

add hio_create_ssl_server hio_create_ssl_client

hewei.it 4 년 전
부모
커밋
33217c18cb
3개의 변경된 파일24개의 추가작업 그리고 1개의 파일을 삭제
  1. 15 0
      event/hloop.c
  2. 8 0
      event/hloop.h
  3. 1 1
      event/nio.c

+ 15 - 0
event/hloop.c

@@ -932,6 +932,21 @@ hio_t* hloop_create_tcp_client (hloop_t* loop, const char* host, int port, hconn
     return io;
 }
 
+hio_t* hloop_create_ssl_server (hloop_t* loop, const char* host, int port, haccept_cb accept_cb) {
+    hio_t* io = hloop_create_tcp_server(loop, host, port, accept_cb);
+    if (io == NULL) return NULL;
+    hio_enable_ssl(io);
+    return io;
+}
+
+hio_t* hloop_create_ssl_client (hloop_t* loop, const char* host, int port, hconnect_cb connect_cb) {
+    hio_t* io = hio_create(loop, host, port, SOCK_STREAM);
+    if (io == NULL) return NULL;
+    hio_enable_ssl(io);
+    hconnect(loop, io->fd, connect_cb);
+    return io;
+}
+
 hio_t* hloop_create_udp_server(hloop_t* loop, const char* host, int port) {
     int bindfd = Bind(port, host, SOCK_DGRAM);
     if (bindfd < 0) {

+ 8 - 0
event/hloop.h

@@ -294,6 +294,7 @@ HV_EXPORT hio_t* hsendto   (hloop_t* loop, int sockfd, const void* buf, size_t l
 //-----------------top-level apis---------------------------------------------
 // Resolver -> socket -> hio_get
 HV_EXPORT hio_t* hio_create(hloop_t* loop, const char* host, int port, int type DEFAULT(SOCK_STREAM));
+
 // @tcp_server: socket -> bind -> listen -> haccept
 // @see examples/tcp_echo_server.c
 HV_EXPORT hio_t* hloop_create_tcp_server (hloop_t* loop, const char* host, int port, haccept_cb accept_cb);
@@ -301,6 +302,13 @@ HV_EXPORT hio_t* hloop_create_tcp_server (hloop_t* loop, const char* host, int p
 // @see examples/nc.c
 HV_EXPORT hio_t* hloop_create_tcp_client (hloop_t* loop, const char* host, int port, hconnect_cb connect_cb);
 
+// @ssl_server: hloop_create_tcp_server -> hio_enable_ssl
+// @see examples/tcp_echo_server.c => #define TEST_SSL 1
+HV_EXPORT hio_t* hloop_create_ssl_server (hloop_t* loop, const char* host, int port, haccept_cb accept_cb);
+// @ssl_client: hio_create(loop, host, port, SOCK_STREAM) -> hio_enable_ssl -> hconnect
+// @see examples/nc.c => #define TEST_SSL 1
+HV_EXPORT hio_t* hloop_create_ssl_client (hloop_t* loop, const char* host, int port, hconnect_cb connect_cb);
+
 // @udp_server: socket -> bind -> hio_get
 // @see examples/udp_echo_server.c
 HV_EXPORT hio_t* hloop_create_udp_server (hloop_t* loop, const char* host, int port);

+ 1 - 1
event/nio.c

@@ -447,7 +447,7 @@ int hio_connect(hio_t* io) {
     }
     if (ret == 0) {
         // connect ok
-        __connect_cb(io);
+        nio_connect(io);
         return 0;
     }
     int timeout = io->connect_timeout ? io->connect_timeout : HIO_DEFAULT_CONNECT_TIMEOUT;