2005-01-30 03:55:49 +03:00
/*
Unix SMB / CIFS implementation .
structures specific to stream servers
Copyright ( C ) Stefan ( metze ) Metzmacher 2004
Copyright ( C ) Andrew Tridgell 2005
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
2007-07-10 06:07:03 +04:00
the Free Software Foundation ; either version 3 of the License , or
2005-01-30 03:55:49 +03:00
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
2007-07-10 06:07:03 +04:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2005-01-30 03:55:49 +03:00
*/
2006-03-14 18:03:25 +03:00
# ifndef __SERVICE_STREAM_H__
# define __SERVICE_STREAM_H__
2007-09-24 01:35:03 +04:00
# include "librpc/gen_ndr/misc.h"
2005-01-30 03:55:49 +03:00
/* modules can use the following to determine if the interface has changed
* please increment the version number after each interface change
2005-12-08 12:13:28 +03:00
* with a comment and maybe update struct stream_connection_critical_sizes .
2005-01-30 03:55:49 +03:00
*/
2005-12-08 12:13:28 +03:00
/* version 0 - initial version - metze */
# define SERVER_SERVICE_VERSION 0
2005-01-30 03:55:49 +03:00
/*
top level context for an established stream connection
*/
struct stream_connection {
const struct stream_server_ops * ops ;
const struct model_ops * model_ops ;
2007-01-10 13:52:09 +03:00
struct server_id server_id ;
2005-01-30 03:55:49 +03:00
void * private ;
struct {
struct event_context * ctx ;
struct fd_event * fde ;
} event ;
struct socket_context * socket ;
struct messaging_context * msg_ctx ;
2005-12-08 12:13:28 +03:00
2007-08-27 22:10:19 +04:00
bool processing ;
2005-12-08 12:13:28 +03:00
const char * terminate ;
2005-01-30 03:55:49 +03:00
} ;
/* operations passed to the service_stream code */
struct stream_server_ops {
/* the name of the server_service */
const char * name ;
void ( * accept_connection ) ( struct stream_connection * ) ;
2005-02-03 14:25:52 +03:00
void ( * recv_handler ) ( struct stream_connection * , uint16_t ) ;
void ( * send_handler ) ( struct stream_connection * , uint16_t ) ;
2005-01-30 03:55:49 +03:00
} ;
2006-03-14 18:03:25 +03:00
# endif /* __SERVICE_STREAM_H__ */