[svn-commits] mmichelson: branch group/CCSS r227051 - /team/group/CCSS/main/ccss.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Nov 2 17:03:37 CST 2009


Author: mmichelson
Date: Mon Nov  2 17:03:32 2009
New Revision: 227051

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=227051
Log:
Fix compilation through rearrangement.


Modified:
    team/group/CCSS/main/ccss.c

Modified: team/group/CCSS/main/ccss.c
URL: http://svnview.digium.com/svn/asterisk/team/group/CCSS/main/ccss.c?view=diff&rev=227051&r1=227050&r2=227051
==============================================================================
--- team/group/CCSS/main/ccss.c (original)
+++ team/group/CCSS/main/ccss.c Mon Nov  2 17:03:32 2009
@@ -1368,38 +1368,6 @@
 	.duplicate = dialed_cc_interfaces_duplicate,
 	.destroy = dialed_cc_interfaces_destroy,
 };
-
-/*!
- * \brief Routine to set the ignore flag on all CC datastores
- *
- * When we determine that further calls to Dial in a particular thread should
- * not pay attention to any new CC offers, we set this flag as an indicator.
- *
- * The same also applies for recall purposes. If a call is forwarded or a second
- * Dial is invoked, then the target cannot be a purposeful target of a CC recall.
- *
- * \param chan The calling channel with teh dial_cc_interfaaces datastore on it
- * \return void
- */
-void ast_ignore_cc(struct ast_channel *chan)
-{
-	struct ast_datastore *cc_datastore;
-	struct ast_datastore *cc_recall_datastore;
-	struct dialed_cc_interfaces *cc_interfaces;
-	struct cc_recall_ds_data *recall_cc_data;
-
-	ast_channel_lock(chan);
-	if ((cc_datastore = ast_channel_datastore_find(chan, &dialed_cc_interfaces_info, NULL))) {
-		cc_interfaces = cc_datastore->data;
-		cc_interfaces->done = 1;
-	}
-
-	if ((cc_recall_datastore = ast_channel_datastore_find(chan, &recall_ds_info, NULL))) {
-		recall_cc_data = cc_recall_datastore->data;
-		recall_cc_data->done = 1;
-	}
-	ast_channel_unlock(chan);
-}
 
 void ast_cc_set_extension_dialable_name(struct ast_channel *chan, const char * const dialable_name)
 {
@@ -2599,229 +2567,6 @@
 	return ast_taskprocessor_push(cc_core_taskprocessor, cc_do_state_change, args);
 }
 
