Pārlūkot izejas kodu

Add hio_is_connected

ithewei 3 gadi atpakaļ
vecāks
revīzija
45adbc1c32
3 mainītis faili ar 11 papildinājumiem un 0 dzēšanām
  1. 9 0
      event/hevent.c
  2. 1 0
      event/hevent.h
  3. 1 0
      event/hloop.h

+ 9 - 0
event/hevent.c

@@ -88,6 +88,7 @@ void hio_ready(hio_t* io) {
     if (io->ready) return;
     // flags
     io->ready = 1;
+    io->connected = 0;
     io->closed = 0;
     io->accept = io->connect = io->connectex = 0;
     io->recv = io->send = 0;
@@ -204,6 +205,11 @@ bool hio_is_opened(hio_t* io) {
     return io->ready == 1 && io->closed == 0;
 }
 
+bool hio_is_connected(hio_t* io) {
+    if (io == NULL) return false;
+    return io->ready == 1 && io->connected == 1 && io->closed == 0;
+}
+
 bool hio_is_closed(hio_t* io) {
     if (io == NULL) return true;
     return io->ready == 0 && io->closed == 1;
@@ -312,6 +318,7 @@ void hio_connect_cb(hio_t* io) {
             SOCKADDR_STR(io->localaddr, localaddrstr),
             SOCKADDR_STR(io->peeraddr, peeraddrstr));
     */
+    io->connected = 1;
     if (io->connect_cb) {
         // printd("connect_cb------\n");
         io->connect_cb(io);
@@ -419,6 +426,8 @@ void hio_write_cb(hio_t* io, const void* buf, int len) {
 }
 
 void hio_close_cb(hio_t* io) {
+    io->connected = 0;
+    io->closed = 1;
     if (io->close_cb) {
         // printd("close_cb------\n");
         io->close_cb(io);

+ 1 - 0
event/hevent.h

@@ -103,6 +103,7 @@ struct hio_s {
     HEVENT_FIELDS
     // flags
     unsigned    ready       :1;
+    unsigned    connected   :1;
     unsigned    closed      :1;
     unsigned    accept      :1;
     unsigned    connect     :1;

+ 1 - 0
event/hloop.h

@@ -271,6 +271,7 @@ HV_EXPORT struct sockaddr* hio_peeraddr (hio_t* io);
 HV_EXPORT void hio_set_context(hio_t* io, void* ctx);
 HV_EXPORT void* hio_context(hio_t* io);
 HV_EXPORT bool hio_is_opened(hio_t* io);
+HV_EXPORT bool hio_is_connected(hio_t* io);
 HV_EXPORT bool hio_is_closed(hio_t* io);
 
 // iobuf