Commit 019211f8 authored by Ove Kaaven's avatar Ove Kaaven Committed by Alexandre Julliard

Added socket interface to wineserver.

parent 448b34a0
......@@ -463,6 +463,60 @@ struct create_pipe_request
};
/* Create a socket */
struct create_socket_request
{
IN unsigned int access; /* wanted access rights */
IN int inherit; /* inherit flag */
IN int family; /* family, see socket manpage */
IN int type; /* type, see socket manpage */
IN int protocol; /* protocol, see socket manpage */
OUT int handle; /* handle to the new socket */
};
/* Accept a socket */
struct accept_socket_request
{
IN int lhandle; /* handle to the listening socket */
IN unsigned int access; /* wanted access rights */
IN int inherit; /* inherit flag */
OUT int handle; /* handle to the new socket */
};
/* Set socket event parameters */
struct set_socket_event_request
{
IN int handle; /* handle to the socket */
IN unsigned int mask; /* event mask */
IN int event; /* event object */
};
/* Get socket event parameters */
struct get_socket_event_request
{
IN int handle; /* handle to the socket */
IN int service; /* clear pending? */
IN int s_event; /* "expected" event object */
OUT unsigned int mask; /* event mask */
OUT unsigned int pmask; /* pending events */
OUT unsigned int state; /* status bits */
OUT int errors[1]; /* event errors */
};
/* Reenable pending socket events */
struct enable_socket_event_request
{
IN int handle; /* handle to the socket */
IN unsigned int mask; /* events to re-enable */
IN unsigned int sstate; /* status bits to set */
IN unsigned int cstate; /* status bits to clear */
};
/* Allocate a console for the current process */
struct alloc_console_request
{
......@@ -794,6 +848,11 @@ enum request
REQ_LOCK_FILE,
REQ_UNLOCK_FILE,
REQ_CREATE_PIPE,
REQ_CREATE_SOCKET,
REQ_ACCEPT_SOCKET,
REQ_SET_SOCKET_EVENT,
REQ_GET_SOCKET_EVENT,
REQ_ENABLE_SOCKET_EVENT,
REQ_ALLOC_CONSOLE,
REQ_FREE_CONSOLE,
REQ_OPEN_CONSOLE,
......
......@@ -282,6 +282,7 @@ typedef struct WSAData {
#define WS_FD_INACTIVE 0x20000000
#define WS_FD_CONNECTED 0x40000000
#define WS_FD_RAW 0x80000000
#define WS_FD_NONBLOCKING 0x01000000
#define WS_FD_INTERNAL 0xFFFF0000
/*
......
......@@ -22,6 +22,7 @@ C_SRCS = \
snapshot.c \
select.c \
semaphore.c \
sock.c \
socket.c \
thread.c \
trace.c
......
......@@ -105,6 +105,11 @@ DECL_HANDLER(get_file_info);
DECL_HANDLER(lock_file);
DECL_HANDLER(unlock_file);
DECL_HANDLER(create_pipe);
DECL_HANDLER(create_socket);
DECL_HANDLER(accept_socket);
DECL_HANDLER(set_socket_event);
DECL_HANDLER(get_socket_event);
DECL_HANDLER(enable_socket_event);
DECL_HANDLER(alloc_console);
DECL_HANDLER(free_console);
DECL_HANDLER(open_console);
......@@ -177,6 +182,11 @@ static const struct handler {
{ (void(*)())req_lock_file, sizeof(struct lock_file_request) },
{ (void(*)())req_unlock_file, sizeof(struct unlock_file_request) },
{ (void(*)())req_create_pipe, sizeof(struct create_pipe_request) },
{ (void(*)())req_create_socket, sizeof(struct create_socket_request) },
{ (void(*)())req_accept_socket, sizeof(struct accept_socket_request) },
{ (void(*)())req_set_socket_event, sizeof(struct set_socket_event_request) },
{ (void(*)())req_get_socket_event, sizeof(struct get_socket_event_request) },
{ (void(*)())req_enable_socket_event, sizeof(struct enable_socket_event_request) },
{ (void(*)())req_alloc_console, sizeof(struct alloc_console_request) },
{ (void(*)())req_free_console, sizeof(struct free_console_request) },
{ (void(*)())req_open_console, sizeof(struct open_console_request) },
......
This diff is collapsed. Click to expand it.
......@@ -7,6 +7,7 @@
#include <stdio.h>
#include <sys/types.h>
#include <sys/uio.h>
#include "winsock2.h"
#include "request.h"
......@@ -28,6 +29,14 @@ static void dump_varargs_get_apcs( struct get_apcs_request *req )
fprintf( stderr, "}" );
}
static void dump_varargs_get_socket_event( struct get_socket_event_request *req )
{
int i;
for (i = 0; i < FD_MAX_EVENTS; i++)
fprintf( stderr, "%c%d", i ? ',' : '{', req->errors[i] );
fprintf( stderr, "}" );
}
typedef void (*dump_func)( const void *req );
......@@ -474,6 +483,63 @@ static void dump_create_pipe_reply( struct create_pipe_request *req )
fprintf( stderr, " handle_write=%d", req->handle_write );
}
static void dump_create_socket_request( struct create_socket_request *req )
{
fprintf( stderr, " access=%08x,", req->access );
fprintf( stderr, " inherit=%d,", req->inherit );
fprintf( stderr, " family=%d,", req->family );
fprintf( stderr, " type=%d,", req->type );
fprintf( stderr, " protocol=%d", req->protocol );
}
static void dump_create_socket_reply( struct create_socket_request *req )
{
fprintf( stderr, " handle=%d", req->handle );
}
static void dump_accept_socket_request( struct accept_socket_request *req )
{
fprintf( stderr, " lhandle=%d,", req->lhandle );
fprintf( stderr, " access=%08x,", req->access );
fprintf( stderr, " inherit=%d", req->inherit );
}
static void dump_accept_socket_reply( struct accept_socket_request *req )
{
fprintf( stderr, " handle=%d", req->handle );
}
static void dump_set_socket_event_request( struct set_socket_event_request *req )
{
fprintf( stderr, " handle=%d,", req->handle );
fprintf( stderr, " mask=%08x,", req->mask );
fprintf( stderr, " event=%d", req->event );
}
static void dump_get_socket_event_request( struct get_socket_event_request *req )
{
fprintf( stderr, " handle=%d,", req->handle );
fprintf( stderr, " service=%d,", req->service );
fprintf( stderr, " s_event=%d", req->s_event );
}
static void dump_get_socket_event_reply( struct get_socket_event_request *req )
{
fprintf( stderr, " mask=%08x,", req->mask );
fprintf( stderr, " pmask=%08x,", req->pmask );
fprintf( stderr, " state=%08x,", req->state );
fprintf( stderr, " errors=" );
dump_varargs_get_socket_event( req );
}
static void dump_enable_socket_event_request( struct enable_socket_event_request *req )
{
fprintf( stderr, " handle=%d,", req->handle );
fprintf( stderr, " mask=%08x,", req->mask );
fprintf( stderr, " sstate=%08x,", req->sstate );
fprintf( stderr, " cstate=%08x", req->cstate );
}
static void dump_alloc_console_request( struct alloc_console_request *req )
{
fprintf( stderr, " access=%08x,", req->access );
......@@ -736,6 +802,11 @@ static const dump_func req_dumpers[REQ_NB_REQUESTS] = {
(dump_func)dump_lock_file_request,
(dump_func)dump_unlock_file_request,
(dump_func)dump_create_pipe_request,
(dump_func)dump_create_socket_request,
(dump_func)dump_accept_socket_request,
(dump_func)dump_set_socket_event_request,
(dump_func)dump_get_socket_event_request,
(dump_func)dump_enable_socket_event_request,
(dump_func)dump_alloc_console_request,
(dump_func)dump_free_console_request,
(dump_func)dump_open_console_request,
......@@ -804,6 +875,11 @@ static const dump_func reply_dumpers[REQ_NB_REQUESTS] = {
(dump_func)0,
(dump_func)0,
(dump_func)dump_create_pipe_reply,
(dump_func)dump_create_socket_reply,
(dump_func)dump_accept_socket_reply,
(dump_func)0,
(dump_func)dump_get_socket_event_reply,
(dump_func)0,
(dump_func)dump_alloc_console_reply,
(dump_func)0,
(dump_func)dump_open_console_reply,
......@@ -872,6 +948,11 @@ static const char * const req_names[REQ_NB_REQUESTS] = {
"lock_file",
"unlock_file",
"create_pipe",
"create_socket",
"accept_socket",
"set_socket_event",
"get_socket_event",
"enable_socket_event",
"alloc_console",
"free_console",
"open_console",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment