瀏覽代碼

*** empty log message ***

Mike Goslin 25 年之前
父節點
當前提交
5fe3777141
共有 2 個文件被更改,包括 209 次插入0 次删除
  1. 139 0
      panda/src/express/error_utils.cxx
  2. 70 0
      panda/src/express/error_utils.h

+ 139 - 0
panda/src/express/error_utils.cxx

@@ -0,0 +1,139 @@
+// Filename: error_utils.cxx
+// Created by:  mike (07Nov00)
+//
+////////////////////////////////////////////////////////////////////
+
+#include "error_utils.h"
+
+#include <errno.h>
+#if defined(WIN32_VC)
+  #include <winsock2.h>
+#endif
+
+////////////////////////////////////////////////////////////////////
+//     Function: handle_socket_error
+//  Description:
+////////////////////////////////////////////////////////////////////
+char*
+handle_socket_error(void) {
+#ifndef WIN32
+  return strerror(errno);
+#else
+  switch (WSAGetLastError()) {
+    case 10022:
+      return "An invalid argument was supplied";
+    case 10036:
+      return "A blocking operation is currently executing";
+    case 10040:
+      return "Message was larger than internal buffer or network limit";
+    case 10050:
+      return "Network dead";
+    case 10051:
+      return "Network unreachable";
+    case 10052:
+      return "Connection broken because keep-alive detected a failure";
+    case 10053:
+      return "Connection aborted by local host software";
+    case 10054:
+      return "Connection closed by remote host";
+    case 10055:
+      return "Out of buffer space or queue overflowed";
+    case 10057:
+      return "Socket was not connected";
+    case 10058:
+      return "Socket was previously shut down";
+    case 10060:
+      return "Connection timed out";
+    case 10061:
+      return "Connection refused by remote host";
+    case 10064:
+      return "Remote host is down";
+    case 10065:
+      return "Remote host is unreachable";
+    case 10093:
+      return "WSAStartup() was not called";
+    default:
+      return "Unknown WSA error";
+  }
+#endif
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: get_network_error
+//  Description:
+////////////////////////////////////////////////////////////////////
+int
+get_network_error(void) {
+#ifndef WIN32
+  return EU_error_abort;
+#else
+  switch (WSAGetLastError()) {
+    case 10050:
+      return EU_error_network_dead;
+    case 10051:
+      return EU_error_network_unreachable;
+    case 10052:
+    case 10057:
+    case 10058:
+      return EU_error_network_disconnected;
+    case 10053:
+      return EU_error_network_disconnected_locally;
+    case 10054:
+    case 10061:
+      return EU_error_network_remote_host_disconnected;
+    case 10055:
+      return EU_error_network_buffer_overflow;
+    case 10060:
+      return EU_error_network_timeout;
+    case 10064:
+      return EU_error_network_remote_host_down;
+    case 10065:
+      return EU_error_network_remote_host_unreachable;
+    case 10069:
+      return EU_error_network_disk_quota_exceeded;
+    case 11001:
+      return EU_error_network_remote_host_not_found;
+    case 11002:
+      return EU_error_network_remote_host_no_response;
+    default:
+      return EU_error_abort;
+  }
+#endif
+}
+
+////////////////////////////////////////////////////////////////////
+//     Function: get_write_error
+//  Description:
+////////////////////////////////////////////////////////////////////
+int
+get_write_error(void) {
+#ifndef WIN32
+  return EU_error_abort;
+#else
+  switch (errno) {
+    case 4:
+    case 18:
+      return EU_error_write_out_of_files;
+    case 8:
+    case 14:
+      return EU_error_write_out_of_memory;
+    case 20:
+      return EU_error_write_disk_not_found;
+    case 25:
+    case 27:
+      return EU_error_write_disk_sector_not_found;
+    case 29:
+    case 30:
+    case 31:
+      return EU_error_write_disk_fault;
+    case 32:
+    case 33:
+    case 36:
+      return EU_error_write_sharing_violation;
+    case 39:
+      return EU_error_write_disk_full;
+    default:
+      return EU_error_abort;
+  }
+#endif
+}

+ 70 - 0
panda/src/express/error_utils.h

@@ -0,0 +1,70 @@
+// Filename: error_utils.h
+// Created by:  mike (07Nov00)
+//
+////////////////////////////////////////////////////////////////////
+
+#ifndef ERROR_UTILS_H
+#define ERROR_UTILS_H
+
+#include <pandabase.h>
+#include "typedef.h"
+
+BEGIN_PUBLISH
+
+enum ErrorUtilCode {
+  EU_eof = 5,
+  EU_network_no_data = 4,
+
+  EU_ok = 3,
+  EU_write = 2,
+  EU_success = 1,
+
+  // General errors
+  EU_error_abort = -1,
+  EU_error_file_empty = -2,
+
+  // General network errors
+  EU_error_network_dead = -30,
+  EU_error_network_unreachable = -31,
+  EU_error_network_disconnected = -32,
+  EU_error_network_timeout = -33,
+  EU_error_network_no_data = -34,
+
+  // Local network errors
+  EU_error_network_disconnected_locally = -40,
+  EU_error_network_buffer_overflow = -41,
+  EU_error_network_disk_quota_exceeded = -42,
+
+  // Remote host network errors
+  EU_error_network_remote_host_disconnected = -50,
+  EU_error_network_remote_host_down = -51,
+  EU_error_network_remote_host_unreachable = -52,
+  EU_error_network_remote_host_not_found = -53,
+  EU_error_network_remote_host_no_response = -54,
+
+  // General local errors
+  EU_error_write_out_of_files = -60,
+  EU_error_write_out_of_memory = -61,
+  EU_error_write_sharing_violation = -62,
+  EU_error_write_disk_full = -63,
+  EU_error_write_disk_not_found = -64,
+  EU_error_write_disk_sector_not_found = -65,
+  EU_error_write_disk_fault = -66,
+
+  // HTTP errors
+  EU_error_http_server_timeout = -70,
+  EU_error_http_gateway_timeout = -71,
+  EU_error_http_service_unavailable = -72,
+
+  // Zlib errors
+  EU_error_zlib = -80,
+};
+
+EXPCL_PANDAEXPRESS char *handle_socket_error(void);
+EXPCL_PANDAEXPRESS int get_network_error(void);
+EXPCL_PANDAEXPRESS int get_write_error(void);
+
+END_PUBLISH
+
+#endif
+