-int ast_cc_offer(struct ast_channel *caller_chan)
-{
-	int core_id;
-	int res = -1;
-	struct ast_datastore *datastore;
-	struct dialed_cc_interfaces *cc_interfaces;
-	char cc_is_offerable;
-	
-	ast_channel_lock(caller_chan);
-	if (!(datastore = ast_channel_datastore_find(caller_chan, &dialed_cc_interfaces_info, NULL))) {
-		ast_channel_unlock(caller_chan);
-		return res;
-	}
-
-	cc_interfaces = datastore->data;
-	cc_is_offerable = cc_interfaces->cc_is_offerable;
-	core_id = cc_interfaces->core_id;
-	ast_channel_unlock(caller_chan);
-
-	if (cc_is_offerable) {
-		res = cc_request_state_change(CC_CALLER_OFFERED, core_id, "Offer CC to caller");
-	}
-	return res;
-}
-
-int ast_cc_accept_request(int core_id, const char * const debug)
-{
-	return cc_request_state_change(CC_CALLER_REQUESTED, core_id, debug);
-}
-
-int ast_cc_request_acknowledged(int core_id, const char * const debug)
-{
-	return cc_request_state_change(CC_ACTIVE, core_id, debug);
-}
-
-int ast_cc_callee_available(struct ast_cc_monitor *monitor) {
-	return ast_taskprocessor_push(cc_core_taskprocessor, cc_devstate_change,
-			cc_ref(monitor, "Bump reference count until cc_devstate_change executes"));
-}
-
-int ast_cc_caller_busy(int core_id, const char * debug)
-{
-	return cc_request_state_change(CC_CALLER_BUSY, core_id, debug);
-}
-
-int ast_cc_caller_available(int core_id, const char * const debug)
-{
-	return cc_request_state_change(CC_ACTIVE, core_id, debug);
-}
-
-int ast_cc_recalling(int core_id, const char * const debug)
-{
-	return cc_request_state_change(CC_RECALLING, core_id, debug);
-}
-
-int ast_cc_completed(struct ast_channel *chan, const char * const debug)
-{
-	struct ast_datastore *recall_datastore;
-	struct cc_recall_ds_data *recall_data;
-	int core_id;
-
-	ast_channel_lock(chan);
-	if (!(recall_datastore = ast_channel_datastore_find(chan, &recall_ds_info, NULL))) {
-		/* Silly! Why did you call this function if there's no recall DS? */
-		ast_channel_unlock(chan);
-		return -1;
-	}
-	recall_data = recall_datastore->data;
-	if (recall_data->nested || recall_data->done) {
-		/* If this is being called from a nested Dial, it is too
-		 * early to determine if the recall has actually completed.
-		 * The outermost dial is the only one with the authority to
-		 * declare the recall to be complete.
-		 *
-		 * Similarly, if this function has been called when the 
-		 * recall has progressed beyond the first dial, this is not
-		 * a legitimate time to declare the recall to be done. In fact,
-		 * that should have been done already.
-		 */
-		ast_channel_unlock(chan);
-		return -1;
-	}
-
-	core_id = recall_data->core_id;
-	ast_channel_unlock(chan);
-	return cc_request_state_change(CC_COMPLETE, core_id, debug);
-}
-
-int ast_cc_failed(int core_id, const char * const debug)
-{
-	return cc_request_state_change(CC_FAILED, core_id, debug);
-}
-
-static int cc_status_request(void *data)
-{
-	struct cc_core_instance *core_instance= data;
-	int res;
-
-	res = core_instance->agent->callbacks->status_request(core_instance->agent);
-	cc_unref(core_instance, "Status request finished. Unref core instance");
-	return res;
-}
-
-int ast_cc_status_request(int core_id)
-{
-	struct cc_core_instance *core_instance = find_cc_core_instance(core_id);
-
-	if (!core_instance) {
-		return -1;
-	}
-
-	return ast_taskprocessor_push(cc_core_taskprocessor, cc_status_request,
-			cc_ref(core_instance, "Ref core instance for status request callback"));
-}
-
-struct cc_status_response_args {
-	enum ast_device_state devstate;
-	struct cc_core_instance *core_instance;
-};
-
-static int cc_status_response(void *data)
-{
-	struct cc_status_response_args *args;
-	struct cc_core_instance *core_instance = args->core_instance;
-	enum ast_device_state devstate = args->devstate;
-	int res;
-
-	res = core_instance->monitor->callbacks->status_response(core_instance->monitor, core_instance->core_id, devstate);
-	cc_unref(core_instance, "Status response finished. Unref core instance");
-	return res;
-}
-
-int ast_cc_status_response(int core_id, enum ast_device_state devstate)
-{
-	struct cc_core_instance *core_instance = find_cc_core_instance(core_id);
-
-	if (!core_instance || !core_instance->monitor) {
-		return -1;
-	}
-
-	return ast_taskprocessor_push(cc_core_taskprocessor, cc_status_response,
-			cc_ref(core_instance, "Ref core instance for status response callback"));
-}
-
-static char *ccreq_app = "CallCompletionRequest";
-
-static int ccreq_exec(struct ast_channel *chan, const char *data)
-{
-	struct cc_core_instance *core_instance;
-	char interface[AST_CHANNEL_NAME];
-	unsigned long match_flags;
-	int res;
-
-	ast_channel_get_device_name(chan, interface, sizeof(interface));
-
-	match_flags = MATCH_NO_MONITOR;
-	if (!(core_instance = ao2_t_callback_data(cc_core_instances, 0, match_agent, interface, &match_flags, "Find core instance for CallCompletionRequest"))) {
-		ast_log_dynamic_level(cc_logger_level, "Couldn't find a core instance for caller %s\n", interface);
-		return -1;
-	}
-
-	ast_log_dynamic_level(cc_logger_level, "Found core_instance with core_id %d\n", core_instance->core_id);
-
-	if (strcmp(core_instance->agent->callbacks->type, "generic")) {
-		ast_log_dynamic_level(cc_logger_level, "CallCompletionRequest is only for generic agent types.\n");
-		cc_unref(core_instance, "Unref core_instance since CallCompletionRequest was called with native agent");
-		return -1;
-	}
-
-	if (!ast_cc_request_is_within_limits()) {
-		ast_log_dynamic_level(cc_logger_level, "CallCompletionRequest failed. Too many requests in the system\n");
-		ast_cc_failed(core_instance->core_id, "Too many CC requests\n");
-		return -1;
-	}
-
-	res = ast_cc_accept_request(core_instance->core_id, "CallCompletionRequest called");
-	cc_unref(core_instance, "Done with CallCompletionRequest");
-	return res;
-}
-
-static char *cccancel_app = "CallCompletionCancel";
-
-static int cccancel_exec(struct ast_channel *chan, const char *data)
-{
-	struct cc_core_instance *core_instance;
-	char interface[AST_CHANNEL_NAME];
-	unsigned long match_flags;
-	int res;
-
-	ast_channel_get_device_name(chan, interface, sizeof(interface));
-
-	match_flags = MATCH_MONITOR;
-	if (!(core_instance = ao2_t_callback_data(cc_core_instances, 0, match_agent, interface, &match_flags, "Find core instance for CallCompletionCancel"))) {
-		ast_log(LOG_WARNING, "Cannot find CC transaction to cancel for caller %s\n", interface);
-		return -1;
-	}
-
-	if (strcmp(core_instance->agent->callbacks->type, "generic")) {
-		ast_log(LOG_WARNING, "CallCompletionCancel may only be used for calles with a generic agent\n");
-		cc_unref(core_instance, "Unref core instance found during CallCompletionCancel");
-		return -1;
-	}
-	res = ast_cc_failed(core_instance->core_id, "Call completion request Cancelled");
-	cc_unref(core_instance, "Unref core instance found during CallCompletionCancel");
-	return res;
-}
-
-
-int ast_cc_monitor_count(const char * const name, const char * const type)
-{
-	struct ast_cc_monitor *monitor;
-	int retval = 0;
-
-	if (!(monitor = find_monitor(name, type))) {
-		/* Can't find it, so there must not be any outstanding requests for it */
-		return 0;
-	}
-
-	retval = monitor->num_requests;
-	cc_unref(monitor, "Unref from ao2_find");
-	return retval;
-}
-
 struct cc_recall_ds_data {
 	int core_id;
 	char done;
@@ -3007,6 +2752,261 @@
 	ast_free(var_value);
 	return 0;
 }
