]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/mac/carbon/gsockmac.h
adding an autorelease capability (got weird crashes when deleting tools from a toolba...
[wxWidgets.git] / include / wx / mac / carbon / gsockmac.h
index 6bb4a2aa71fe92ae01eda6d7abdc9c422684e0ad..de035d0d4011ae6393fcb702b7e28d152aeb2ee3 100644 (file)
@@ -1,8 +1,10 @@
 /* -------------------------------------------------------------------------
- * Project: GSocket (Generic Socket) for WX
- * Name:    gsockunx.h
- * Purpose: GSocket Macintosh header
- * CVSID:   $Id$
+ * Project:     GSocket (Generic Socket) for WX
+ * Name:        gsockunx.h
+ * Copyright:   (c) Guilhem Lavaux
+ * Licence:     wxWindows Licence
+ * Purpose:     GSocket Macintosh header
+ * CVSID:       $Id$
  * -------------------------------------------------------------------------
  */
 
 #include "gsocket.h"
 #endif
 
+#ifndef OTUNIXERRORS
 
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+#include <MacHeaders.c>
+#define OTUNIXERRORS 1
+// we get a conflict in OT headers otherwise :
+#undef EDEADLK
+#include <OpenTransport.h>
+#include <OpenTransportProviders.h>
+#include <OpenTptInternet.h>
 
-typedef GSocket* GSocketPtr ;
+#endif
 
 /* Definition of GSocket */
-struct _GSocket
+class GSocket
 {
+public:
+    GSocket();
+    ~GSocket();
+    bool IsOk() { return m_ok; }
+
+    void Shutdown();
+    GSocketError SetLocal(GAddress *address);
+    GSocketError SetPeer(GAddress *address);
+    GAddress *GetLocal();
+    GAddress *GetPeer();
+    GSocketError SetServer();
+    GSocket *WaitConnection();
+    bool SetReusable() { return false; }
+    GSocketError SetNonOriented();
+    GSocketError Connect(GSocketStream stream);
+    int Read(char *buffer, int size);
+    int Write(const char *buffer, int size);
+    GSocketEventFlags Select(GSocketEventFlags flags);
+    void SetNonBlocking(bool non_block);
+    void SetTimeout(unsigned long millisec);
+    GSocketError WXDLLIMPEXP_NET GetError();
+    void SetCallback(GSocketEventFlags flags,
+        GSocketCallback callback, char *cdata);
+    void UnsetCallback(GSocketEventFlags flags);
+    GSocketError GetSockOpt(int level, int optname, void *optval, int *optlen)
+    {   return GSOCK_INVOP; }
+    GSocketError SetSockOpt(int level, int optname,
+        const void *optval, int optlen)
+    {   return GSOCK_INVOP; }
+
+protected:
+    bool m_ok;
+
+    /* Input / Output */
+    GSocketError Input_Timeout();
+    GSocketError Output_Timeout();
+    int Recv_Stream(char *buffer, int size);
+    int Recv_Dgram(char *buffer, int size);
+    int Send_Stream(const char *buffer, int size);
+    int Send_Dgram(const char *buffer, int size);
+    
+    /* Callbacks */
+    void Enable_Events();
+    void Disable_Events();
+
+// TODO: Make these protected
+public:
   wxMacNotifierTableRef m_mac_events ;
   EndpointRef m_endpoint;
   GAddress *m_local;
   GAddress *m_peer;
   GSocketError m_error;
 
-  int m_non_blocking;
-  int m_server;
-  int m_stream;
-  int m_oriented;
+  bool m_non_blocking;
+  bool m_server;
+  bool m_stream;
+  bool m_oriented;
   unsigned long m_timeout;
 
   /* Callbacks */
   GSocketEventFlags m_detected;
   GSocketCallback m_cbacks[GSOCK_MAX_EVENT];
   char *m_data[GSOCK_MAX_EVENT];
-  int m_takesEvents ;
+  bool m_takesEvents ;
 };
 
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
 /* Definition of GAddress */
 
 struct _GAddress
@@ -60,19 +119,8 @@ struct _GAddress
   GSocketError m_error;
 };
 
-/* Input / Output */
-
-GSocketError _GSocket_Input_Timeout(GSocket *socket);
-GSocketError _GSocket_Output_Timeout(GSocket *socket);
-int _GSocket_Recv_Stream(GSocket *socket, char *buffer, int size);
-int _GSocket_Recv_Dgram(GSocket *socket, char *buffer, int size);
-int _GSocket_Send_Stream(GSocket *socket, const char *buffer, int size);
-int _GSocket_Send_Dgram(GSocket *socket, const char *buffer, int size);
-
 /* Callbacks */
 
-void _GSocket_Enable_Events(GSocket *socket);
-void _GSocket_Disable_Events(GSocket *socket);
 void _GSocket_Internal_Proc(unsigned long e , void* data ) ;
 
 /* GAddress */