8793f70c2ee8a79111d6e9facec1d2b840401162
[asterisk/asterisk.git] / include / asterisk / monitor.h
1 /*
2  * Asterisk -- An open source telephony toolkit.
3  *
4  * Copyright (C) 1999 - 2005, Digium, Inc.
5  *
6  * Mark Spencer <markster@digium.com>
7  *
8  * See http://www.asterisk.org for more information about
9  * the Asterisk project. Please do not directly contact
10  * any of the maintainers of this project for assistance;
11  * the project provides a web site, mailing lists and IRC
12  * channels for your use.
13  *
14  * This program is free software, distributed under the terms of
15  * the GNU General Public License Version 2. See the LICENSE file
16  * at the top of the source tree.
17  */
18
19 /*! \file
20  * \brief Channel monitoring
21  */
22
23 #ifndef _ASTERISK_MONITOR_H
24 #define _ASTERISK_MONITOR_H
25
26 #include <stdio.h>
27
28 #include "asterisk/channel.h"
29
30 struct ast_channel;
31
32 /*! Responsible for channel monitoring data */
33 struct ast_channel_monitor
34 {
35         struct ast_filestream *read_stream;
36         struct ast_filestream *write_stream;
37         char read_filename[ FILENAME_MAX ];
38         char write_filename[ FILENAME_MAX ];
39         char filename_base[ FILENAME_MAX ];
40         int filename_changed;
41         char *format;
42         int joinfiles;
43         int (*stop)( struct ast_channel *chan, int need_lock);
44 };
45
46 /* Start monitoring a channel */
47 int ast_monitor_start(  struct ast_channel *chan, const char *format_spec,
48                                                 const char *fname_base, int need_lock );
49
50 /* Stop monitoring a channel */
51 int ast_monitor_stop( struct ast_channel *chan, int need_lock);
52
53 /* Change monitoring filename of a channel */
54 int ast_monitor_change_fname(   struct ast_channel *chan,
55                                                                 const char *fname_base, int need_lock );
56
57 void ast_monitor_setjoinfiles(struct ast_channel *chan, int turnon);
58
59 #endif /* _ASTERISK_MONITOR_H */