Merged revisions 297157,297486,297495 via svnmerge from
[asterisk/asterisk.git] / include / asterisk / res_fax.h
index a6b3a21..70715d5 100644 (file)
@@ -58,8 +58,10 @@ enum ast_fax_modems {
 
 /*! \brief current state of a fax session */
 enum ast_fax_state {
 
 /*! \brief current state of a fax session */
 enum ast_fax_state {
+       /*! reserved state */
+       AST_FAX_STATE_RESERVED = 0,
        /*! uninitialized state */
        /*! uninitialized state */
-       AST_FAX_STATE_UNINITIALIZED = 0,
+       AST_FAX_STATE_UNINITIALIZED,
        /*! initialized state */
        AST_FAX_STATE_INITIALIZED,
        /*! fax resources open state */
        /*! initialized state */
        AST_FAX_STATE_INITIALIZED,
        /*! fax resources open state */
@@ -168,7 +170,8 @@ struct ast_fax_session_details {
 
 struct ast_fax_tech;
 struct ast_fax_debug_info;
 
 struct ast_fax_tech;
 struct ast_fax_debug_info;
-       
+struct ast_fax_tech_token;
+
 /*! \brief The data required to handle a fax session */
 struct ast_fax_session {
        /*! session id */
 /*! \brief The data required to handle a fax session */
 struct ast_fax_session {
        /*! session id */
@@ -183,6 +186,8 @@ struct ast_fax_session {
        unsigned long frames_sent;
        /*! the fax technology callbacks */
        const struct ast_fax_tech *tech;
        unsigned long frames_sent;
        /*! the fax technology callbacks */
        const struct ast_fax_tech *tech;
+       /*! the token used to reserve this session */
+       struct ast_fax_tech_token *token;
        /*! private implementation pointer */
        void *tech_pvt;
        /*! fax state */
        /*! private implementation pointer */
        void *tech_pvt;
        /*! fax state */
@@ -197,9 +202,11 @@ struct ast_fax_session {
        struct ast_fax_debug_info *debug_info;
        /*! used to take variable-sized frames in and output frames of an expected size to the fax stack */
        struct ast_smoother *smoother;
        struct ast_fax_debug_info *debug_info;
        /*! used to take variable-sized frames in and output frames of an expected size to the fax stack */
        struct ast_smoother *smoother;
-};
 
 
-struct ast_fax_tech_token;
+       /*! some flags to track the stat counters for this session */
+       unsigned int reserved:1;
+       unsigned int active:1;
+};
 
 /*! \brief used to register a FAX technology module with res_fax */
 struct ast_fax_tech {
 
 /*! \brief used to register a FAX technology module with res_fax */
 struct ast_fax_tech {
@@ -242,7 +249,15 @@ struct ast_fax_tech {
        /*! displays settings from the fax technology module */
        char * (* const cli_show_settings)(int);
 };
        /*! displays settings from the fax technology module */
        char * (* const cli_show_settings)(int);
 };
-  
+
+/*! \brief used by res_fax to reserve a FAX session */
+struct ast_fax_tech_token {
+       /*! the fax technology callbacks */
+       const struct ast_fax_tech *tech;
+       /*! private implementation pointer */
+       void *tech_pvt;
+};
+
 /*! \brief register a fax technology */
 int ast_fax_tech_register(struct ast_fax_tech *tech);
 
 /*! \brief register a fax technology */
 int ast_fax_tech_register(struct ast_fax_tech *tech);