/* -------------------------------------------------------------------------
- * 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
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 */