Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'python/src/tcf/services/locator.py')
-rw-r--r--python/src/tcf/services/locator.py64
1 files changed, 42 insertions, 22 deletions
diff --git a/python/src/tcf/services/locator.py b/python/src/tcf/services/locator.py
index 51006cba1..c5c9d9770 100644
--- a/python/src/tcf/services/locator.py
+++ b/python/src/tcf/services/locator.py
@@ -1,5 +1,5 @@
-# *******************************************************************************
-# * Copyright (c) 2011 Wind River Systems, Inc. and others.
+# *****************************************************************************
+# * Copyright (c) 2011, 2012 Wind River Systems, Inc. and others.
# * All rights reserved. This program and the accompanying materials
# * are made available under the terms of the Eclipse Public License v1.0
# * which accompanies this distribution, and is available at
@@ -7,23 +7,25 @@
# *
# * Contributors:
# * Wind River Systems - initial API and implementation
-# *******************************************************************************
+# *****************************************************************************
"""
-Locator service uses transport layer to search for peers and to collect data about
-peer's attributes and capabilities (services). Discovery mechanism depends on transport protocol
-and is part of that protocol handler. Targets, known to other hosts, can be found through
-remote instances of Locator service. Automatically discovered targets require no further
-configuration. Additional targets can be configured manually.
+Locator service uses transport layer to search for peers and to collect data
+about peer's attributes and capabilities (services). Discovery mechanism
+depends on transport protocol and is part of that protocol handler. Targets,
+known to other hosts, can be found through remote instances of Locator service.
+Automatically discovered targets require no further configuration. Additional
+targets can be configured manually.
Clients should use protocol.getLocator() to obtain local instance of locator,
-then locator.getPeers() can be used to get list of available peers (hosts and targets).
+then locator.getPeers() can be used to get list of available peers (hosts and
+targets).
"""
from tcf import services
# Peer data retention period in milliseconds.
-DATA_RETENTION_PERIOD = 60 * 1000;
+DATA_RETENTION_PERIOD = 60 * 1000
# Auto-configuration protocol version.
CONF_VERSION = '2'
@@ -37,58 +39,76 @@ CONF_PEERS_REMOVED = 5
NAME = "Locator"
+
class LocatorService(services.Service):
+
def getName(self):
return NAME
+
def getPeers(self):
"""
Get map (ID -> IPeer) of available peers (hosts and targets).
- The method return cached (currently known to the framework) list of peers.
- The list is updated according to event received from transport layer
+ The method return cached (currently known to the framework) list of
+ peers. The list is updated according to event received from transport
+ layer.
"""
raise NotImplementedError("Abstract method")
+
def redirect(self, peer, done):
"""
- Redirect this service channel to given peer using this service as a proxy.
+ Redirect this service channel to given peer using this service as a
+ proxy.
@param peer - Peer ID or attributes map.
"""
raise NotImplementedError("Abstract method")
+
def sync(self, done):
"""
- Call back after TCF messages sent to this target up to this moment are delivered.
- This method is intended for synchronization of messages
- across multiple channels.
+ Call back after TCF messages sent to this target up to this moment are
+ delivered.
+ This method is intended for synchronization of messages across multiple
+ channels.
- Note: Cross channel synchronization can reduce performance and throughput.
- Most clients don't need channel synchronization and should not call this method.
+ Note: Cross channel synchronization can reduce performance and
+ throughput. Most clients don't need channel synchronization and
+ should not call this method.
- @param done will be executed by dispatch thread after communication
- messages are delivered to corresponding targets.
+ @param done - will be executed by dispatch thread after communication
+ messages are delivered to corresponding targets.
This is internal API, TCF clients should use module 'tcf.protocol'.
"""
raise NotImplementedError("Abstract method")
+
def addListener(self, listener):
"Add a listener for Locator service events."
raise NotImplementedError("Abstract method")
+
def removeListener(self, listener):
"Remove a listener for Locator service events."
raise NotImplementedError("Abstract method")
+
class DoneRedirect(object):
def doneRedirect(self, token, error):
pass
+
class DoneSync(object):
def doneSync(self, token):
pass
+
class LocatorListener(object):
+
def peerAdded(self, peer):
pass
+
def peerChanged(self, peer):
pass
- def peerRemoved(self, id):
+
+ def peerRemoved(self, peerID):
pass
- def peerHeartBeat(self, id):
+
+ def peerHeartBeat(self, peerID):
pass

Back to the top