*/
package org.wamblee.xmlrouter.impl;
+import org.wamblee.general.Pair;
+
/**
* The XML Router configuration contains both configuration data as well as
* derived data used by the XML router. It is important that all this data is
public interface XMLRouterConfiguration {
/**
- * To be called before the configuration is updated. Corresponds to write
- * lock acquire.
- */
- void startConfigurationChange();
-
- /**
- * To be called after the configuration is updated. Corresponds to write
- * lock acquire.
- */
- void endConfigurationChange();
-
- /**
- * To be called before the configuration is used. Corresponds to read lock
- * acquire.
- */
- void startPublishEvent();
-
- /**
- * To be called after the configuration is used. Corresponds to read lock
- * release.
- */
- void endPublishEvent();
-
- /**
- * @return Configuration data.
+ * Atomically get the configuration. The XMLRouter uses this to get a
+ * snapshot of the configuration data for handling a single message. In this
+ * way a consistent configuration is used for each event.
+ *
+ * @return Configuration.
*/
- ExtendedRouterConfig getRouterConfig();
+ Pair<ExtendedRouterConfig, TransformationPaths> getConfig();
/**
- * Sets the configuration and updates derived data.
+ * Atomically sets the configuration and updates derived data. There will be
+ * a short time during which read attempts will fail.
*
* @param aConfig
* Configuration to set.
*/
void setRouterConfig(ExtendedRouterConfig aConfig);
-
- /**
- * @return Transformation paths (derived data).
- */
- TransformationPaths getTransformations();
}