2005-12-23 Dick Porter <dick@ximian.com>
[mono.git] / mono / metadata / socket-io.h
index 3540882f1058d85e0a8650c0f03733aa4a0aadc8..8c08e6efcc488015f9ee47bb22a8236253018bac 100644 (file)
@@ -130,7 +130,12 @@ typedef enum {
        SocketOptionName_BsdUrgent=2,
        SocketOptionName_Expedited=2,
        SocketOptionName_NoChecksum=1,
-       SocketOptionName_ChecksumCoverage=20
+       SocketOptionName_ChecksumCoverage=20,
+
+       /* This is Mono-specific, keep it in sync with
+        * Mono.Posix/PeerCred.cs
+        */
+       SocketOptionName_PeerCred=10001
 } MonoSocketOptionName;
 
 typedef struct _MonoSocketAsyncResult {
@@ -150,10 +155,20 @@ typedef struct _MonoSocketAsyncResult {
        gint total;
        MonoBoolean completed_synch;
        MonoBoolean completed;
-       MonoDelegate *real_callback;
+       MonoBoolean blocking;
        gint error;
+       gint operation;
+       MonoAsyncResult *ares;
 } MonoSocketAsyncResult;
 
+typedef struct
+{
+       MonoObject obj;
+       gint pid;
+       gint uid;
+       gint gid;
+} MonoPeerCredData;
+
 extern gpointer ves_icall_System_Net_Sockets_Socket_Socket_internal(MonoObject *this, gint32 family, gint32 type, gint32 proto, gint32 *error);
 extern void ves_icall_System_Net_Sockets_Socket_Close_internal(SOCKET sock, gint32 *error);
 extern gint32 ves_icall_System_Net_Sockets_SocketException_WSAGetLastError_internal(void);
@@ -169,7 +184,7 @@ extern gint32 ves_icall_System_Net_Sockets_Socket_Receive_internal(SOCKET sock,
 extern gint32 ves_icall_System_Net_Sockets_Socket_RecvFrom_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, MonoObject **sockaddr, gint32 *error);
 extern gint32 ves_icall_System_Net_Sockets_Socket_Send_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, gint32 *error);
 extern gint32 ves_icall_System_Net_Sockets_Socket_SendTo_internal(SOCKET sock, MonoArray *buffer, gint32 offset, gint32 count, gint32 flags, MonoObject *sockaddr, gint32 *error);
-extern void ves_icall_System_Net_Sockets_Socket_Select_internal(MonoArray **read_socks, MonoArray **write_socks, MonoArray **err_socks, gint32 timeout, gint32 *error);
+extern void ves_icall_System_Net_Sockets_Socket_Select_internal(MonoArray **sockets, gint32 timeout, gint32 *error);
 extern void ves_icall_System_Net_Sockets_Socket_Shutdown_internal(SOCKET sock, gint32 how, gint32 *error);
 extern void ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal(SOCKET sock, gint32 level, gint32 name, MonoObject **obj_val, gint32 *error);
 extern void ves_icall_System_Net_Sockets_Socket_GetSocketOption_arr_internal(SOCKET sock, gint32 level, gint32 name, MonoArray **byte_val, gint32 *error);
@@ -180,9 +195,6 @@ extern MonoBoolean ves_icall_System_Net_Dns_GetHostByAddr_internal(MonoString *a
 extern MonoBoolean ves_icall_System_Net_Dns_GetHostName_internal(MonoString **h_name);
 extern MonoBoolean ves_icall_System_Net_Sockets_Socket_Poll_internal (SOCKET sock, gint mode, gint timeout, gint32 *error);
 
-extern void ves_icall_System_Net_Sockets_Socket_AsyncReceive (MonoSocketAsyncResult *ares, gint *error);
-extern void ves_icall_System_Net_Sockets_Socket_AsyncSend (MonoSocketAsyncResult *ares, gint *error);
-
 extern void mono_network_init(void);
 extern void mono_network_cleanup(void);