Files
asterisk/include/asterisk/monitor.h
Kevin P. Fleming 6c5987811c Redesigned 'optional API' support.
This patch provides a new implementation of the optional API support defined
in asterisk/optional_api.h; this new version provides solves compatibility
issues with the use of linker version scripts for suppressing global symbols.
In addition, there is now a functional (and tested!) implementation for Mac OS/X,
so module writers no longer need to use special tests before calling optional
API functions. All future implementations must provide these same semantics,
so that module writers can rely on them.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@200519 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-06-15 16:07:23 +00:00

85 lines
2.2 KiB
C

/*
* Asterisk -- An open source telephony toolkit.
*
* Copyright (C) 1999 - 2005, Digium, Inc.
*
* Mark Spencer <markster@digium.com>
*
* See http://www.asterisk.org for more information about
* the Asterisk project. Please do not directly contact
* any of the maintainers of this project for assistance;
* the project provides a web site, mailing lists and IRC
* channels for your use.
*
* This program is free software, distributed under the terms of
* the GNU General Public License Version 2. See the LICENSE file
* at the top of the source tree.
*/
/*! \file
* \brief Channel monitoring
*/
#ifndef _ASTERISK_MONITOR_H
#define _ASTERISK_MONITOR_H
#include "asterisk/channel.h"
#include "asterisk/optional_api.h"
enum AST_MONITORING_STATE {
AST_MONITOR_RUNNING,
AST_MONITOR_PAUSED
};
/* Streams recording control */
#define X_REC_IN 1
#define X_REC_OUT 2
#define X_JOIN 4
/*! Responsible for channel monitoring data */
struct ast_channel_monitor {
struct ast_filestream *read_stream;
struct ast_filestream *write_stream;
char read_filename[FILENAME_MAX];
char write_filename[FILENAME_MAX];
char filename_base[FILENAME_MAX];
int filename_changed;
char *format;
int joinfiles;
enum AST_MONITORING_STATE state;
int (*stop)(struct ast_channel *chan, int need_lock);
};
/* Start monitoring a channel */
AST_OPTIONAL_API(int, ast_monitor_start,
(struct ast_channel *chan, const char *format_spec,
const char *fname_base, int need_lock, int stream_action),
{ return -1; });
/* Stop monitoring a channel */
AST_OPTIONAL_API(int, ast_monitor_stop,
(struct ast_channel *chan, int need_lock),
{ return -1; });
/* Change monitoring filename of a channel */
AST_OPTIONAL_API(int, ast_monitor_change_fname,
(struct ast_channel *chan, const char *fname_base,
int need_lock),
{ return -1; });
AST_OPTIONAL_API(void, ast_monitor_setjoinfiles,
(struct ast_channel *chan, int turnon),
{ return; });
/* Pause monitoring of a channel */
AST_OPTIONAL_API(int, ast_monitor_pause,
(struct ast_channel *chan),
{ return -1; });
/* Unpause monitoring of a channel */
AST_OPTIONAL_API(int, ast_monitor_unpause,
(struct ast_channel *chan),
{ return -1; });
#endif /* _ASTERISK_MONITOR_H */