diff options
author | Andrew Tridgell <tridge@samba.org> | 2005-01-30 00:54:57 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:09:22 -0500 |
commit | 55d4d36993293fee914a009f1d8f05810e347f2b (patch) | |
tree | 587a9bafd1c8df901aad8766acb0fe9ef4c3d8c0 /source4/smbd/process_model.h | |
parent | 5540449f1cd9d9a6efab59f2bf47be4e1487ffc2 (diff) | |
download | samba-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.h | 33 |
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 */ |