wangzhengquan
2021-01-18 01e202b60cc8aceb65fd6c82949e2a2b08142f8c
ADD EBUS_NET
3个文件已修改
26 ■■■■ 已修改文件
src/bus_error.cpp 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/bus_error.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/socket/net_mod_socket.cpp 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/bus_error.cpp
@@ -13,9 +13,10 @@
static char *_bus_errlist[_bus_nerr] = {
  "\0",
  "timeout",
  "Timeout",
  "The other end is not inline",
  "Key already in use"
  "Key already in use",
  "Network fault"
};
@@ -43,7 +44,7 @@
{
  int s, eindex;
  char *buf;
  eindex = err - 10000;
  eindex = err - EBUS_BASE;
  /* Make first caller allocate key for thread-specific data */
  s = pthread_once(&once, createKey);
src/bus_error.h
@@ -8,6 +8,7 @@
#define EBUS_TIMEOUT 10001
#define EBUS_CLOSED 10002
#define EBUS_KEY_INUSED 10003
#define EBUS_NET 10004
extern int bus_errno;
src/socket/net_mod_socket.cpp
@@ -240,12 +240,12 @@
            mpool->conns[i].fd = -1;
            
          }
          else if(n == -1)  {
          else if(n == EBUS_NET)  {
            // 网络错误
            mpool->closeConn( connfd);
            // mpool->conns[i].fd = -1;
          } else {
            // 对方key是关闭的
            // 代理服务没有转发成功
             mpool->conns[i].fd = -1;
          }
@@ -263,7 +263,6 @@
// printf("poll POLLERR %d\n", connfd);
          mpool->nready--;
          mpool->closeConn( connfd);
          // mpool->conns[i].fd = -1;
        }
      }
    }
@@ -274,7 +273,6 @@
    if ( (connfd = mpool->conns[i].fd) > 0 ) {
      // 关闭并清除写入或读取失败的连接
      mpool->closeConn( connfd);
      // mpool->conns[i].fd = -1;
    }
  }
@@ -411,11 +409,11 @@
            mpool->conns[i].fd = -1;
            n_pub_suc++;
          } 
          else if(ret == -1)  {
          else if(ret == EBUS_NET)  {
            // 网络连接错误
             mpool->closeConn( connfd);
          } else {
            // 对方的key是关闭的
            // 代理服务没有转发成功
            mpool->conns[i].fd = -1;
          }
          n_resp++;
@@ -693,7 +691,7 @@
}
/**
 * @return 0 成功, 1 对方没有对应的key, -1 网络错误
 * @return 0 成功,   EBUS_NET 网络错误, 其他值 代理服务没有转发成功。
 *
 */
int NetModSocket::read_response(int connfd, net_mod_recv_msg_t *recv_msg) {
@@ -712,7 +710,7 @@
// printf(">>>> read_response %s\n", response_head.host);
  if(response_head.code != 0) {
    // 代理服务没能成功发送给对应的key
    return 1;
    return response_head.code;
  }
  recv_buf = malloc(response_head.content_length);
@@ -722,8 +720,8 @@
  }
  if ( (recv_size = rio_readn(connfd, recv_buf, response_head.content_length) ) !=  response_head.content_length) {
    LoggerFactory::getLogger()->error(errno, "NetModSocket::read_response  rio_readnb recv_buf");
    return -1;
    //网络错误
    return EBUS_NET;
  }
  strcpy( recv_msg->host, response_head.host);