Merge team/russell/frame_caching
[asterisk/asterisk.git] / include / asterisk / chanspy.h
old mode 100755 (executable)
new mode 100644 (file)
index 4973763..dd8d79e
@@ -1,7 +1,7 @@
 /*
  * Asterisk -- An open source telephony toolkit.
  *
- * Copyright (C) 1999 - 2005, Digium, Inc.
+ * Copyright (C) 1999 - 2006, Digium, Inc.
  *
  * Mark Spencer <markster@digium.com>
  *
@@ -30,9 +30,10 @@ extern "C" {
 #include "asterisk/linkedlists.h"
 
 enum chanspy_states {
-       CHANSPY_NEW = 0,
-       CHANSPY_RUNNING = 1,
-       CHANSPY_DONE = 2,
+       CHANSPY_NEW = 0,                /*!< spy not yet operating */
+       CHANSPY_RUNNING = 1,            /*!< normal operation, spy is still operating */
+       CHANSPY_DONE = 2,               /*!< spy is stopped and already removed from channel */
+       CHANSPY_STOP = 3,               /*!< spy requested to stop, still attached to channel */
 };
 
 enum chanspy_flags {
@@ -48,7 +49,7 @@ enum chanspy_flags {
 };
 
 struct ast_channel_spy_queue {
-       struct ast_frame *head;
+       AST_LIST_HEAD_NOLOCK(, ast_frame) list;
        unsigned int samples;
        unsigned int format;
 };
@@ -57,6 +58,7 @@ struct ast_channel_spy {
        AST_LIST_ENTRY(ast_channel_spy) list;
        ast_mutex_t lock;
        ast_cond_t trigger;
+       struct ast_channel *chan;
        struct ast_channel_spy_queue read_queue;
        struct ast_channel_spy_queue write_queue;
        unsigned int flags;