+/*!
+ * \brief Routine to set the ignore flag on all CC datastores
+ *
+ * When we determine that further calls to Dial in a particular thread should
+ * not pay attention to any new CC offers, we set this flag as an indicator.
+ *
+ * The same also applies for recall purposes. If a call is forwarded or a second
+ * Dial is invoked, then the target cannot be a purposeful target of a CC recall.
+ *
+ * \param chan The calling channel with teh dial_cc_interfaaces datastore on it
+ * \return void
+ */
+void ast_ignore_cc(struct ast_channel *chan)
+{
+	struct ast_datastore *cc_datastore;
+	struct ast_datastore *cc_recall_datastore;
+	struct dialed_cc_interfaces *cc_interfaces;
+	struct cc_recall_ds_data *recall_cc_data;
+
+	ast_channel_lock(chan);
+	if ((cc_datastore = ast_channel_datastore_find(chan, &dialed_cc_interfaces_info, NULL))) {
+		cc_interfaces = cc_datastore->data;
+		cc_interfaces->done = 1;
+	}
+
+	if ((cc_recall_datastore = ast_channel_datastore_find(chan, &recall_ds_info, NULL))) {
+		recall_cc_data = cc_recall_datastore->data;
+		recall_cc_data->done = 1;
+	}
+	ast_channel_unlock(chan);
+}
+
+int ast_cc_offer(struct ast_channel *caller_chan)
+{
+	int core_id;
+	int res = -1;
+	struct ast_datastore *datastore;
+	struct dialed_cc_interfaces *cc_interfaces;
+	char cc_is_offerable;
+	
+	ast_channel_lock(caller_chan);
+	if (!(datastore = ast_channel_datastore_find(caller_chan, &dialed_cc_interfaces_info, NULL))) {
+		ast_channel_unlock(caller_chan);
+		return res;
+	}
+
+	cc_interfaces = datastore->data;
+	cc_is_offerable = cc_interfaces->cc_is_offerable;
+	core_id = cc_interfaces->core_id;
+	ast_channel_unlock(caller_chan);
+
+	if (cc_is_offerable) {
+		res = cc_request_state_change(CC_CALLER_OFFERED, core_id, "Offer CC to caller");
+	}
+	return res;
+}
+
+int ast_cc_accept_request(int core_id, const char * const debug)
+{
+	return cc_request_state_change(CC_CALLER_REQUESTED, core_id, debug);
+}
+
+int ast_cc_request_acknowledged(int core_id, const char * const debug)
+{
+	return cc_request_state_change(CC_ACTIVE, core_id, debug);
+}
+
+int ast_cc_callee_available(struct ast_cc_monitor *monitor) {
+	return ast_taskprocessor_push(cc_core_taskprocessor, cc_devstate_change,
+			cc_ref(monitor, "Bump reference count until cc_devstate_change executes"));
+}
+
+int ast_cc_caller_busy(int core_id, const char * debug)
+{
+	return cc_request_state_change(CC_CALLER_BUSY, core_id, debug);
+}
+
+int ast_cc_caller_available(int core_id, const char * const debug)
+{
+	return cc_request_state_change(CC_ACTIVE, core_id, debug);
+}
+
+int ast_cc_recalling(int core_id, const char * const debug)
+{
+	return cc_request_state_change(CC_RECALLING, core_id, debug);
+}
+
+int ast_cc_completed(struct ast_channel *chan, const char * const debug)
+{
+	struct ast_datastore *recall_datastore;
+	struct cc_recall_ds_data *recall_data;
+	int core_id;
+
+	ast_channel_lock(chan);
+	if (!(recall_datastore = ast_channel_datastore_find(chan, &recall_ds_info, NULL))) {
+		/* Silly! Why did you call this function if there's no recall DS? */
+		ast_channel_unlock(chan);
+		return -1;
+	}
+	recall_data = recall_datastore->data;
+	if (recall_data->nested || recall_data->done) {
+		/* If this is being called from a nested Dial, it is too
+		 * early to determine if the recall has actually completed.
+		 * The outermost dial is the only one with the authority to
+		 * declare the recall to be complete.
+		 *
+		 * Similarly, if this function has been called when the 
+		 * recall has progressed beyond the first dial, this is not
+		 * a legitimate time to declare the recall to be done. In fact,
+		 * that should have been done already.
+		 */
+		ast_channel_unlock(chan);
+		return -1;
+	}
+
+	core_id = recall_data->core_id;
+	ast_channel_unlock(chan);
+	return cc_request_state_change(CC_COMPLETE, core_id, debug);
+}
+
+int ast_cc_failed(int core_id, const char * const debug)
+{
+	return cc_request_state_change(CC_FAILED, core_id, debug);
+}
+
+static int cc_status_request(void *data)
+{
+	struct cc_core_instance *core_instance= data;
+	int res;
+
+	res = core_instance->agent->callbacks->status_request(core_instance->agent);
+	cc_unref(core_instance, "Status request finished. Unref core instance");
+	return res;
+}
+
+int ast_cc_status_request(int core_id)
+{
+	struct cc_core_instance *core_instance = find_cc_core_instance(core_id);
+
+	if (!core_instance) {
+		return -1;
+	}
+
+	return ast_taskprocessor_push(cc_core_taskprocessor, cc_status_request,
+			cc_ref(core_instance, "Ref core instance for status request callback"));
+}
+
+struct cc_status_response_args {
+	enum ast_device_state devstate;
+	struct cc_core_instance *core_instance;
+};
+
+static int cc_status_response(void *data)
+{
+	struct cc_status_response_args *args;
+	struct cc_core_instance *core_instance = args->core_instance;
+	enum ast_device_state devstate = args->devstate;
+	int res;
+
+	res = core_instance->monitor->callbacks->status_response(core_instance->monitor, core_instance->core_id, devstate);
+	cc_unref(core_instance, "Status response finished. Unref core instance");
+	return res;
+}
+
+int ast_cc_status_response(int core_id, enum ast_device_state devstate)
+{
+	struct cc_core_instance *core_instance = find_cc_core_instance(core_id);
+
+	if (!core_instance || !core_instance->monitor) {
+		return -1;
+	}
+
+	return ast_taskprocessor_push(cc_core_taskprocessor, cc_status_response,
+			cc_ref(core_instance, "Ref core instance for status response callback"));
+}
+
+static char *ccreq_app = "CallCompletionRequest";
+
+static int ccreq_exec(struct ast_channel *chan, const char *data)
+{
+	struct cc_core_instance *core_instance;
+	char interface[AST_CHANNEL_NAME];
+	unsigned long match_flags;
+	int res;
+
+	ast_channel_get_device_name(chan, interface, sizeof(interface));
+
+	match_flags = MATCH_NO_MONITOR;
+	if (!(core_instance = ao2_t_callback_data(cc_core_instances, 0, match_agent, interface, &match_flags, "Find core instance for CallCompletionRequest"))) {
+		ast_log_dynamic_level(cc_logger_level, "Couldn't find a core instance for caller %s\n", interface);
+		return -1;
+	}
+
+	ast_log_dynamic_level(cc_logger_level, "Found core_instance with core_id %d\n", core_instance->core_id);
+
+	if (strcmp(core_instance->agent->callbacks->type, "generic")) {
+		ast_log_dynamic_level(cc_logger_level, "CallCompletionRequest is only for generic agent types.\n");
+		cc_unref(core_instance, "Unref core_instance since CallCompletionRequest was called with native agent");
+		return -1;
+	}
+
+	if (!ast_cc_request_is_within_limits()) {
+		ast_log_dynamic_level(cc_logger_level, "CallCompletionRequest failed. Too many requests in the system\n");
+		ast_cc_failed(core_instance->core_id, "Too many CC requests\n");
+		return -1;
+	}
+
+	res = ast_cc_accept_request(core_instance->core_id, "CallCompletionRequest called");
+	cc_unref(core_instance, "Done with CallCompletionRequest");
+	return res;
+}
+
+static char *cccancel_app = "CallCompletionCancel";
+
+static int cccancel_exec(struct ast_channel *chan, const char *data)
+{
+	struct cc_core_instance *core_instance;
+	char interface[AST_CHANNEL_NAME];
+	unsigned long match_flags;
+	int res;
+
+	ast_channel_get_device_name(chan, interface, sizeof(interface));
+
+	match_flags = MATCH_MONITOR;
+	if (!(core_instance = ao2_t_callback_data(cc_core_instances, 0, match_agent, interface, &match_flags, "Find core instance for CallCompletionCancel"))) {
+		ast_log(LOG_WARNING, "Cannot find CC transaction to cancel for caller %s\n", interface);
+		return -1;
+	}
+
+	if (strcmp(core_instance->agent->callbacks->type, "generic")) {
+		ast_log(LOG_WARNING, "CallCompletionCancel may only be used for calles with a generic agent\n");
+		cc_unref(core_instance, "Unref core instance found during CallCompletionCancel");
+		return -1;
+	}
+	res = ast_cc_failed(core_instance->core_id, "Call completion request Cancelled");
+	cc_unref(core_instance, "Unref core instance found during CallCompletionCancel");
+	return res;
+}
+
+
+int ast_cc_monitor_count(const char * const name, const char * const type)
+{
+	struct ast_cc_monitor *monitor;
+	int retval = 0;
+
+	if (!(monitor = find_monitor(name, type))) {
+		/* Can't find it, so there must not be any outstanding requests for it */
+		return 0;
+	}
+
+	retval = monitor->num_requests;
+	cc_unref(monitor, "Unref from ao2_find");
+	return retval;
+}
+
 
 static struct ast_cc_interface *root_interface_init(void)
 {




More information about the svn-commits mailing list