ソースを参照

Added destructor code to avoid throwing exceptions while cleaning up any sockets. Destructors should not throw exceptions and socket handles should always be closed even if no connections were made.

git-svn-id: https://svn.microneil.com/svn/CodeDweller/trunk@23 d34b734f-a00e-4b39-a726-e4eeb87269ab
wx
madscientist 12年前
コミット
27a67ba88f
1個のファイルの変更7行の追加5行の削除
  1. 7
    5
      networking.inline.hpp

+ 7
- 5
networking.inline.hpp ファイルの表示

} }


inline Socket::~Socket() { // When shutting down, be sure inline Socket::~Socket() { // When shutting down, be sure
if(isOpen()) close(); // any open socket is closed.
if(INVALID_SOCKET != Handle) { // any open socket is closed without
Network.closeSocket(Handle); // throwing any exceptions.
}
} }


inline void Socket::close() { // When we close, inline void Socket::close() { // When we close,
} }


inline TCPClient::~TCPClient() { // When destroying a TCPClient inline TCPClient::~TCPClient() { // When destroying a TCPClient
if(isOpen()) close(); // Close when being destroyed.
try{ if(isOpen()) close(); } catch(...) {} // silently close any open connections.
} }


inline void TCPClient::open() { // We provide open() as unsupported. inline void TCPClient::open() { // We provide open() as unsupported.
//// class TCPHost ///////////////////////////////////////////////////////////// //// class TCPHost /////////////////////////////////////////////////////////////


inline TCPHost::~TCPHost() { // When destroying a TCPHost inline TCPHost::~TCPHost() { // When destroying a TCPHost
if(isOpen()) close(); // Close when being destroyed.
try{ if(isOpen()) close(); } catch(...) {} // silently close any open connection.
} }


inline bool TCPHost::ReadBufferIsEmpty() { // True if the ReadBuffer is empty. inline bool TCPHost::ReadBufferIsEmpty() { // True if the ReadBuffer is empty.


//// class TCPListener ///////////////////////////////////////////////////////// //// class TCPListener /////////////////////////////////////////////////////////


inline TCPListener::~TCPListener() { // Close when deleting.
close();
inline TCPListener::~TCPListener() { // When destroying a TCPListener
try{ close(); } catch(...) {} // silently close if not already done.
} }

読み込み中…
キャンセル
保存