[svn-commits] dlee: branch dlee/stasis-cache-split r393859 - in /team/dlee/stasis-cache-spl...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Jul 8 17:06:17 CDT 2013


Author: dlee
Date: Mon Jul  8 17:06:14 2013
New Revision: 393859

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=393859
Log:
More ripples

Modified:
    team/dlee/stasis-cache-split/apps/app_voicemail.c
    team/dlee/stasis-cache-split/apps/confbridge/confbridge_manager.c
    team/dlee/stasis-cache-split/channels/chan_dahdi.c
    team/dlee/stasis-cache-split/channels/chan_iax2.c
    team/dlee/stasis-cache-split/channels/chan_mgcp.c
    team/dlee/stasis-cache-split/channels/chan_sip.c
    team/dlee/stasis-cache-split/channels/chan_unistim.c
    team/dlee/stasis-cache-split/channels/sig_pri.c
    team/dlee/stasis-cache-split/main/app.c
    team/dlee/stasis-cache-split/main/cdr.c
    team/dlee/stasis-cache-split/main/cel.c
    team/dlee/stasis-cache-split/main/devicestate.c
    team/dlee/stasis-cache-split/main/manager_bridging.c
    team/dlee/stasis-cache-split/main/manager_channels.c
    team/dlee/stasis-cache-split/main/manager_endpoints.c
    team/dlee/stasis-cache-split/main/presencestate.c
    team/dlee/stasis-cache-split/main/stasis_bridging.c
    team/dlee/stasis-cache-split/res/res_sip_mwi.c
    team/dlee/stasis-cache-split/res/res_stasis.c
    team/dlee/stasis-cache-split/res/stasis/control.c
    team/dlee/stasis-cache-split/res/stasis_http/resource_bridges.c
    team/dlee/stasis-cache-split/res/stasis_http/resource_channels.c
    team/dlee/stasis-cache-split/res/stasis_http/resource_endpoints.c
    team/dlee/stasis-cache-split/tests/test_cel.c
    team/dlee/stasis-cache-split/tests/test_stasis.c
    team/dlee/stasis-cache-split/tests/test_stasis_endpoints.c

Modified: team/dlee/stasis-cache-split/apps/app_voicemail.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/apps/app_voicemail.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/apps/app_voicemail.c (original)
+++ team/dlee/stasis-cache-split/apps/app_voicemail.c Mon Jul  8 17:06:14 2013
@@ -12640,7 +12640,7 @@
 	mwi_sub_sub = stasis_subscribe(ast_mwi_topic_all(), mwi_event_cb, NULL);
 
 	if (mwi_sub_sub) {
-		struct ao2_container *cached = stasis_cache_dump(ast_mwi_topic_cached(), stasis_subscription_change_type());
+		struct ao2_container *cached = stasis_cache_dump(ast_mwi_state_cache(), stasis_subscription_change_type());
 		if (cached) {
 			ao2_callback(cached, OBJ_MULTIPLE | OBJ_NODATA, dump_cache, NULL);
 		}

Modified: team/dlee/stasis-cache-split/apps/confbridge/confbridge_manager.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/apps/confbridge/confbridge_manager.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/apps/confbridge/confbridge_manager.c (original)
+++ team/dlee/stasis-cache-split/apps/confbridge/confbridge_manager.c Mon Jul  8 17:06:14 2013
@@ -341,7 +341,7 @@
 	STASIS_MESSAGE_TYPE_INIT(confbridge_talking_type);
 
 	bridge_state_router = stasis_message_router_create(
-		stasis_caching_get_topic(ast_bridge_topic_all_cached()));
+		ast_bridge_topic_all_cached());
 
 	if (!bridge_state_router) {
 		return -1;
@@ -412,7 +412,7 @@
 	}
 
 	channel_state_router = stasis_message_router_create(
-		stasis_caching_get_topic(ast_channel_topic_all_cached()));
+		ast_channel_topic_all_cached());
 
 	if (!channel_state_router) {
 		manager_confbridge_shutdown();

Modified: team/dlee/stasis-cache-split/channels/chan_dahdi.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/channels/chan_dahdi.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/channels/chan_dahdi.c (original)
+++ team/dlee/stasis-cache-split/channels/chan_dahdi.c Mon Jul  8 17:06:14 2013
@@ -5559,7 +5559,7 @@
 	}
 
 	ast_str_set(&uniqueid, 0, "%s@%s", mailbox, context);
-	mwi_message = stasis_cache_get(ast_mwi_topic_cached(), ast_mwi_state_type(), ast_str_buffer(uniqueid));
+	mwi_message = stasis_cache_get(ast_mwi_state_cache(), ast_mwi_state_type(), ast_str_buffer(uniqueid));
 
 	if (mwi_message) {
 		struct ast_mwi_state *mwi_state = stasis_message_data(mwi_message);

Modified: team/dlee/stasis-cache-split/channels/chan_iax2.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/channels/chan_iax2.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/channels/chan_iax2.c (original)
+++ team/dlee/stasis-cache-split/channels/chan_iax2.c Mon Jul  8 17:06:14 2013
@@ -8796,7 +8796,7 @@
 			}
 
 			ast_str_set(&uniqueid, 0, "%s@%s", mailbox, context);
