ReactOS 0.4.15-dev-6069-g56a4501
rpc_server.h
Go to the documentation of this file.
1/*
2 * RPC server API
3 *
4 * Copyright 2001 Ove Kåven, TransGaming Technologies
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21#ifndef __WINE_RPC_SERVER_H
22#define __WINE_RPC_SERVER_H
23
24#include "rpc_binding.h"
25#include "wine/list.h"
26
27struct protseq_ops;
28
29typedef struct _RpcServerProtseq
30{
31 const struct protseq_ops *ops; /* RO */
32 struct list entry; /* CS ::server_cs */
33 LPSTR Protseq; /* RO */
34 UINT MaxCalls; /* RO */
35 /* list of listening connections */
36 struct list listeners; /* CS cs */
37 struct list connections; /* CS cs */
39
40 /* handle to listening thread */
41 HANDLE server_thread; /* CS ::listen_cs */
42 /* mutex for ensuring only one thread can change state at a time */
44 /* set when server thread has finished opening connections */
47
49{
50 const char *name;
53 /* previous array is passed in to allow reuse of memory */
54 void *(*get_wait_array)(RpcServerProtseq *protseq, void *prev_array, unsigned int *count);
56 /* returns -1 for failure, 0 for server state changed and 1 to indicate a
57 * new connection was established */
58 int (*wait_for_new_connection)(RpcServerProtseq *protseq, unsigned int count, void *wait_array);
59 /* opens the endpoint and optionally begins listening */
61};
62
63typedef struct _RpcServerInterface
64{
65 struct list entry;
73 LONG CurrentCalls; /* number of calls currently executing */
74 /* set when unregistering interface to let the caller of
75 * RpcServerUnregisterIf* know that all calls have finished */
77 BOOL Delete; /* delete when the last call finishes */
79
81const struct protseq_ops *rpcrt4_get_protseq_ops(const char *protseq) DECLSPEC_HIDDEN;
82
85
86#endif /* __WINE_RPC_SERVER_H */
Definition: list.h:37
#define DECLSPEC_HIDDEN
Definition: precomp.h:8
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
unsigned int BOOL
Definition: ntddk_ex.h:94
GLuint GLuint GLsizei count
Definition: gl.h:1545
unsigned int UINT
Definition: ndis.h:50
long LONG
Definition: pedump.c:60
struct _RpcServerProtseq RpcServerProtseq
struct _RpcServerInterface RpcServerInterface
void RPCRT4_destroy_all_protseqs(void) DECLSPEC_HIDDEN
Definition: rpc_server.c:1094
void RPCRT4_new_client(RpcConnection *conn) DECLSPEC_HIDDEN
Definition: rpc_server.c:625
const struct protseq_ops * rpcrt4_get_protseq_ops(const char *protseq) DECLSPEC_HIDDEN
void RPCRT4_ServerFreeAllRegisteredAuthInfo(void) DECLSPEC_HIDDEN
Definition: rpc_server.c:1396
#define RPC_MGR_EPV
Definition: rpcdce.h:53
RPC_STATUS RPC_ENTRY RPC_IF_CALLBACK_FN(RPC_IF_HANDLE InterfaceUuid, void *Context)
Definition: rpcdce.h:211
long RPC_STATUS
Definition: rpc.h:52
RPC_SERVER_INTERFACE * If
Definition: rpc_server.h:66
struct list entry
Definition: rpc_server.h:65
HANDLE CallsCompletedEvent
Definition: rpc_server.h:76
RPC_MGR_EPV * MgrEpv
Definition: rpc_server.h:68
RPC_IF_CALLBACK_FN * IfCallbackFn
Definition: rpc_server.h:72
struct list entry
Definition: rpc_server.h:32
const struct protseq_ops * ops
Definition: rpc_server.h:31
struct list connections
Definition: rpc_server.h:37
struct list listeners
Definition: rpc_server.h:36
CRITICAL_SECTION cs
Definition: rpc_server.h:38
HANDLE server_thread
Definition: rpc_server.h:41
HANDLE server_ready_event
Definition: rpc_server.h:45
Definition: nis.h:10
int(* wait_for_new_connection)(RpcServerProtseq *protseq, unsigned int count, void *wait_array)
Definition: rpc_server.h:58
RPC_STATUS(* open_endpoint)(RpcServerProtseq *protseq, const char *endpoint)
Definition: rpc_server.h:60
const char * name
Definition: rpc_server.h:50
void(* signal_state_changed)(RpcServerProtseq *protseq)
Definition: rpc_server.h:52
void(* free_wait_array)(RpcServerProtseq *protseq, void *array)
Definition: rpc_server.h:55
char * LPSTR
Definition: xmlstorage.h:182