aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvidon2004-10-21 10:08:36 +0000
committervidon2004-10-21 10:08:36 +0000
commit354df4c977e0318a80ae9ea34be1e1aadc6a0030 (patch)
tree8d2c1b1f96a3ee9723253f782c0324e0945eb409
parentedecde03d204d275e82900f97bda51fa4273bddc (diff)
downloadivycpy-354df4c977e0318a80ae9ea34be1e1aadc6a0030.zip
ivycpy-354df4c977e0318a80ae9ea34be1e1aadc6a0030.tar.gz
ivycpy-354df4c977e0318a80ae9ea34be1e1aadc6a0030.tar.bz2
ivycpy-354df4c977e0318a80ae9ea34be1e1aadc6a0030.tar.xz
Ajout dans classe Ivy :
sendMsg getSelfIvyClient getIvyClients getIvyClientsByName Définition de la classe Ivy.IvyClient : getPtr getName getHost getMessages sendDirectMsg sendError
-rw-r--r--ivy.py79
1 files changed, 70 insertions, 9 deletions
diff --git a/ivy.py b/ivy.py
index 9ce6202..bad14bb 100644
--- a/ivy.py
+++ b/ivy.py
@@ -8,6 +8,27 @@ import threading
#A la reception d'un message, on recherche l'objet python associéa
import ivycpy
class Ivy:
+ class IvyClient:
+ def __init__(self, ptr):
+ self.ptr=ptr
+
+ def getPtr(self):
+ return self.ptr
+
+ def getName(self):
+ return ivycpy.IvyGetApplicationName(self.ptr)
+
+ def getHost(self):
+ return ivycpy.IvyGetApplicationHost(self.ptr)
+
+ def getMessages(self):
+ return ivycpy.IvyGetApplicationMessages(self.ptr)
+
+ def sendDirectMsg(self, id, message):
+ ivycpy.IvySendDirectMsg(self.ptr,id,message)
+
+ def sendError(self, id, error):
+ ivycpy.IvySendError(self.ptr,id,error)
class Domain:
def __init__(self, domainaddr, port):
@@ -30,6 +51,7 @@ class Ivy:
def __init__(self, name, message, aIvyApplicationListener):
self.lIvyApplicationlisteners=[]
+ self.dIvyClient={}
self.addApplicationListener(aIvyApplicationListener)
self.sReadyMessage=message
self.sAppName=name
@@ -58,14 +80,19 @@ class Ivy:
except ValueError, x:
IvyException(str(x))()
- def _appliCallback(self, connected):
+ def _appliCallback(self, ivyclient, connected):
#TODO
#Suivant le type ( connexion ou deconnexion )
##appeler _connect ou _disconnect
+ if not self.dIvyClient.has_key(ivyclient):
+ ivyClient=IvyClient(ivyclient)
+ self.dIvyClient[ivyclient]=ivyClient
+ else:
+ ivyClient=dIvyClient[ivyclient]
if connected == ivycpy.IvyApplicationDisceonnected:
- self._connect()
+ self._connect(ivyClient)
else:
- self._disconnect()
+ self._disconnect(ivyClient)
def _connect(self, *arg):
for listener in self.lIvyApplicationlisteners:
@@ -75,13 +102,24 @@ class Ivy:
for listener in self.lIvyApplicationlisteners:
listener.disconnect(*arg)
- def _die(self,*arg):
- for listener in self.lIvyApplicationlisteners:
- listener.die(*arg)
+ def _die(self,ivyclient):
+ try:
+ ivyClient=dIvyClient[ivyclient]
+ except KeyError:
+ ivyClient=IvyClient(ivyclient)
+ self.dIvyClient[ivyclient]=ivyClient
- def _directMessage(*arg):
for listener in self.lIvyApplicationlisteners:
- listener.directMessage(*arg)
+ listener.die(ivyclient)
+
+ def _directMessage(self, ivyclient, *arg):
+ try:
+ ivyClient=dIvyClient[ivyclient]
+ except KeyError:
+ ivyClient=IvyClient(ivyclient)
+ self.dIvyClient[ivyclient]=ivyClient
+ for listener in self.lIvyApplicationlisteners:
+ listener.directMessage(ivyClient,*arg)
def bindMsg(self, regexp, aIvyMessageListener):
id=ivycpy.IvyBindMsg(aIvyMessageListener.receive,
@@ -98,7 +136,30 @@ class Ivy:
else:
IvyException("This expression not existed")()
-
+ def sendMsg(self, message):
+ return ivycpy.IvySendMsg(message)
+
+ def getSelfIvyClient(self):
+ return self.getIvyClientsByName(self.sAppName)
+
+ def getIvyClients(self):
+ livyclient=ivycpy.IvyGetApplicationList().split()
+ lIvyClient=[]
+ for client in livyclient:
+ print "client %s"%client
+ ivyClient=self.getIvyClientsByName(client)
+ lIvyClient.append(ivyClient)
+ return lIvyClient
+
+ def getIvyClientsByName(self, name):
+ ivyclient=ivycpy.IvyGetApplication(name)
+ try:
+ ivyClient=dIvyClient[ivyclient]
+ except KeyError:
+ ivyClient=IvyClient(ivyclient)
+ self.dIvyClient[ivyclient]=ivyClient
+ return ivyClient
+
# public interface IvyApplicationListener extends java.util.EventListener {
# /**
# * invoked when a Ivy Client has joined the bus