-			msg = stasis_cache_get(ast_mwi_topic_cached(), ast_mwi_state_type(), ast_str_buffer(uniqueid));
+			msg = stasis_cache_get(ast_mwi_state_cache(), ast_mwi_state_type(), ast_str_buffer(uniqueid));
 
 			if (msg) {
 				struct ast_mwi_state *mwi_state = stasis_message_data(msg);

Modified: team/dlee/stasis-cache-split/channels/chan_mgcp.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/channels/chan_mgcp.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/channels/chan_mgcp.c (original)
+++ team/dlee/stasis-cache-split/channels/chan_mgcp.c Mon Jul  8 17:06:14 2013
@@ -507,7 +507,7 @@
 
 	ast_str_set(&uniqueid, 0, "%s@%s", mbox, cntx);
 
-	msg = stasis_cache_get(ast_mwi_topic_cached(), ast_mwi_state_type(), ast_str_buffer(uniqueid));
+	msg = stasis_cache_get(ast_mwi_state_cache(), ast_mwi_state_type(), ast_str_buffer(uniqueid));
 
 	if (msg) {
 		struct ast_mwi_state *mwi_state = stasis_message_data(msg);

Modified: team/dlee/stasis-cache-split/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/channels/chan_sip.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/channels/chan_sip.c (original)
+++ team/dlee/stasis-cache-split/channels/chan_sip.c Mon Jul  8 17:06:14 2013
@@ -28348,7 +28348,7 @@
 		ast_str_reset(uniqueid);
 		ast_str_set(&uniqueid, 0, "%s@%s", mailbox->mailbox, S_OR(mailbox->context, "default"));
 
-		msg = stasis_cache_get(ast_mwi_topic_cached(), ast_mwi_state_type(), ast_str_buffer(uniqueid));
+		msg = stasis_cache_get(ast_mwi_state_cache(), ast_mwi_state_type(), ast_str_buffer(uniqueid));
 		if (!msg) {
 			continue;
 		}

Modified: team/dlee/stasis-cache-split/channels/chan_unistim.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/channels/chan_unistim.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/channels/chan_unistim.c (original)
+++ team/dlee/stasis-cache-split/channels/chan_unistim.c Mon Jul  8 17:06:14 2013
@@ -5500,7 +5500,7 @@
 
 	ast_str_set(&uniqueid, 0, "%s@%s", mailbox, context);
 
-	msg = stasis_cache_get(ast_mwi_topic_cached(), ast_mwi_state_type(), ast_str_buffer(uniqueid));
+	msg = stasis_cache_get(ast_mwi_state_cache(), ast_mwi_state_type(), ast_str_buffer(uniqueid));
 
 	if (msg) {
 		struct ast_mwi_state *mwi_state = stasis_message_data(msg);

Modified: team/dlee/stasis-cache-split/channels/sig_pri.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/channels/sig_pri.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/channels/sig_pri.c (original)
+++ team/dlee/stasis-cache-split/channels/sig_pri.c Mon Jul  8 17:06:14 2013
@@ -8956,7 +8956,7 @@
 		ast_str_reset(uniqueid);
 		ast_str_set(&uniqueid, 0, "%s@%s", pri->mbox[idx].number, pri->mbox[idx].context);
 
-		msg = stasis_cache_get(ast_mwi_topic_cached(), ast_mwi_state_type(), ast_str_buffer(uniqueid));
+		msg = stasis_cache_get(ast_mwi_state_cache(), ast_mwi_state_type(), ast_str_buffer(uniqueid));
 		if (!msg) {
 			/* No cached event for this mailbox. */
 			continue;

Modified: team/dlee/stasis-cache-split/main/app.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/main/app.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/main/app.c (original)
+++ team/dlee/stasis-cache-split/main/app.c Mon Jul  8 17:06:14 2013
@@ -88,6 +88,7 @@
  * @{ \brief Define \ref stasis topic objects for MWI
  */
 static struct stasis_topic *mwi_topic_all;
+static struct stasis_cache *mwi_state_cache;
 static struct stasis_caching_topic *mwi_topic_cached;
 static struct stasis_topic_pool *mwi_topic_pool;
 /* @} */
@@ -2696,9 +2697,14 @@
 	return mwi_topic_all;
 }
 
-struct stasis_caching_topic *ast_mwi_topic_cached(void)
-{
-	return mwi_topic_cached;
+struct stasis_cache *ast_mwi_state_cache(void)
+{
+	return mwi_state_cache;
+}
+
+struct stasis_topic *ast_mwi_topic_cached(void)
+{
+	return stasis_caching_get_topic(mwi_topic_cached);
 }
 
 struct stasis_topic *ast_mwi_topic(const char *uniqueid)
@@ -2754,7 +2760,7 @@
 
 	if (!ast_strlen_zero(channel_id)) {
 		RAII_VAR(struct stasis_message *, chan_message,
-			stasis_cache_get(ast_channel_topic_all_cached(),
+			stasis_cache_get(ast_channel_cache(),
 					ast_channel_snapshot_type(),
 					channel_id),
 			ao2_cleanup);
@@ -2855,7 +2861,12 @@
 	if (!mwi_topic_all) {
 		return -1;
 	}
-	mwi_topic_cached = stasis_caching_topic_create(mwi_topic_all, mwi_state_get_id);
+	mwi_state_cache = stasis_cache_create(mwi_state_get_id);
+	if (!mwi_state_cache) {
+		return -1;
+	}
+	mwi_topic_cached = stasis_caching_topic_create(mwi_topic_all,
+		mwi_state_cache);
 	if (!mwi_topic_cached) {
 		return -1;
 	}

Modified: team/dlee/stasis-cache-split/main/cdr.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/main/cdr.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/main/cdr.c (original)
+++ team/dlee/stasis-cache-split/main/cdr.c Mon Jul  8 17:06:14 2013
@@ -4017,11 +4017,11 @@
 		return -1;
 	}
 
-	channel_subscription = stasis_forward_all(stasis_caching_get_topic(ast_channel_topic_all_cached()), cdr_topic);
+	channel_subscription = stasis_forward_all(ast_channel_topic_all_cached(), cdr_topic);
 	if (!channel_subscription) {
 		return -1;
 	}
-	bridge_subscription = stasis_forward_all(stasis_caching_get_topic(ast_bridge_topic_all_cached()), cdr_topic);
+	bridge_subscription = stasis_forward_all(ast_bridge_topic_all_cached(), cdr_topic);
 	if (!bridge_subscription) {
 		return -1;
 	}

Modified: team/dlee/stasis-cache-split/main/cel.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/main/cel.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/main/cel.c (original)
+++ team/dlee/stasis-cache-split/main/cel.c Mon Jul  8 17:06:14 2013
@@ -1463,14 +1463,14 @@
 	}
 
 	cel_channel_forwarder = stasis_forward_all(
-		stasis_caching_get_topic(ast_channel_topic_all_cached()),
+		ast_channel_topic_all_cached(),
 		cel_aggregation_topic);
 	if (!cel_channel_forwarder) {
 		return -1;
 	}
 
 	cel_bridge_forwarder = stasis_forward_all(
-		stasis_caching_get_topic(ast_bridge_topic_all_cached()),
+		ast_bridge_topic_all_cached(),
 		cel_aggregation_topic);
 	if (!cel_bridge_forwarder) {
 		return -1;

Modified: team/dlee/stasis-cache-split/main/devicestate.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/main/devicestate.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/main/devicestate.c (original)
+++ team/dlee/stasis-cache-split/main/devicestate.c Mon Jul  8 17:06:14 2013
@@ -196,6 +196,7 @@
 struct stasis_subscription *devstate_message_sub;
 
 static struct stasis_topic *device_state_topic_all;
+static struct stasis_cache *device_state_cache;
 static struct stasis_caching_topic *device_state_topic_cached;
 static struct stasis_topic_pool *device_state_topic_pool;
 
@@ -285,7 +286,7 @@
 	RAII_VAR(struct stasis_message *, cached_msg, NULL, ao2_cleanup);
 	struct ast_device_state_message *device_state;
 
-	cached_msg = stasis_cache_get(ast_device_state_topic_cached(), ast_device_state_message_type(), device);
+	cached_msg = stasis_cache_get(ast_device_state_cache(), ast_device_state_message_type(), device);
 	if (!cached_msg) {
 		return AST_DEVICE_UNKNOWN;
 	}
@@ -586,7 +587,7 @@
 
 	ast_devstate_aggregate_init(&aggregate);
 
-	cached = stasis_cache_dump(ast_device_state_topic_cached(), NULL);
+	cached = stasis_cache_dump(ast_device_state_cache(), NULL);
 
 	ao2_callback_data(cached, OBJ_NODATA, devstate_change_aggregator_cb, &aggregate, device);
 
@@ -598,7 +599,7 @@
 	RAII_VAR(struct stasis_message *, cached_aggregate_msg, NULL, ao2_cleanup);
 	struct ast_device_state_message *cached_aggregate_device_state;
 
-	cached_aggregate_msg = stasis_cache_get(ast_device_state_topic_cached(), ast_device_state_message_type(), device);
+	cached_aggregate_msg = stasis_cache_get(ast_device_state_cache(), ast_device_state_message_type(), device);
 	if (!cached_aggregate_msg) {
 		return 1;
 	}
@@ -719,9 +720,14 @@
 	return device_state_topic_all;
 }
 
-struct stasis_caching_topic *ast_device_state_topic_cached(void)
-{
-	return device_state_topic_cached;
+struct stasis_cache *ast_device_state_cache(void)
+{
+	return device_state_cache;
+}
+
+struct stasis_topic *ast_device_state_topic_cached(void)
+{
+	return stasis_caching_get_topic(device_state_topic_cached);
 }
 
 struct stasis_topic *ast_device_state_topic(const char *device)
@@ -794,7 +800,11 @@
 	if (!device_state_topic_all) {
 		return -1;
 	}
-	device_state_topic_cached = stasis_caching_topic_create(device_state_topic_all, device_state_get_id);
+	device_state_cache = stasis_cache_create(device_state_get_id);
+	if (!device_state_cache) {
+		return -1;
+	}
+	device_state_topic_cached = stasis_caching_topic_create(device_state_topic_all, device_state_cache);
 	if (!device_state_topic_cached) {
 		return -1;
 	}
@@ -803,7 +813,7 @@
 		return -1;
 	}
 
-	devstate_message_sub = stasis_subscribe(stasis_caching_get_topic(ast_device_state_topic_cached()), devstate_change_collector_cb, NULL);
+	devstate_message_sub = stasis_subscribe(ast_device_state_topic_cached(), devstate_change_collector_cb, NULL);
 
 	if (!devstate_message_sub) {
 		ast_log(LOG_ERROR, "Failed to create subscription for the device state change collector\n");

Modified: team/dlee/stasis-cache-split/main/manager_bridging.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/main/manager_bridging.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/main/manager_bridging.c (original)
+++ team/dlee/stasis-cache-split/main/manager_bridging.c Mon Jul  8 17:06:14 2013
@@ -327,7 +327,7 @@
 		ast_str_set(&id_text, 0, "ActionID: %s\r\n", id);
 	}
 
-	bridges = stasis_cache_dump(ast_bridge_topic_all_cached(), ast_bridge_snapshot_type());
+	bridges = stasis_cache_dump(ast_bridge_cache(), ast_bridge_snapshot_type());
 	if (!bridges) {
 		astman_send_error(s, m, "Internal error");
 		return -1;
@@ -390,7 +390,7 @@
 		ast_str_set(&id_text, 0, "ActionID: %s\r\n", id);
 	}
 
-	msg = stasis_cache_get(ast_bridge_topic_all_cached(), ast_bridge_snapshot_type(), bridge_uniqueid);
+	msg = stasis_cache_get(ast_bridge_cache(), ast_bridge_snapshot_type(), bridge_uniqueid);
 	if (!msg) {
 		astman_send_error(s, m, "Specified BridgeUniqueid not found");
 		return -1;
@@ -447,7 +447,7 @@
 		return -1;
 	}
 
-	bridge_topic = stasis_caching_get_topic(ast_bridge_topic_all_cached());
+	bridge_topic = ast_bridge_topic_all_cached();
 	if (!bridge_topic) {
 		return -1;
 	}

Modified: team/dlee/stasis-cache-split/main/manager_channels.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/main/manager_channels.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/main/manager_channels.c (original)
+++ team/dlee/stasis-cache-split/main/manager_channels.c Mon Jul  8 17:06:14 2013
@@ -1254,7 +1254,7 @@
 	if (!message_router) {
 		return -1;
 	}
-	channel_topic = stasis_caching_get_topic(ast_channel_topic_all_cached());
+	channel_topic = ast_channel_topic_all_cached();
 	if (!channel_topic) {
 		return -1;
 	}

Modified: team/dlee/stasis-cache-split/main/manager_endpoints.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/main/manager_endpoints.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/main/manager_endpoints.c (original)
+++ team/dlee/stasis-cache-split/main/manager_endpoints.c Mon Jul  8 17:06:14 2013
@@ -49,7 +49,7 @@
 	struct stasis_topic *topic,
 	struct stasis_message *message)
 {
-	stasis_forward_message(ast_manager_get_topic(), stasis_caching_get_topic(ast_endpoint_topic_all_cached()), message);
+	stasis_forward_message(ast_manager_get_topic(), ast_endpoint_topic_all_cached(), message);
 }
 
 int manager_endpoints_init(void)
@@ -64,7 +64,7 @@
 
 	ast_register_atexit(manager_endpoints_shutdown);
 
-	endpoint_topic = stasis_caching_get_topic(ast_endpoint_topic_all_cached());
+	endpoint_topic = ast_endpoint_topic_all_cached();
 	if (!endpoint_topic) {
 		return -1;
 	}

Modified: team/dlee/stasis-cache-split/main/presencestate.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/main/presencestate.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/main/presencestate.c (original)
+++ team/dlee/stasis-cache-split/main/presencestate.c Mon Jul  8 17:06:14 2013
@@ -54,8 +54,9 @@
 };
 
 STASIS_MESSAGE_TYPE_DEFN(ast_presence_state_message_type);
-struct stasis_topic *presence_state_topic_all;
-struct stasis_caching_topic *presence_state_topic_cached;
+static struct stasis_topic *presence_state_topic_all;
+static struct stasis_cache *presence_state_cache;
+static struct stasis_caching_topic *presence_state_topic_cached;
 
 /*! \brief  A presence state provider */
 struct presence_state_provider {
@@ -95,7 +96,7 @@
 	RAII_VAR(struct stasis_message *, msg, NULL, ao2_cleanup);
 	struct ast_presence_state_message *presence_state;
 
-	msg = stasis_cache_get(ast_presence_state_topic_cached(), ast_presence_state_message_type(), presence_provider);
+	msg = stasis_cache_get(ast_presence_state_cache(), ast_presence_state_message_type(), presence_provider);
 
 	if (!msg) {
 		return res;
@@ -294,9 +295,14 @@
 	return presence_state_topic_all;
 }
 
-struct stasis_caching_topic *ast_presence_state_topic_cached(void)
-{
-	return presence_state_topic_cached;
+struct stasis_cache *ast_presence_state_cache(void)
+{
+	return presence_state_cache;
+}
+
+struct stasis_topic *ast_presence_state_topic_cached(void)
+{
+	return stasis_caching_get_topic(presence_state_topic_cached);
 }
 
 static const char *presence_state_get_id(struct stasis_message *msg)
@@ -331,7 +337,12 @@
 		return -1;
 	}
 
-	presence_state_topic_cached = stasis_caching_topic_create(presence_state_topic_all, presence_state_get_id);
+	presence_state_cache = stasis_cache_create(presence_state_get_id);
+	if (!presence_state_cache) {
+		return -1;
+	}
+
+	presence_state_topic_cached = stasis_caching_topic_create(presence_state_topic_all, presence_state_cache);
 	if (!presence_state_topic_cached) {
 		return -1;
 	}

Modified: team/dlee/stasis-cache-split/main/stasis_bridging.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/main/stasis_bridging.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/main/stasis_bridging.c (original)
+++ team/dlee/stasis-cache-split/main/stasis_bridging.c Mon Jul  8 17:06:14 2013
@@ -370,8 +370,11 @@
 /*! \brief Aggregate topic for bridge messages */
 static struct stasis_topic *bridge_topic_all;
 
+/*! \brief Cache for bridge snapshots */
+struct stasis_cache *bridge_cache;
+
 /*! \brief Caching aggregate topic for bridge snapshots */
-static struct stasis_caching_topic *bridge_topic_all_cached;
+static struct stasis_topic *bridge_topic_all_cached;
 
 /*! \brief Topic pool for individual bridge topics */
 static struct stasis_topic_pool *bridge_topic_pool;
@@ -429,14 +432,27 @@
 	return bridge_topic;
 }
 
+struct stasis_topic *ast_bridge_topic_cached(struct ast_bridge *bridge)
+{
+	struct stasis_topic *bridge_topic = stasis_topic_pool_get_topic(bridge_topic_pool, bridge->uniqueid);
+	if (!bridge_topic) {
+		return ast_bridge_topic_all_cached();
+	}
+	return bridge_topic;
+}
 struct stasis_topic *ast_bridge_topic_all(void)
 {
 	return bridge_topic_all;
 }
 
-struct stasis_caching_topic *ast_bridge_topic_all_cached(void)
-{
-	return bridge_topic_all_cached;
+struct stasis_cache *ast_bridge_cache(void)
+{
+	return bridge_cache;
+}
+
+struct stasis_topic *ast_bridge_topic_all_cached(void)
+{
+	return stasis_caching_get_topic(bridge_topic_all_cached);
 }
 
 void ast_bridge_publish_state(struct ast_bridge *bridge)
@@ -1000,7 +1016,7 @@
 
 	ast_assert(!ast_strlen_zero(uniqueid));
 
-	message = stasis_cache_get(ast_bridge_topic_all_cached(),
+	message = stasis_cache_get(ast_bridge_cache(),
 			ast_bridge_snapshot_type(),
 			uniqueid);
 	if (!message) {
@@ -1054,10 +1070,11 @@
 	STASIS_MESSAGE_TYPE_INIT(ast_blind_transfer_type);
 	STASIS_MESSAGE_TYPE_INIT(ast_attended_transfer_type);
 	bridge_topic_all = stasis_topic_create("ast_bridge_topic_all");
-	bridge_topic_all_cached = stasis_caching_topic_create(bridge_topic_all, bridge_snapshot_get_id);
+	bridge_cache = stasis_cache_create(bridge_snapshot_get_id);
+	bridge_topic_all_cached = stasis_topic_create("ast_bridge_topic_all_cached");
 	bridge_topic_pool = stasis_topic_pool_create(bridge_topic_all);
 
 	return !bridge_topic_all
-		|| !bridge_topic_all_cached
+		|| !bridge_cached
 		|| !bridge_topic_pool ? -1 : 0;
 }

Modified: team/dlee/stasis-cache-split/res/res_sip_mwi.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/res/res_sip_mwi.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/res/res_sip_mwi.c (original)
+++ team/dlee/stasis-cache-split/res/res_sip_mwi.c Mon Jul  8 17:06:14 2013
@@ -239,7 +239,7 @@
 	struct message_accumulator *counter = arg;
 	struct ast_mwi_state *mwi_state;
 
-	msg = stasis_cache_get(ast_mwi_topic_cached(), ast_mwi_state_type(), mwi_stasis->mailbox);
+	msg = stasis_cache_get(ast_mwi_state_cache(), ast_mwi_state_type(), mwi_stasis->mailbox);
 	if (!msg) {
 		return 0;
 	}

Modified: team/dlee/stasis-cache-split/res/res_stasis.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/res/res_stasis.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/res/res_stasis.c (original)
+++ team/dlee/stasis-cache-split/res/res_stasis.c Mon Jul  8 17:06:14 2013
@@ -940,7 +940,8 @@
 		return AST_MODULE_LOAD_FAILURE;
 	}
 
-	channel_router = stasis_message_router_create(stasis_caching_get_topic(ast_channel_topic_all_cached()));
+	channel_router = stasis_message_router_create(
+		ast_channel_topic_all_cached());
 	if (!channel_router) {
 		return AST_MODULE_LOAD_FAILURE;
 	}
@@ -960,7 +961,8 @@
 		return AST_MODULE_LOAD_FAILURE;
 	}
 
-	bridge_router = stasis_message_router_create(stasis_caching_get_topic(ast_bridge_topic_all_cached()));
+	bridge_router = stasis_message_router_create(
+		ast_bridge_topic_all_cached());
 	if (!bridge_router) {
 		return AST_MODULE_LOAD_FAILURE;
 	}

Modified: team/dlee/stasis-cache-split/res/stasis/control.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/res/stasis/control.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/res/stasis/control.c (original)
+++ team/dlee/stasis-cache-split/res/stasis/control.c Mon Jul  8 17:06:14 2013
@@ -237,13 +237,13 @@
 	const struct stasis_app_control *control)
 {
 	RAII_VAR(struct stasis_message *, msg, NULL, ao2_cleanup);
-	struct stasis_caching_topic *caching_topic;
+	struct stasis_cache *cache;
 	struct ast_channel_snapshot *snapshot;
 
-	caching_topic = ast_channel_topic_all_cached();
-	ast_assert(caching_topic != NULL);
-
-	msg = stasis_cache_get(caching_topic, ast_channel_snapshot_type(),
+	cache = ast_channel_cache();
+	ast_assert(cache != NULL);
+
+	msg = stasis_cache_get(cache, ast_channel_snapshot_type(),
 		stasis_app_control_get_channel_id(control));
 	if (!msg) {
 		return NULL;

Modified: team/dlee/stasis-cache-split/res/stasis_http/resource_bridges.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/res/stasis_http/resource_bridges.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/res/stasis_http/resource_bridges.c (original)
+++ team/dlee/stasis-cache-split/res/stasis_http/resource_bridges.c Mon Jul  8 17:06:14 2013
@@ -176,22 +176,22 @@
 
 void stasis_http_get_bridges(struct ast_variable *headers, struct ast_get_bridges_args *args, struct stasis_http_response *response)
 {
-	RAII_VAR(struct stasis_caching_topic *, caching_topic, NULL, ao2_cleanup);
+	RAII_VAR(struct stasis_cache *, cache, NULL, ao2_cleanup);
 	RAII_VAR(struct ao2_container *, snapshots, NULL, ao2_cleanup);
 	RAII_VAR(struct ast_json *, json, NULL, ast_json_unref);
 	struct ao2_iterator i;
 	void *obj;
 
-	caching_topic = ast_bridge_topic_all_cached();
-	if (!caching_topic) {
+	cache = ast_bridge_cache();
+	if (!cache) {
 		stasis_http_response_error(
 			response, 500, "Internal Server Error",
 			"Message bus not initialized");
 		return;
 	}
-	ao2_ref(caching_topic, +1);
-
-	snapshots = stasis_cache_dump(caching_topic, ast_bridge_snapshot_type());
+	ao2_ref(cache, +1);
+
+	snapshots = stasis_cache_dump(cache, ast_bridge_snapshot_type());
 	if (!snapshots) {
 		stasis_http_response_alloc_failed(response);
 		return;

Modified: team/dlee/stasis-cache-split/res/stasis_http/resource_channels.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/res/stasis_http/resource_channels.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/res/stasis_http/resource_channels.c (original)
+++ team/dlee/stasis-cache-split/res/stasis_http/resource_channels.c Mon Jul  8 17:06:14 2013
@@ -388,18 +388,18 @@
 			     struct stasis_http_response *response)
 {
 	RAII_VAR(struct stasis_message *, msg, NULL, ao2_cleanup);
-	struct stasis_caching_topic *caching_topic;
+	struct stasis_cache *cache;
 	struct ast_channel_snapshot *snapshot;
 
-	caching_topic = ast_channel_topic_all_cached();
-	if (!caching_topic) {
+	cache = ast_channel_cache();
+	if (!cache) {
 		stasis_http_response_error(
 			response, 500, "Internal Server Error",
 			"Message bus not initialized");
 		return;
 	}
 
-	msg = stasis_cache_get(caching_topic, ast_channel_snapshot_type(),
+	msg = stasis_cache_get(cache, ast_channel_snapshot_type(),
 			       args->channel_id);
 	if (!msg) {
 		stasis_http_response_error(
@@ -438,22 +438,22 @@
 			      struct ast_get_channels_args *args,
 			      struct stasis_http_response *response)
 {
-	RAII_VAR(struct stasis_caching_topic *, caching_topic, NULL, ao2_cleanup);
+	RAII_VAR(struct stasis_cache *, cache, NULL, ao2_cleanup);
 	RAII_VAR(struct ao2_container *, snapshots, NULL, ao2_cleanup);
 	RAII_VAR(struct ast_json *, json, NULL, ast_json_unref);
 	struct ao2_iterator i;
 	void *obj;
 
-	caching_topic = ast_channel_topic_all_cached();
-	if (!caching_topic) {
+	cache = ast_channel_cache();
+	if (!cache) {
 		stasis_http_response_error(
 			response, 500, "Internal Server Error",
 			"Message bus not initialized");
 		return;
 	}
-	ao2_ref(caching_topic, +1);
-
-	snapshots = stasis_cache_dump(caching_topic, ast_channel_snapshot_type());
+	ao2_ref(cache, +1);
+
+	snapshots = stasis_cache_dump(cache, ast_channel_snapshot_type());
 	if (!snapshots) {
 		stasis_http_response_alloc_failed(response);
 		return;

Modified: team/dlee/stasis-cache-split/res/stasis_http/resource_endpoints.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/res/stasis_http/resource_endpoints.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/res/stasis_http/resource_endpoints.c (original)
+++ team/dlee/stasis-cache-split/res/stasis_http/resource_endpoints.c Mon Jul  8 17:06:14 2013
@@ -37,22 +37,22 @@
 	struct ast_get_endpoints_args *args,
 	struct stasis_http_response *response)
 {
-	RAII_VAR(struct stasis_caching_topic *, caching_topic, NULL, ao2_cleanup);
+	RAII_VAR(struct stasis_cache *, cache, NULL, ao2_cleanup);
 	RAII_VAR(struct ao2_container *, snapshots, NULL, ao2_cleanup);
 	RAII_VAR(struct ast_json *, json, NULL, ast_json_unref);
 	struct ao2_iterator i;
 	void *obj;
 
-	caching_topic = ast_endpoint_topic_all_cached();
-	if (!caching_topic) {
+	cache = ast_endpoint_cache();
+	if (!cache) {
 		stasis_http_response_error(
 			response, 500, "Internal Server Error",
 			"Message bus not initialized");
 		return;
 	}
-	ao2_ref(caching_topic, +1);
+	ao2_ref(cache, +1);
 
-	snapshots = stasis_cache_dump(caching_topic, ast_endpoint_snapshot_type());
+	snapshots = stasis_cache_dump(cache, ast_endpoint_snapshot_type());
 	if (!snapshots) {
 		stasis_http_response_alloc_failed(response);
 		return;
@@ -83,7 +83,7 @@
 	struct ast_get_endpoints_by_tech_args *args,
 	struct stasis_http_response *response)
 {
-	RAII_VAR(struct stasis_caching_topic *, caching_topic, NULL, ao2_cleanup);
+	RAII_VAR(struct stasis_cache *, cache, NULL, ao2_cleanup);
 	RAII_VAR(struct ao2_container *, snapshots, NULL, ao2_cleanup);
 	RAII_VAR(struct ast_json *, json, NULL, ast_json_unref);
 	struct ao2_iterator i;
@@ -91,16 +91,16 @@
 
 	/* TODO - if tech isn't a recognized type of endpoint, it should 404 */
 
-	caching_topic = ast_endpoint_topic_all_cached();
-	if (!caching_topic) {
+	cache = ast_endpoint_cache();
+	if (!cache) {
 		stasis_http_response_error(
 			response, 500, "Internal Server Error",
 			"Message bus not initialized");
 		return;
 	}
-	ao2_ref(caching_topic, +1);
+	ao2_ref(cache, +1);
 
-	snapshots = stasis_cache_dump(caching_topic, ast_endpoint_snapshot_type());
+	snapshots = stasis_cache_dump(cache, ast_endpoint_snapshot_type());
 	if (!snapshots) {
 		stasis_http_response_alloc_failed(response);
 		return;

Modified: team/dlee/stasis-cache-split/tests/test_cel.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/tests/test_cel.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/tests/test_cel.c (original)
+++ team/dlee/stasis-cache-split/tests/test_cel.c Mon Jul  8 17:06:14 2013
@@ -145,14 +145,14 @@
 	if (!ast_hangup((channel))) { \
 		APPEND_EVENT(channel, AST_CEL_HANGUP, NULL, hangup_extra, NULL); \
 		APPEND_EVENT(channel, AST_CEL_CHANNEL_END, NULL, NULL, NULL); \
-		ao2_cleanup(stasis_cache_get_extended(ast_channel_topic_all_cached(), \
+		ao2_cleanup(stasis_cache_get_extended(ast_channel_cache(), \
 			ast_channel_snapshot_type(), ast_channel_uniqueid(channel), 1)); \
 		ao2_cleanup(channel); \
 		channel = NULL; \
 	} else { \
 		APPEND_EVENT(channel, AST_CEL_HANGUP, NULL, hangup_extra, NULL); \
 		APPEND_EVENT(channel, AST_CEL_CHANNEL_END, NULL, NULL, NULL); \
-		ao2_cleanup(stasis_cache_get_extended(ast_channel_topic_all_cached(), \
+		ao2_cleanup(stasis_cache_get_extended(ast_channel_cache(), \
 			ast_channel_snapshot_type(), ast_channel_uniqueid(channel), 1)); \
 		ao2_cleanup(channel); \
 	} \

Modified: team/dlee/stasis-cache-split/tests/test_stasis.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/tests/test_stasis.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/tests/test_stasis.c (original)
+++ team/dlee/stasis-cache-split/tests/test_stasis.c Mon Jul  8 17:06:14 2013
@@ -614,6 +614,7 @@
 {
 	RAII_VAR(struct stasis_message_type *, non_cache_type, NULL, ao2_cleanup);
 	RAII_VAR(struct stasis_topic *, topic, NULL, ao2_cleanup);
+	RAII_VAR(struct stasis_cache *, cache, NULL, ao2_cleanup);
 	RAII_VAR(struct stasis_caching_topic *, caching_topic, NULL, stasis_caching_unsubscribe);
 	RAII_VAR(struct consumer *, consumer, NULL, ao2_cleanup);
 	RAII_VAR(struct stasis_subscription *, sub, NULL, stasis_unsubscribe);
@@ -636,7 +637,9 @@
 	ast_test_validate(test, NULL != non_cache_type);
 	topic = stasis_topic_create("SomeTopic");
 	ast_test_validate(test, NULL != topic);
-	caching_topic = stasis_caching_topic_create(topic, cache_test_data_id);
+	cache = stasis_cache_create(cache_test_data_id);
+	ast_test_validate(test, NULL != cache);
+	caching_topic = stasis_caching_topic_create(topic, cache);
 	ast_test_validate(test, NULL != caching_topic);
 	consumer = consumer_create(1);
 	ast_test_validate(test, NULL != consumer);
@@ -664,6 +667,7 @@
 {
 	RAII_VAR(struct stasis_message_type *, cache_type, NULL, ao2_cleanup);
 	RAII_VAR(struct stasis_topic *, topic, NULL, ao2_cleanup);
+	RAII_VAR(struct stasis_cache *, cache, NULL, ao2_cleanup);
 	RAII_VAR(struct stasis_caching_topic *, caching_topic, NULL, stasis_caching_unsubscribe);
 	RAII_VAR(struct consumer *, consumer, NULL, ao2_cleanup);
 	RAII_VAR(struct stasis_subscription *, sub, NULL, stasis_unsubscribe);
@@ -689,7 +693,9 @@
 	ast_test_validate(test, NULL != cache_type);
 	topic = stasis_topic_create("SomeTopic");
 	ast_test_validate(test, NULL != topic);
-	caching_topic = stasis_caching_topic_create(topic, cache_test_data_id);
+	cache = stasis_cache_create(cache_test_data_id);
+	ast_test_validate(test, NULL != cache);
+	caching_topic = stasis_caching_topic_create(topic, cache);
 	ast_test_validate(test, NULL != caching_topic);
 	consumer = consumer_create(1);
 	ast_test_validate(test, NULL != consumer);
@@ -714,7 +720,7 @@
 	ast_test_validate(test, topic == actual_update->topic);
 	ast_test_validate(test, NULL == actual_update->old_snapshot);
 	ast_test_validate(test, test_message1_1 == actual_update->new_snapshot);
-	ast_test_validate(test, test_message1_1 == stasis_cache_get(caching_topic, cache_type, "1"));
+	ast_test_validate(test, test_message1_1 == stasis_cache_get(cache, cache_type, "1"));
 	/* stasis_cache_get returned a ref, so unref test_message1_1 */
 	ao2_ref(test_message1_1, -1);
 
@@ -723,7 +729,7 @@
 	ast_test_validate(test, topic == actual_update->topic);
 	ast_test_validate(test, NULL == actual_update->old_snapshot);
 	ast_test_validate(test, test_message2_1 == actual_update->new_snapshot);
-	ast_test_validate(test, test_message2_1 == stasis_cache_get(caching_topic, cache_type, "2"));
+	ast_test_validate(test, test_message2_1 == stasis_cache_get(cache, cache_type, "2"));
 	/* stasis_cache_get returned a ref, so unref test_message2_1 */
 	ao2_ref(test_message2_1, -1);
 
@@ -739,7 +745,7 @@
 	ast_test_validate(test, topic == actual_update->topic);
 	ast_test_validate(test, test_message2_1 == actual_update->old_snapshot);
 	ast_test_validate(test, test_message2_2 == actual_update->new_snapshot);
-	ast_test_validate(test, test_message2_2 == stasis_cache_get(caching_topic, cache_type, "2"));
+	ast_test_validate(test, test_message2_2 == stasis_cache_get(cache, cache_type, "2"));
 	/* stasis_cache_get returned a ref, so unref test_message2_2 */
 	ao2_ref(test_message2_2, -1);
 
@@ -755,7 +761,7 @@
 	ast_test_validate(test, topic == actual_update->topic);
 	ast_test_validate(test, test_message1_1 == actual_update->old_snapshot);
 	ast_test_validate(test, NULL == actual_update->new_snapshot);
-	ast_test_validate(test, NULL == stasis_cache_get(caching_topic, cache_type, "1"));
+	ast_test_validate(test, NULL == stasis_cache_get(cache, cache_type, "1"));
 
 	return AST_TEST_PASS;
 }
@@ -764,6 +770,7 @@
 {
 	RAII_VAR(struct stasis_message_type *, cache_type, NULL, ao2_cleanup);
 	RAII_VAR(struct stasis_topic *, topic, NULL, ao2_cleanup);
+	RAII_VAR(struct stasis_cache *, cache, NULL, ao2_cleanup);
 	RAII_VAR(struct stasis_caching_topic *, caching_topic, NULL, stasis_caching_unsubscribe);
 	RAII_VAR(struct consumer *, consumer, NULL, ao2_cleanup);
 	RAII_VAR(struct stasis_subscription *, sub, NULL, stasis_unsubscribe);
@@ -791,7 +798,9 @@
 	ast_test_validate(test, NULL != cache_type);
 	topic = stasis_topic_create("SomeTopic");
 	ast_test_validate(test, NULL != topic);
-	caching_topic = stasis_caching_topic_create(topic, cache_test_data_id);
+	cache = stasis_cache_create(cache_test_data_id);
+	ast_test_validate(test, NULL != cache);
+	caching_topic = stasis_caching_topic_create(topic, cache);
 	ast_test_validate(test, NULL != caching_topic);
 	consumer = consumer_create(1);
 	ast_test_validate(test, NULL != consumer);
@@ -811,7 +820,7 @@
 	ast_test_validate(test, 2 == actual_len);
 
 	/* Check the cache */
-	cache_dump = stasis_cache_dump(caching_topic, NULL);
+	cache_dump = stasis_cache_dump(cache, NULL);
 	ast_test_validate(test, NULL != cache_dump);
 	ast_test_validate(test, 2 == ao2_container_count(cache_dump));
 	i = ao2_iterator_init(cache_dump, 0);
@@ -829,7 +838,7 @@
 	ast_test_validate(test, 3 == actual_len);
 
 	/* Check the cache */
-	cache_dump = stasis_cache_dump(caching_topic, NULL);
+	cache_dump = stasis_cache_dump(cache, NULL);
 	ast_test_validate(test, NULL != cache_dump);
 	ast_test_validate(test, 2 == ao2_container_count(cache_dump));
 	i = ao2_iterator_init(cache_dump, 0);
@@ -847,7 +856,7 @@
 	ast_test_validate(test, 4 == actual_len);
 
 	/* Check the cache */
-	cache_dump = stasis_cache_dump(caching_topic, NULL);
+	cache_dump = stasis_cache_dump(cache, NULL);
 	ast_test_validate(test, NULL != cache_dump);
 	ast_test_validate(test, 1 == ao2_container_count(cache_dump));
 	i = ao2_iterator_init(cache_dump, 0);
@@ -858,7 +867,7 @@
 
 	/* Dump the cache to ensure that it has no subscription change items in it since those aren't cached */
 	ao2_cleanup(cache_dump);
-	cache_dump = stasis_cache_dump(caching_topic, stasis_subscription_change_type());
+	cache_dump = stasis_cache_dump(cache, stasis_subscription_change_type());
 	ast_test_validate(test, 0 == ao2_container_count(cache_dump));
 
 	return AST_TEST_PASS;

Modified: team/dlee/stasis-cache-split/tests/test_stasis_endpoints.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/tests/test_stasis_endpoints.c?view=diff&rev=393859&r1=393858&r2=393859
==============================================================================
--- team/dlee/stasis-cache-split/tests/test_stasis_endpoints.c (original)
+++ team/dlee/stasis-cache-split/tests/test_stasis_endpoints.c Mon Jul  8 17:06:14 2013
@@ -160,7 +160,7 @@
 	ast_test_validate(test, NULL != sink);
 
 	sub = stasis_subscribe(
-		stasis_caching_get_topic(ast_endpoint_topic_all_cached()),
+		ast_endpoint_topic_all_cached(),
 		stasis_message_sink_cb(), sink);
 	ast_test_validate(test, NULL != sub);
 




More information about the svn-commits mailing list