+// Conditionally make the socket non-blocking for the lifetime of this object.
+class wxSocketUnblocker
+{
+public:
+ wxSocketUnblocker(GSocket *socket, bool unblock = true)
+ : m_socket(socket),
+ m_unblock(unblock)
+ {
+ if ( m_unblock )
+ m_socket->SetNonBlocking(true);
+ }
+
+ ~wxSocketUnblocker()
+ {
+ if ( m_unblock )
+ m_socket->SetNonBlocking(false);
+ }
+
+private:
+ GSocket * const m_socket;
+ bool m_unblock;
+
+ DECLARE_NO_COPY_CLASS(wxSocketUnblocker)
+};
+