summaryrefslogtreecommitdiff
path: root/source4/smbd/process_model.h
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-01-30 00:54:57 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:09:22 -0500
commit55d4d36993293fee914a009f1d8f05810e347f2b (patch)
tree587a9bafd1c8df901aad8766acb0fe9ef4c3d8c0 /source4/smbd/process_model.h
parent5540449f1cd9d9a6efab59f2bf47be4e1487ffc2 (diff)
downloadsamba-55d4d36993293fee914a009f1d8f05810e347f2b.tar.gz
samba-55d4d36993293fee914a009f1d8f05810e347f2b.tar.bz2
samba-55d4d36993293fee914a009f1d8f05810e347f2b.zip
r5102: This is a major simplification of the logic for controlling top level
servers in smbd. The old code still contained a fairly bit of legacy from the time when smbd was only handling SMB connection. The new code gets rid of all of the smb_server specific code in smbd/, and creates a much simpler infrastructures for new server code. Major changes include: - simplified the process model code a lot. - got rid of the top level server and service structures completely. The top level context is now the event_context. This got rid of service.h and server.h completely (they were the most confusing parts of the old code) - added service_stream.[ch] for the helper functions that are specific to stream type services (services that handle streams, and use a logically separate process per connection) - got rid of the builtin idle_handler code in the service logic, as none of the servers were using it, and it can easily be handled by a server in future by adding its own timed_event to the event context. - fixed some major memory leaks in the rpc server code. - added registration of servers, rather than hard coding our list of possible servers. This allows for servers as modules in the future. - temporarily disabled the winbind code until I add the helper functions for that type of server - added error checking on service startup. If a configured server fails to startup then smbd doesn't startup. - cleaned up the command line handling in smbd, removing unused options (This used to be commit cf6a46c3cbde7b1eb1b86bd3882b953a2de3a42e)
Diffstat (limited to 'source4/smbd/process_model.h')
-rw-r--r--source4/smbd/process_model.h33
1 files changed, 11 insertions, 22 deletions
diff --git a/source4/smbd/process_model.h b/source4/smbd/process_model.h
index fb9bdfd44b..943538d7b2 100644
--- a/source4/smbd/process_model.h
+++ b/source4/smbd/process_model.h
@@ -1,7 +1,9 @@
/*
Unix SMB/CIFS implementation.
- process model manager - main loop
- Copyright (C) Andrew Tridgell 1992-2003
+
+ process model manager - structures
+
+ Copyright (C) Andrew Tridgell 1992-2005
Copyright (C) James J Myers 2003 <myersjj@samba.org>
Copyright (C) Stefan (metze) Metzmacher 2004-2005
@@ -20,9 +22,6 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#ifndef SAMBA_PROCESS_MODEL_H
-#define SAMBA_PROCESS_MODEL_H
-
/* modules can use the following to determine if the interface has changed
* please increment the version number after each interface change
* with a comment and maybe update struct process_model_critical_sizes.
@@ -37,32 +36,22 @@ struct model_ops {
const char *name;
/* called at startup when the model is selected */
- void (*model_init)(struct server_context *srv_ctx);
- /* called at th eend of the main server process */
- void (*model_exit)(struct server_context *srv_ctx, const char *reason);
-
+ void (*model_init)(struct event_context *);
/* function to accept new connection */
- void (*accept_connection)(struct event_context *, struct fd_event *,
- struct timeval t, uint16_t);
- /* function to terminate a connection */
- void (*terminate_connection)(struct server_connection *srv_conn,
- const char *reason);
-
+ void (*accept_connection)(struct event_context *, struct socket_context *,
+ void (*)(struct event_context *, struct socket_context *,
+ uint32_t , void *),
+ void *);
- /* function to create a new task event_context */
- void (*create_task)(struct server_task *task);
- /* function to exit this task */
- void (*terminate_task)(struct server_task *task, const char *reason);
+ /* function to terminate a connection */
+ void (*terminate_connection)(struct event_context *, const char *reason);
};
/* this structure is used by modules to determine the size of some critical types */
struct process_model_critical_sizes {
int interface_version;
int sizeof_model_ops;
- int sizeof_server_context;
int sizeof_event_context;
int sizeof_fd_event;
};
-
-#endif /* SAMBA_PROCESS_MODEL_H */