2 Unix SMB/CIFS implementation.
6 Copyright (C) Stefan (metze) Metzmacher 2004
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 #ifndef _SERVER_SERVICE_H
24 #define _SERVER_SERVICE_H
28 struct server_context;
30 struct server_connection;
31 struct server_service;
33 /* modules can use the following to determine if the interface has changed
34 * please increment the version number after each interface change
35 * with a comment and maybe update struct process_model_critical_sizes.
37 /* version 1 - initial version - metze */
38 #define SERVER_SERVICE_VERSION 1
40 struct server_service_ops {
41 /* the name of the server_service */
44 /* called at startup when the server_service is selected */
45 void (*service_init)(struct server_service *service, const struct model_ops *ops);
47 /* function to accept new connection */
48 void (*accept_connection)(struct server_connection *);
50 /* function to accept new connection */
51 void (*recv_handler)(struct server_connection *, time_t, uint16_t);
53 /* function to accept new connection */
54 void (*send_handler)(struct server_connection *, time_t, uint16_t);
56 /* function to accept new connection */
57 void (*idle_handler)(struct server_connection *, time_t);
59 /* function to close a connection */
60 void (*close_connection)(struct server_connection *, const char *reason);
62 /* function to exit server */
63 void (*service_exit)(struct server_service *srv_ctx, const char *reason);
66 struct socket_context;
68 struct server_socket {
69 struct server_socket *next,*prev;
74 struct event_context *ctx;
78 struct socket_context *socket;
80 struct server_service *service;
82 struct server_connection *connection_list;
85 struct server_service {
86 struct server_service *next,*prev;
89 const struct server_service_ops *ops;
91 const struct model_ops *model_ops;
93 struct server_socket *socket_list;
95 struct server_context *srv_ctx;
98 struct server_connection {
99 struct server_connection *next,*prev;
104 struct event_context *ctx;
105 struct fd_event *fde;
106 struct timed_event *idle;
110 struct socket_context *socket;
112 struct server_socket *server_socket;
114 struct server_service *service;
117 #endif /* _SERVER_SERVICE_H */