tree 7912769cc69c1c1b808f4dcd3f739e3249042155
parent 913969b3999a22cd64a3fdb2584dae8e3ae10ef0
author Pavlin Radoslavov <pavlin@onlab.us> 1408578311 -0700
committer Saurav Das <sauravdas@alumni.stanford.edu> 1409942843 -0700

Added an interface for the TopologyPublisher to publish operations to
the Topology Replication Writer

ONOS-1906

 * Added new interface ITopologyReplicationWriter that should be implemented
   by the (forthcoming) Topology Replication Writer. After this
   writer is implemented, it should be created inside class
   TopologyModule (similar to class TopologyManager), and
   method TopologyModule.publish() should be modified to make the appropriate
   call.

 * Added new interface ITopologyPublisherService that exposes the
   TopologyPublisher to other modules.
   Currently, it includes only method publish() that can be used to
   pre-populate the topology (e.g., by topology operations from a
   configuration file).

 * Updated class TopologyBatchOperation:
   - The object type is TopologyEvent
   - Renamed methods addAddTopologyOperation and addRemoveTopologyOperation
     to appendAddOperation() and appendRemoveOperation() respectively

 * Updated the TopologyPublisher internals to generalize the publishing
   operation inside method TopologyPublisher.publishTopologyOperations()
   NOTE: Inside that method that is a temporary flag "isGlobalLogWriter"
   (set to false by default) that can be used to start experimenting with
   the forthcoming Global Log-based mechanism (when the rest of the components
   are ready).
   NOTE: As a short-term solution, added class DelayedOperationsHandler
   as a hack to deal with Link Events that need to be delayed
   (in case of GlobalLog mechanism).

Change-Id: I72bd3c4bea46020be283e3bd518ba3bf900d6f0a
