]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/socketengine.h
Clean up the protocol interface
[user/henk/code/inspircd.git] / include / socketengine.h
index 58af73589fd0fd121b06a3f341f6f18e2a894580..8e4c3dfc9e3dbf5dca98ae2a86b276b63c15502e 100644 (file)
@@ -20,8 +20,7 @@
  */
 
 
-#ifndef SOCKETENGINE_H
-#define SOCKETENGINE_H
+#pragma once
 
 #include <vector>
 #include <string>
@@ -489,9 +488,24 @@ public:
        /** Get data transfer statistics, kilobits per second in and out and total.
         */
        void GetStats(float &kbitpersec_in, float &kbitpersec_out, float &kbitpersec_total);
+
+       /** Should we ignore the error in errno?
+        * Checks EAGAIN and WSAEWOULDBLOCK
+        */
+       static bool IgnoreError();
 };
 
-SocketEngine* CreateSocketEngine();
+inline bool SocketEngine::IgnoreError()
+{
+       if ((errno == EAGAIN) || (errno == EWOULDBLOCK))
+               return true;
 
+#ifdef _WIN32
+       if (WSAGetLastError() == WSAEWOULDBLOCK)
+               return true;
 #endif
 
+       return false;
+}
+
+SocketEngine* CreateSocketEngine();