wangzhengquan
2021-02-08 82841486c36288d73e95f3316e91dd7a522d8602
src/bus_error.cpp
@@ -13,9 +13,14 @@
static char *_bus_errlist[_bus_nerr] = {
  "\0",
  "timeout",
  "Timed out",
  "The other end is not inline",
  "Key already in use"
  "Key already in use",
  "Network fault",
  "Send to self error",
  "Receive from wrong end",
  "Service stoped",
  "Exceed resource limit"
};
@@ -43,7 +48,6 @@
{
  int s;
  char *buf;
  /* Make first caller allocate key for thread-specific data */
  s = pthread_once(&once, createKey);
@@ -64,14 +68,31 @@
      err_exit(s, "pthread_setspecific");
  }
  if (err < 0 || err >= _bus_nerr || _bus_errlist[err] == NULL)
  {
    snprintf(buf, MAX_ERROR_LEN, "Unknown error %d", err);
  }
  else
  {
    strncpy(buf, _bus_errlist[err], MAX_ERROR_LEN - 1);
    buf[MAX_ERROR_LEN - 1] = '\0';          /* Ensure null termination */
  if(err < EBUS_BASE) {
    // libc错误
    if (err < 0 || err >= _sys_nerr || _sys_errlist[err] == NULL)
    {
      snprintf(buf, MAX_ERROR_LEN, "Unknown error %d", err);
    }
    else
    {
      strncpy(buf, _sys_errlist[err], MAX_ERROR_LEN - 1);
      buf[MAX_ERROR_LEN - 1] = '\0';          /* Ensure null termination */
    }
  } else {
    //自定义错误
    err -= EBUS_BASE;
    if (err < 0 || err >= _bus_nerr || _bus_errlist[err] == NULL)
    {
      snprintf(buf, MAX_ERROR_LEN, "Unknown error %d", err);
    }
    else
    {
      strncpy(buf, _bus_errlist[err], MAX_ERROR_LEN - 1);
      buf[MAX_ERROR_LEN - 1] = '\0';          /* Ensure null termination */
    }
  }
  return buf;