- Spelling checked
[sip-router] / fifo_server.h
1 /*
2  * $Id$
3  *
4  *
5  * Copyright (C) 2001-2003 FhG Fokus
6  *
7  * This file is part of ser, a free SIP server.
8  *
9  * ser is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version
13  *
14  * For a license to use the ser software under conditions
15  * other than those described here, or to purchase support for this
16  * software, please contact iptel.org by e-mail at the following addresses:
17  *    info@iptel.org
18  *
19  * ser is distributed in the hope that it will be useful,
20  * but WITHOUT ANY WARRANTY; without even the implied warranty of
21  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22  * GNU General Public License for more details.
23  *
24  * You should have received a copy of the GNU General Public License 
25  * along with this program; if not, write to the Free Software 
26  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
27  */
28
29
30 #ifndef _FIFO_SERVER_H
31 #define _FIFO_SERVER_H
32
33 #include <stdio.h>
34
35 #define CMD_SEPARATOR ':'
36
37 /* core FIFO command set */
38 /* echo input */
39 #define FIFO_PRINT "print"
40 /* print server's uptime */
41 #define FIFO_UPTIME "uptime"
42 /* print server's version */
43 #define FIFO_VERSION "version"
44 /* print available FIFO commands */
45 #define FIFO_WHICH "which"
46 /* print server's process table */
47 #define FIFO_PS "ps"
48 /* print server's command line arguments */
49 #define FIFO_ARG "arg"
50 /* print server's working directory */
51 #define FIFO_PWD "pwd"
52 /* kill the server */
53 #define FIFO_KILL "kill"
54
55 #define MAX_CTIME_LEN 128
56
57 typedef int (fifo_cmd)( FILE *fifo_stream, char *response_file );
58
59 struct fifo_command{
60         fifo_cmd *f;
61         struct fifo_command *next;
62         void *param;
63         char *name;
64 };
65
66 int register_fifo_cmd(fifo_cmd f, char *cmd_name, void *param);
67
68 /* read a single EoL-terminated line from fifo */
69 int read_line( char *b, int max, FILE *stream, int *read );
70 /* consume EoL from fifo */
71 int read_eol( FILE *stream );
72 /* consume a set of EoL-terminated lines terminated by an additional EoL */
73 int read_line_set(char *buf, int max_len, FILE *fifo, int *len);
74 /* consume a set of EoL-terminated lines terminated by a single dot line */
75 int read_body(char *buf, int max_len, FILE *fifo, int *len);
76
77 int init_fifo_server();
78 int start_fifo_server();
79
80 /* register core FIFO command set */
81 int register_core_fifo();
82
83 FILE *open_reply_pipe( char *pipe_name );
84
85 /* tell FIFO client an error occurred via reply pipe */
86 void fifo_reply( char *reply_fifo, char *reply_fmt, ... );
87
88 /* memory deallocation */
89 void destroy_fifo();
90
91 #endif