# HG changeset patch # User Goffi # Date 1309907178 -7200 # Node ID f964dcec16111be684625fb5785bf4ad307fec96 # Parent 3ea41a199b36f4b3062d54c697869f475d0cfc36 core: plugins refactored according to bridge + updatedValue now use profile diff -r 3ea41a199b36 -r f964dcec1611 frontends/src/bridge/DBus.py --- a/frontends/src/bridge/DBus.py Wed Jul 06 01:04:24 2011 +0200 +++ b/frontends/src/bridge/DBus.py Wed Jul 06 01:06:18 2011 +0200 @@ -21,12 +21,12 @@ from bridge_frontend import BridgeFrontend import dbus, dbus.glib -from logging import debug +from logging import debug, error const_INT_PREFIX = "org.goffi.SAT" #Interface prefix const_OBJ_PATH = '/org/goffi/SAT/bridge' -const_COMM_SUFFIX = ".communication" -const_REQ_SUFFIX = ".request" +const_CORE_SUFFIX = ".core" +const_PLUGIN_SUFFIX = ".plugin" class BridgeExceptionNoService(Exception): pass @@ -37,194 +37,196 @@ self.sessions_bus = dbus.SessionBus() self.db_object = self.sessions_bus.get_object(const_INT_PREFIX, const_OBJ_PATH) - self.db_comm_iface = dbus.Interface(self.db_object, - dbus_interface=const_INT_PREFIX + const_COMM_SUFFIX) - self.db_req_iface = dbus.Interface(self.db_object, - dbus_interface=const_INT_PREFIX + const_REQ_SUFFIX) + self.db_core_iface = dbus.Interface(self.db_object, + dbus_interface=const_INT_PREFIX + const_CORE_SUFFIX) + self.db_plugin_iface = dbus.Interface(self.db_object, + dbus_interface=const_INT_PREFIX + const_PLUGIN_SUFFIX) except dbus.exceptions.DBusException,e: if e._dbus_error_name=='org.freedesktop.DBus.Error.ServiceUnknown': raise BridgeExceptionNoService else: raise e - #props = self.db_comm_iface.getProperties() + #props = self.db_core_iface.getProperties() - def register(self, functionName, handler, iface="communication"): - if iface == "communication": - self.db_comm_iface.connect_to_signal(functionName, handler) - elif iface == "request": - self.db_req_iface.connect_to_signal(functionName, handler) + def register(self, functionName, handler, iface="core"): + if iface == "core": + self.db_core_iface.connect_to_signal(functionName, handler) + elif iface == "plugin": + self.db_plugin_iface.connect_to_signal(functionName, handler) + else: + error(_('Unknown interface')) def addContact(self, entity, profile_key="@DEFAULT@"): - return self.db_comm_iface.addContact(entity, profile_key) + return self.db_core_iface.addContact(entity, profile_key) def asyncConnect(self, profile_key="@DEFAULT@", callback=None, errback=None): - return self.db_comm_iface.asyncConnect(profile_key, reply_handler=callback, error_handler=errback) + return self.db_core_iface.asyncConnect(profile_key, reply_handler=callback, error_handler=errback) def callMenu(self, category, name, menu_type, profile_key): - return unicode(self.db_req_iface.callMenu(category, name, menu_type, profile_key)) + return unicode(self.db_core_iface.callMenu(category, name, menu_type, profile_key)) def confirmationAnswer(self, id, accepted, data): - return self.db_req_iface.confirmationAnswer(id, accepted, data) + return self.db_core_iface.confirmationAnswer(id, accepted, data) def connect(self, profile_key="@DEFAULT@"): - return self.db_comm_iface.connect(profile_key) + return self.db_core_iface.connect(profile_key) def createProfile(self, profile): - return self.db_req_iface.createProfile(profile) + return self.db_core_iface.createProfile(profile) def delContact(self, entity, profile_key="@DEFAULT@"): - return self.db_comm_iface.delContact(entity, profile_key) + return self.db_core_iface.delContact(entity, profile_key) def deleteProfile(self, profile): - return self.db_req_iface.deleteProfile(profile) + return self.db_core_iface.deleteProfile(profile) def disconnect(self, profile_key="@DEFAULT@"): - return self.db_comm_iface.disconnect(profile_key) + return self.db_core_iface.disconnect(profile_key) def getConfig(self, section, name): - return unicode(self.db_comm_iface.getConfig(section, name)) + return unicode(self.db_core_iface.getConfig(section, name)) def getContacts(self, profile_key="@DEFAULT@"): - return self.db_comm_iface.getContacts(profile_key) + return self.db_core_iface.getContacts(profile_key) def getHistory(self, from_jid, to_jid, size): - return self.db_comm_iface.getHistory(from_jid, to_jid, size) + return self.db_core_iface.getHistory(from_jid, to_jid, size) def getMenuHelp(self, category, name, menu_type): - return unicode(self.db_req_iface.getMenuHelp(category, name, menu_type)) + return unicode(self.db_core_iface.getMenuHelp(category, name, menu_type)) def getMenus(self, ): - return self.db_req_iface.getMenus() + return self.db_core_iface.getMenus() def getParamA(self, name, category, attribute="value", profile_key="@DEFAULT@"): - return unicode(self.db_comm_iface.getParamA(name, category, attribute, profile_key)) + return unicode(self.db_core_iface.getParamA(name, category, attribute, profile_key)) def getParams(self, profile_key="@DEFAULT@"): - return unicode(self.db_comm_iface.getParams(profile_key)) + return unicode(self.db_core_iface.getParams(profile_key)) def getParamsCategories(self, ): - return self.db_comm_iface.getParamsCategories() + return self.db_core_iface.getParamsCategories() def getParamsForCategory(self, category, profile_key="@DEFAULT@"): - return unicode(self.db_comm_iface.getParamsForCategory(category, profile_key)) + return unicode(self.db_core_iface.getParamsForCategory(category, profile_key)) def getParamsUI(self, profile_key="@DEFAULT@"): - return unicode(self.db_comm_iface.getParamsUI(profile_key)) + return unicode(self.db_core_iface.getParamsUI(profile_key)) def getPresenceStatus(self, profile_key="@DEFAULT@"): - return self.db_comm_iface.getPresenceStatus(profile_key) + return self.db_core_iface.getPresenceStatus(profile_key) def getProfileName(self, profile_key="@DEFAULT@"): - return unicode(self.db_req_iface.getProfileName(profile_key)) + return unicode(self.db_core_iface.getProfileName(profile_key)) def getProfilesList(self, ): - return self.db_req_iface.getProfilesList() + return self.db_core_iface.getProfilesList() def getProgress(self, id): - return self.db_req_iface.getProgress(id) + return self.db_core_iface.getProgress(id) def getVersion(self, ): - return unicode(self.db_req_iface.getVersion()) + return unicode(self.db_core_iface.getVersion()) def getWaitingSub(self, profile_key="@DEFAULT@"): - return self.db_comm_iface.getWaitingSub(profile_key) + return self.db_core_iface.getWaitingSub(profile_key) def isConnected(self, profile_key="@DEFAULT@"): - return self.db_comm_iface.isConnected(profile_key) + return self.db_core_iface.isConnected(profile_key) def launchAction(self, action_type, data, profile_key="@DEFAULT@"): - return unicode(self.db_req_iface.launchAction(action_type, data, profile_key)) + return unicode(self.db_core_iface.launchAction(action_type, data, profile_key)) def registerNewAccount(self, login, password, email, host, port=5222): - return unicode(self.db_comm_iface.registerNewAccount(login, password, email, host, port)) + return unicode(self.db_core_iface.registerNewAccount(login, password, email, host, port)) def sendMessage(self, to_jid, message, subject='', mess_type="chat", profile_key="@DEFAULT@"): - return self.db_comm_iface.sendMessage(to_jid, message, subject, mess_type, profile_key) + return self.db_core_iface.sendMessage(to_jid, message, subject, mess_type, profile_key) def setParam(self, name, value, category, profile_key="@DEFAULT@"): - return self.db_comm_iface.setParam(name, value, category, profile_key) + return self.db_core_iface.setParam(name, value, category, profile_key) def setPresence(self, to_jid='', show='', priority=0, statuses={}, profile_key="@DEFAULT@"): - return self.db_comm_iface.setPresence(to_jid, show, priority, statuses, profile_key) + return self.db_core_iface.setPresence(to_jid, show, priority, statuses, profile_key) def subscription(self, sub_type, entity, profile_key="@DEFAULT@"): - return self.db_comm_iface.subscription(sub_type, entity, profile_key) + return self.db_core_iface.subscription(sub_type, entity, profile_key) def updateContact(self, entity, name, groups, profile_key="@DEFAULT@"): - return self.db_comm_iface.updateContact(entity, name, groups, profile_key) + return self.db_core_iface.updateContact(entity, name, groups, profile_key) #methods from plugins def getRoomJoined(self, profile_key='@DEFAULT@'): - return self.db_comm_iface.getRoomJoined(profile_key) + return self.db_plugin_iface.getRoomJoined(profile_key) def getRoomSubjects(self, profile_key='@DEFAULT@'): - return self.db_comm_iface.getRoomSubjects(profile_key) + return self.db_plugin_iface.getRoomSubjects(profile_key) def joinMUC(self, service, roomId, nick, profile_key='@DEFAULT@'): - return self.db_comm_iface.joinMUC(service, roomId, nick, profile_key) + return self.db_plugin_iface.joinMUC(service, roomId, nick, profile_key) def tarotGameLaunch(self, players, profile_key='@DEFAULT@'): - return self.db_comm_iface.tarotGameLaunch(players, profile_key) + return self.db_plugin_iface.tarotGameLaunch(players, profile_key) def tarotGameCreate(self, room_jid, players, profile_key='@DEFAULT@'): - return self.db_comm_iface.tarotGameCreate(room_jid, players, profile_key) + return self.db_plugin_iface.tarotGameCreate(room_jid, players, profile_key) def tarotGameReady(self, player, referee, profile_key='@DEFAULT@'): - return self.db_comm_iface.tarotGameReady(player, referee, profile_key) + return self.db_plugin_iface.tarotGameReady(player, referee, profile_key) def tarotGameContratChoosed(self, player, referee, contrat, profile_key='@DEFAULT@'): - return self.db_comm_iface.tarotGameContratChoosed(player, referee, contrat, profile_key) + return self.db_plugin_iface.tarotGameContratChoosed(player, referee, contrat, profile_key) def tarotGamePlayCards(self, player, referee, cards, profile_key='@DEFAULT@'): - return self.db_comm_iface.tarotGamePlayCards(player, referee, cards, profile_key) + return self.db_plugin_iface.tarotGamePlayCards(player, referee, cards, profile_key) def quizGameLaunch(self, players, profile_key='@DEFAULT@'): - return self.db_comm_iface.quizGameLaunch(players, profile_key) + return self.db_plugin_iface.quizGameLaunch(players, profile_key) def quizGameCreate(self, room_jid, players, profile_key='@DEFAULT@'): - return self.db_comm_iface.quizGameCreate(room_jid, players, profile_key) + return self.db_plugin_iface.quizGameCreate(room_jid, players, profile_key) def quizGameReady(self, player, referee, profile_key='@DEFAULT@'): - return self.db_comm_iface.quizGameReady(player, referee, profile_key) + return self.db_plugin_iface.quizGameReady(player, referee, profile_key) def quizGameAnswer(self, player, referee, answer, profile_key='@DEFAULT@'): - return self.db_comm_iface.quizGameAnswer(player, referee, answer, profile_key) + return self.db_plugin_iface.quizGameAnswer(player, referee, answer, profile_key) def sendFile(self, to, path, profile_key='@DEFAULT@'): - return self.db_comm_iface.sendFile(to, path, profile_key) + return self.db_plugin_iface.sendFile(to, path, profile_key) def findGateways(self, target, profile_key='@DEFAULT@'): - return self.db_comm_iface.findGateways(target, profile_key) + return self.db_plugin_iface.findGateways(target, profile_key) def getCard(self, target, profile_key='@DEFAULT@'): - return self.db_comm_iface.getCard(target, profile_key) + return self.db_plugin_iface.getCard(target, profile_key) def getCardCache(self, target): - return self.db_comm_iface.getCardCache(target) + return self.db_plugin_iface.getCardCache(target) def getAvatarFile(self, hash): - return self.db_comm_iface.getAvatarFile(hash) + return self.db_plugin_iface.getAvatarFile(hash) def in_band_register(self, target, profile_key='@DEFAULT@'): - return self.db_comm_iface.in_band_register(target, profile_key) + return self.db_plugin_iface.in_band_register(target, profile_key) def gatewayRegister(self, action, target, data, profile_key='@DEFAULT@'): if data == None: data = [('', '')] #XXX: we have to do this awful hack because python dbus need to guess the signature - return self.db_req_iface.gatewayRegister(action, target, data, profile_key) + return self.db_plugin_iface.gatewayRegister(action, target, data, profile_key) def getLastMicroblogs(self, jid, max_items, profile_key='@DEFAULT@', callback=None, errback=None): - return self.db_comm_iface.getLastMicroblogs(jid, max_items, profile_key, reply_handler=callback, error_handler=errback) + return self.db_plugin_iface.getLastMicroblogs(jid, max_items, profile_key, reply_handler=callback, error_handler=errback) def getMblogNodes(self, profile_key='@DEFAULT@', callback=None, errback=None): - return self.db_comm_iface.getMblogNodes(profile_key, reply_handler=callback, error_handler=errback) + return self.db_plugin_iface.getMblogNodes(profile_key, reply_handler=callback, error_handler=errback) def sendGroupBlog(self, groups, message, profile_key='@DEFAULT@'): - return self.db_comm_iface.sendGroupBlog(groups, message, profile_key) + return self.db_plugin_iface.sendGroupBlog(groups, message, profile_key) def sendPersonalEvent(self, event_type, data, profile_key='@DEFAULT@'): - return self.db_comm_iface.sendPersonalEvent(event_type, data, profile_key) + return self.db_plugin_iface.sendPersonalEvent(event_type, data, profile_key) def setMicroblogAccess(self, access="presence", profile_key='@DEFAULT@', callback=None, errback=None): - return self.db_comm_iface.setMicroblogAccess(access, profile_key, reply_handler=callback, error_handler=errback) + return self.db_plugin_iface.setMicroblogAccess(access, profile_key, reply_handler=callback, error_handler=errback) diff -r 3ea41a199b36 -r f964dcec1611 frontends/src/quick_frontend/quick_app.py --- a/frontends/src/quick_frontend/quick_app.py Wed Jul 06 01:04:24 2011 +0200 +++ b/frontends/src/quick_frontend/quick_app.py Wed Jul 06 01:06:18 2011 +0200 @@ -51,33 +51,33 @@ self.bridge.register("newMessage", self.newMessage) self.bridge.register("newAlert", self.newAlert) self.bridge.register("presenceUpdate", self.presenceUpdate) - self.bridge.register("roomJoined", self.roomJoined) - self.bridge.register("roomUserJoined", self.roomUserJoined) - self.bridge.register("roomUserLeft", self.roomUserLeft) - self.bridge.register("roomNewSubject", self.roomNewSubject) - self.bridge.register("tarotGameStarted", self.tarotGameStarted) - self.bridge.register("tarotGameNew", self.tarotGameNew) - self.bridge.register("tarotGameChooseContrat", self.tarotChooseContrat) - self.bridge.register("tarotGameShowCards", self.tarotShowCards) - self.bridge.register("tarotGameYourTurn", self.tarotMyTurn) - self.bridge.register("tarotGameScore", self.tarotScore) - self.bridge.register("tarotGameCardsPlayed", self.tarotCardsPlayed) - self.bridge.register("tarotGameInvalidCards", self.tarotInvalidCards) - self.bridge.register("quizGameStarted", self.quizGameStarted) - self.bridge.register("quizGameNew", self.quizGameNew) - self.bridge.register("quizGameQuestion", self.quizGameQuestion) - self.bridge.register("quizGamePlayerBuzzed", self.quizGamePlayerBuzzed) - self.bridge.register("quizGamePlayerSays", self.quizGamePlayerSays) - self.bridge.register("quizGameAnswerResult", self.quizGameAnswerResult) - self.bridge.register("quizGameTimerExpired", self.quizGameTimerExpired) - self.bridge.register("quizGameTimerRestarted", self.quizGameTimerRestarted) self.bridge.register("subscribe", self.subscribe) self.bridge.register("paramUpdate", self.paramUpdate) self.bridge.register("contactDeleted", self.contactDeleted) - self.bridge.register("updatedValue", self.updatedValue, "request") - self.bridge.register("askConfirmation", self.askConfirmation, "request") - self.bridge.register("actionResult", self.actionResult, "request") - self.bridge.register("actionResultExt", self.actionResult, "request") + self.bridge.register("updatedValue", self.updatedValue) + self.bridge.register("askConfirmation", self.askConfirmation) + self.bridge.register("actionResult", self.actionResult) + self.bridge.register("actionResultExt", self.actionResult) + self.bridge.register("roomJoined", self.roomJoined, "plugin") + self.bridge.register("roomUserJoined", self.roomUserJoined, "plugin") + self.bridge.register("roomUserLeft", self.roomUserLeft, "plugin") + self.bridge.register("roomNewSubject", self.roomNewSubject, "plugin") + self.bridge.register("tarotGameStarted", self.tarotGameStarted, "plugin") + self.bridge.register("tarotGameNew", self.tarotGameNew, "plugin") + self.bridge.register("tarotGameChooseContrat", self.tarotChooseContrat, "plugin") + self.bridge.register("tarotGameShowCards", self.tarotShowCards, "plugin") + self.bridge.register("tarotGameYourTurn", self.tarotMyTurn, "plugin") + self.bridge.register("tarotGameScore", self.tarotScore, "plugin") + self.bridge.register("tarotGameCardsPlayed", self.tarotCardsPlayed, "plugin") + self.bridge.register("tarotGameInvalidCards", self.tarotInvalidCards, "plugin") + self.bridge.register("quizGameStarted", self.quizGameStarted, "plugin") + self.bridge.register("quizGameNew", self.quizGameNew, "plugin") + self.bridge.register("quizGameQuestion", self.quizGameQuestion, "plugin") + self.bridge.register("quizGamePlayerBuzzed", self.quizGamePlayerBuzzed, "plugin") + self.bridge.register("quizGamePlayerSays", self.quizGamePlayerSays, "plugin") + self.bridge.register("quizGameAnswerResult", self.quizGameAnswerResult, "plugin") + self.bridge.register("quizGameTimerExpired", self.quizGameTimerExpired, "plugin") + self.bridge.register("quizGameTimerRestarted", self.quizGameTimerRestarted, "plugin") self.current_action_ids = set() self.current_action_ids_cb = {} @@ -488,7 +488,9 @@ except KeyError: pass - def updatedValue(self, name, data): + def updatedValue(self, name, data, profile): + if not self.check_profile(profile): + return if name == "card_nick": target = JID(data['jid']) if target in self.contactList: diff -r 3ea41a199b36 -r f964dcec1611 src/plugins/plugin_misc_groupblog.py --- a/src/plugins/plugin_misc_groupblog.py Wed Jul 06 01:04:24 2011 +0200 +++ b/src/plugins/plugin_misc_groupblog.py Wed Jul 06 01:06:18 2011 +0200 @@ -69,12 +69,12 @@ for i in range(1,21): self.host.plugins["XEP-0163"].addPEPEvent("MICROBLOG_%02d" % i, NS_MICROBLOG % i, self.groupblogCB, None) - host.bridge.addMethod("cleanBlogCollection", ".communication", in_sign='s', out_sign='', + host.bridge.addMethod("cleanBlogCollection", ".plugin", in_sign='s', out_sign='', method=self.cleanBlogCollection, doc = { }) - host.bridge.addMethod("getMblogNodes", ".communication", in_sign='s', out_sign='a{sas}', + host.bridge.addMethod("getMblogNodes", ".plugin", in_sign='s', out_sign='a{sas}', method=self.getMblogNodes, async = True, doc = { 'summary':"retrieve mblog node, and their association with roster's groups", @@ -82,7 +82,7 @@ 'return':'list of microblog data (dict)' }) - host.bridge.addMethod("sendGroupBlog", ".communication", in_sign='asss', out_sign='', + host.bridge.addMethod("sendGroupBlog", ".plugin", in_sign='asss', out_sign='', method=self.sendGroupBlog, doc = { 'summary':"Send a microblog to a list of groups", 'param_0':'list of groups which can read the microblog', @@ -90,7 +90,7 @@ 'param_2':'%(doc_profile)s' }) - host.bridge.addMethod("subscribeGroupBlog", ".communication", in_sign='ss', out_sign='', + host.bridge.addMethod("subscribeGroupBlog", ".plugin", in_sign='ss', out_sign='', method=self.subscribeGroupBlog, doc = { 'summary':"Subscribe to the group blog of somebody", 'param_0':'jid of the group node published', diff -r 3ea41a199b36 -r f964dcec1611 src/plugins/plugin_misc_quiz.py --- a/src/plugins/plugin_misc_quiz.py Wed Jul 06 01:04:24 2011 +0200 +++ b/src/plugins/plugin_misc_quiz.py Wed Jul 06 01:06:18 2011 +0200 @@ -64,18 +64,18 @@ self.host = host self.games={} self.waiting_inv = {} #Invitation waiting for people to join to launch a game - host.bridge.addMethod("quizGameLaunch", ".communication", in_sign='ass', out_sign='', method=self.quizGameLaunch) #args: room_jid, players, profile - host.bridge.addMethod("quizGameCreate", ".communication", in_sign='sass', out_sign='', method=self.quizGameCreate) #args: room_jid, players, profile - host.bridge.addMethod("quizGameReady", ".communication", in_sign='sss', out_sign='', method=self.newPlayerReady) #args: player, referee, profile - host.bridge.addMethod("quizGameAnswer", ".communication", in_sign='ssss', out_sign='', method=self.playerAnswer) - host.bridge.addSignal("quizGameStarted", ".communication", signature='ssass') #args: room_jid, referee, players, profile - host.bridge.addSignal("quizGameNew", ".communication", + host.bridge.addMethod("quizGameLaunch", ".plugin", in_sign='ass', out_sign='', method=self.quizGameLaunch) #args: room_jid, players, profile + host.bridge.addMethod("quizGameCreate", ".plugin", in_sign='sass', out_sign='', method=self.quizGameCreate) #args: room_jid, players, profile + host.bridge.addMethod("quizGameReady", ".plugin", in_sign='sss', out_sign='', method=self.newPlayerReady) #args: player, referee, profile + host.bridge.addMethod("quizGameAnswer", ".plugin", in_sign='ssss', out_sign='', method=self.playerAnswer) + host.bridge.addSignal("quizGameStarted", ".plugin", signature='ssass') #args: room_jid, referee, players, profile + host.bridge.addSignal("quizGameNew", ".plugin", signature='sa{ss}s', doc = { 'summary': 'Start a new game', 'param_0': "room_jid: jid of game's room", 'param_1': "game_data: data of the game", 'param_2': '%(doc_profile)s'}) - host.bridge.addSignal("quizGameQuestion", ".communication", + host.bridge.addSignal("quizGameQuestion", ".plugin", signature = 'sssis', doc = { 'summary': "Send the current question", 'param_0': "room_jid: jid of game's room", @@ -83,14 +83,14 @@ 'param_2': "question: question to ask", 'param_3': "timer: timer", 'param_4': '%(doc_profile)s'}) - host.bridge.addSignal("quizGamePlayerBuzzed", ".communication", + host.bridge.addSignal("quizGamePlayerBuzzed", ".plugin", signature = 'ssbs', doc = { 'summary': "A player just pressed the buzzer", 'param_0': "room_jid: jid of game's room", 'param_1': "player: player who pushed the buzzer", 'param_2': "pause: should the game be paused ?", 'param_3': '%(doc_profile)s'}) - host.bridge.addSignal("quizGamePlayerSays", ".communication", + host.bridge.addSignal("quizGamePlayerSays", ".plugin", signature = 'sssis', doc = { 'summary': "A player just pressed the buzzer", 'param_0': "room_jid: jid of game's room", @@ -98,7 +98,7 @@ 'param_2': "text: what the player say", 'param_3': "delay: how long, in seconds, the text must appear", 'param_4': '%(doc_profile)s'}) - host.bridge.addSignal("quizGameAnswerResult", ".communication", + host.bridge.addSignal("quizGameAnswerResult", ".plugin", signature = 'ssba{si}s', doc = { 'summary': "Result of the just given answer", 'param_0': "room_jid: jid of game's room", @@ -106,12 +106,12 @@ 'param_2': "good_answer: True if the answer is right", 'param_3': "score: dict of score with player as key", 'param_4': '%(doc_profile)s'}) - host.bridge.addSignal("quizGameTimerExpired", ".communication", + host.bridge.addSignal("quizGameTimerExpired", ".plugin", signature = 'ss', doc = { 'summary': "Nobody answered the question in time", 'param_0': "room_jid: jid of game's room", 'param_1': '%(doc_profile)s'}) - host.bridge.addSignal("quizGameTimerRestarted", ".communication", + host.bridge.addSignal("quizGameTimerRestarted", ".plugin", signature = 'sis', doc = { 'summary': "Nobody answered the question in time", 'param_0': "room_jid: jid of game's room", diff -r 3ea41a199b36 -r f964dcec1611 src/plugins/plugin_misc_tarot.py --- a/src/plugins/plugin_misc_tarot.py Wed Jul 06 01:04:24 2011 +0200 +++ b/src/plugins/plugin_misc_tarot.py Wed Jul 06 01:06:18 2011 +0200 @@ -65,19 +65,19 @@ self.games={} self.waiting_inv = {} #Invitation waiting for people to join to launch a game self.contrats = [_('Passe'), _('Petite'), _('Garde'), _('Garde Sans'), _('Garde Contre')] - host.bridge.addMethod("tarotGameLaunch", ".communication", in_sign='ass', out_sign='', method=self.launchGame) #args: room_jid, players, profile - host.bridge.addMethod("tarotGameCreate", ".communication", in_sign='sass', out_sign='', method=self.createGame) #args: room_jid, players, profile - host.bridge.addMethod("tarotGameReady", ".communication", in_sign='sss', out_sign='', method=self.newPlayerReady) #args: player, referee, profile - host.bridge.addMethod("tarotGameContratChoosed", ".communication", in_sign='ssss', out_sign='', method=self.contratChoosed) #args: player, referee, contrat, profile - host.bridge.addMethod("tarotGamePlayCards", ".communication", in_sign='ssa(ss)s', out_sign='', method=self.play_cards) #args: player, referee, cards, profile - host.bridge.addSignal("tarotGameStarted", ".communication", signature='ssass') #args: room_jid, referee, players, profile - host.bridge.addSignal("tarotGameNew", ".communication", signature='sa(ss)s') #args: room_jid, hand, profile - host.bridge.addSignal("tarotGameChooseContrat", ".communication", signature='sss') #args: room_jid, xml_data, profile - host.bridge.addSignal("tarotGameShowCards", ".communication", signature='ssa(ss)a{ss}s') #args: room_jid, type ["chien", "poignée",...], cards, data[dict], profile - host.bridge.addSignal("tarotGameCardsPlayed", ".communication", signature='ssa(ss)s') #args: room_jid, player, type ["chien", "poignée",...], cards, data[dict], profile - host.bridge.addSignal("tarotGameYourTurn", ".communication", signature='ss') #args: room_jid, profile - host.bridge.addSignal("tarotGameScore", ".communication", signature='ssasass') #args: room_jid, xml_data, winners (list of nicks), loosers (list of nicks), profile - host.bridge.addSignal("tarotGameInvalidCards", ".communication", signature='ssa(ss)a(ss)s') #args: room_jid, game phase, played_cards, invalid_cards, profile + host.bridge.addMethod("tarotGameLaunch", ".plugin", in_sign='ass', out_sign='', method=self.launchGame) #args: room_jid, players, profile + host.bridge.addMethod("tarotGameCreate", ".plugin", in_sign='sass', out_sign='', method=self.createGame) #args: room_jid, players, profile + host.bridge.addMethod("tarotGameReady", ".plugin", in_sign='sss', out_sign='', method=self.newPlayerReady) #args: player, referee, profile + host.bridge.addMethod("tarotGameContratChoosed", ".plugin", in_sign='ssss', out_sign='', method=self.contratChoosed) #args: player, referee, contrat, profile + host.bridge.addMethod("tarotGamePlayCards", ".plugin", in_sign='ssa(ss)s', out_sign='', method=self.play_cards) #args: player, referee, cards, profile + host.bridge.addSignal("tarotGameStarted", ".plugin", signature='ssass') #args: room_jid, referee, players, profile + host.bridge.addSignal("tarotGameNew", ".plugin", signature='sa(ss)s') #args: room_jid, hand, profile + host.bridge.addSignal("tarotGameChooseContrat", ".plugin", signature='sss') #args: room_jid, xml_data, profile + host.bridge.addSignal("tarotGameShowCards", ".plugin", signature='ssa(ss)a{ss}s') #args: room_jid, type ["chien", "poignée",...], cards, data[dict], profile + host.bridge.addSignal("tarotGameCardsPlayed", ".plugin", signature='ssa(ss)s') #args: room_jid, player, type ["chien", "poignée",...], cards, data[dict], profile + host.bridge.addSignal("tarotGameYourTurn", ".plugin", signature='ss') #args: room_jid, profile + host.bridge.addSignal("tarotGameScore", ".plugin", signature='ssasass') #args: room_jid, xml_data, winners (list of nicks), loosers (list of nicks), profile + host.bridge.addSignal("tarotGameInvalidCards", ".plugin", signature='ssa(ss)a(ss)s') #args: room_jid, game phase, played_cards, invalid_cards, profile host.trigger.add("MUC user joined", self.userJoinedTrigger) self.deck_ordered = [] for value in ['excuse']+map(str,range(1,22)): diff -r 3ea41a199b36 -r f964dcec1611 src/plugins/plugin_misc_xmllog.py --- a/src/plugins/plugin_misc_xmllog.py Wed Jul 06 01:04:24 2011 +0200 +++ b/src/plugins/plugin_misc_xmllog.py Wed Jul 06 01:06:18 2011 +0200 @@ -72,7 +72,7 @@ host.memory.importParams(self.params) #bridge - host.bridge.addSignal("xmlLog", ".communication", signature='sss') #args: direction("IN" or "OUT"), xml_data, profile + host.bridge.addSignal("xmlLog", ".plugin", signature='sss') #args: direction("IN" or "OUT"), xml_data, profile do_log = bool(self.host.memory.getParamA("Xml log", "Debug")) if do_log: diff -r 3ea41a199b36 -r f964dcec1611 src/plugins/plugin_xep_0045.py --- a/src/plugins/plugin_xep_0045.py Wed Jul 06 01:04:24 2011 +0200 +++ b/src/plugins/plugin_xep_0045.py Wed Jul 06 01:06:18 2011 +0200 @@ -58,14 +58,14 @@ info(_("Plugin XEP_0045 initialization")) self.host = host self.clients={} - host.bridge.addMethod("joinMUC", ".communication", in_sign='ssss', out_sign='', method=self._join) - host.bridge.addMethod("getRoomJoined", ".communication", in_sign='s', out_sign='a(ssass)', method=self.getRoomJoined) - host.bridge.addMethod("getRoomSubjects", ".communication", in_sign='s', out_sign='a(sss)', method=self.getRoomSubjects) - host.bridge.addMethod("getUniqueRoomName", ".communication", in_sign='s', out_sign='s', method=self.getUniqueName) - host.bridge.addSignal("roomJoined", ".communication", signature='ssasss') #args: room_id, room_service, room_nicks, user_nick, profile - host.bridge.addSignal("roomUserJoined", ".communication", signature='sssa{ss}s') #args: room_id, room_service, user_nick, user_data, profile - host.bridge.addSignal("roomUserLeft", ".communication", signature='sssa{ss}s') #args: room_id, room_service, user_nick, user_data, profile - host.bridge.addSignal("roomNewSubject", ".communication", signature='ssss') #args: room_id, room_service, subject, profile + host.bridge.addMethod("joinMUC", ".plugin", in_sign='ssss', out_sign='', method=self._join) + host.bridge.addMethod("getRoomJoined", ".plugin", in_sign='s', out_sign='a(ssass)', method=self.getRoomJoined) + host.bridge.addMethod("getRoomSubjects", ".plugin", in_sign='s', out_sign='a(sss)', method=self.getRoomSubjects) + host.bridge.addMethod("getUniqueRoomName", ".plugin", in_sign='s', out_sign='s', method=self.getUniqueName) + host.bridge.addSignal("roomJoined", ".plugin", signature='ssasss') #args: room_id, room_service, room_nicks, user_nick, profile + host.bridge.addSignal("roomUserJoined", ".plugin", signature='sssa{ss}s') #args: room_id, room_service, user_nick, user_data, profile + host.bridge.addSignal("roomUserLeft", ".plugin", signature='sssa{ss}s') #args: room_id, room_service, user_nick, user_data, profile + host.bridge.addSignal("roomNewSubject", ".plugin", signature='ssss') #args: room_id, room_service, subject, profile def __check_profile(self, profile): """check if profile is used and connected diff -r 3ea41a199b36 -r f964dcec1611 src/plugins/plugin_xep_0054.py --- a/src/plugins/plugin_xep_0054.py Wed Jul 06 01:04:24 2011 +0200 +++ b/src/plugins/plugin_xep_0054.py Wed Jul 06 01:06:18 2011 +0200 @@ -71,17 +71,21 @@ self.vcard_cache = host.memory.getPrivate("vcard_cache") or {} #used to store nicknames and avatar, key = jid if not os.path.exists(self.avatar_path): os.makedirs(self.avatar_path) - host.bridge.addMethod("getCard", ".communication", in_sign='ss', out_sign='s', method=self.getCard) - host.bridge.addMethod("getAvatarFile", ".communication", in_sign='s', out_sign='s', method=self.getAvatarFile) - host.bridge.addMethod("getCardCache", ".communication", in_sign='s', out_sign='a{ss}', method=self.getCardCache) + host.bridge.addMethod("getCard", ".plugin", in_sign='ss', out_sign='s', method=self.getCard) + host.bridge.addMethod("getAvatarFile", ".plugin", in_sign='s', out_sign='s', method=self.getAvatarFile) + host.bridge.addMethod("getCardCache", ".plugin", in_sign='s', out_sign='a{ss}', method=self.getCardCache) def getHandler(self, profile): return XEP_0054_handler(self) - def update_cache(self, jid, name, value): + def update_cache(self, jid, name, value, profile): """update cache value - save value in memory in case of change - send updatedValue signal if the value is new or updated + @param jid: jid of the owner of the vcard + @param name: name of the item which changed + @param value: new value of the item + @param profile: profile which received the update """ if not self.vcard_cache.has_key(jid.userhost()): self.vcard_cache[jid.userhost()] = {} @@ -91,7 +95,7 @@ if not old_value or value != old_value: cache[name] = value self.host.memory.setPrivate("vcard_cache", self.vcard_cache) - self.host.bridge.updatedValue('card_'+name, {'jid':jid.userhost(), name:value}) + self.host.bridge.updatedValue('card_'+name, {'jid':jid.userhost(), name:value}, profile) def get_cache(self, jid, name): """return cached value for jid @@ -123,7 +127,7 @@ return hash @defer.deferredGenerator - def vCard2Dict(self, vcard, target): + def vCard2Dict(self, vcard, target, profile): """Convert a VCard to a dict, and save binaries""" debug (_("parsing vcard")) dictionary = {} @@ -134,7 +138,7 @@ dictionary['fullname'] = unicode(elem) elif elem.name == 'NICKNAME': dictionary['nick'] = unicode(elem) - self.update_cache(target, 'nick', dictionary['nick']) + self.update_cache(target, 'nick', dictionary['nick'], profile) elif elem.name == 'URL': dictionary['website'] = unicode(elem) elif elem.name == 'EMAIL': @@ -149,18 +153,18 @@ if not dictionary["avatar"]: #can happen in case of e.g. empty photo elem del dictionary['avatar'] else: - self.update_cache(target, 'avatar', dictionary['avatar']) + self.update_cache(target, 'avatar', dictionary['avatar'], profile) else: info (_('FIXME: [%s] VCard tag is not managed yet') % elem.name) yield dictionary - def vcard_ok(self, answer): + def vcard_ok(self, answer, profile): """Called after the first get IQ""" debug (_("VCard found")) if answer.firstChildElement().name == "vCard": - d = self.vCard2Dict(answer.firstChildElement(), jid.JID(answer["from"])) + d = self.vCard2Dict(answer.firstChildElement(), jid.JID(answer["from"]), profile) d.addCallback(lambda data: self.host.bridge.actionResult("RESULT", answer['id'], data)) else: error (_("FIXME: vCard not found as first child element")) @@ -179,13 +183,14 @@ if not xmlstream: error (_('Asking vcard for an non-existant or not connected profile')) return "" + profile = self.host.memory.getProfileName(profile_key) to_jid = jid.JID(target) debug(_("Asking for %s's VCard") % to_jid.userhost()) reg_request=IQ(xmlstream,'get') reg_request["from"]=current_jid.full() reg_request["to"] = to_jid.userhost() query=reg_request.addElement('vCard', NS_VCARD) - reg_request.send(to_jid.userhost()).addCallbacks(self.vcard_ok, self.vcard_err) + reg_request.send(to_jid.userhost()).addCallbacks(self.vcard_ok, self.vcard_err, [profile]) return reg_request["id"] def getAvatarFile(self, hash): diff -r 3ea41a199b36 -r f964dcec1611 src/plugins/plugin_xep_0060.py --- a/src/plugins/plugin_xep_0060.py Wed Jul 06 01:04:24 2011 +0200 +++ b/src/plugins/plugin_xep_0060.py Wed Jul 06 01:06:18 2011 +0200 @@ -47,7 +47,7 @@ self.host = host self.managedNodes=[] self.clients={} - """host.bridge.addMethod("getItems", ".communication", in_sign='ssa{ss}s', out_sign='as', method=self.getItems, + """host.bridge.addMethod("getItems", ".plugin", in_sign='ssa{ss}s', out_sign='as', method=self.getItems, async = True, doc = { 'summary':'retrieve items', 'param_0':'service: pubsub service', diff -r 3ea41a199b36 -r f964dcec1611 src/plugins/plugin_xep_0077.py --- a/src/plugins/plugin_xep_0077.py Wed Jul 06 01:04:24 2011 +0200 +++ b/src/plugins/plugin_xep_0077.py Wed Jul 06 01:06:18 2011 +0200 @@ -47,8 +47,8 @@ info(_("Plugin XEP_0077 initialization")) self.host = host self.triggers = {} #used by other protocol (e.g. XEP-0100) to finish registration. key = target_jid - host.bridge.addMethod("in_band_register", ".communication", in_sign='ss', out_sign='s', method=self.in_band_register) - host.bridge.addMethod("in_band_submit", ".request", in_sign='sa(ss)', out_sign='s', method=self.in_band_submit) + host.bridge.addMethod("in_band_register", ".plugin", in_sign='ss', out_sign='s', method=self.in_band_register) + host.bridge.addMethod("in_band_submit", ".plugin", in_sign='sa(ss)', out_sign='s', method=self.in_band_submit) def addTrigger(self, target, cb, profile): """Add a callback which is called when registration to target is successful""" diff -r 3ea41a199b36 -r f964dcec1611 src/plugins/plugin_xep_0096.py --- a/src/plugins/plugin_xep_0096.py Wed Jul 06 01:04:24 2011 +0200 +++ b/src/plugins/plugin_xep_0096.py Wed Jul 06 01:06:18 2011 +0200 @@ -58,7 +58,7 @@ info(_("Plugin XEP_0096 initialization")) self.host = host self._waiting_for_approval = {} - host.bridge.addMethod("sendFile", ".communication", in_sign='sss', out_sign='s', method=self.sendFile) + host.bridge.addMethod("sendFile", ".plugin", in_sign='sss', out_sign='s', method=self.sendFile) def getHandler(self, profile): return XEP_0096_handler(self) diff -r 3ea41a199b36 -r f964dcec1611 src/plugins/plugin_xep_0100.py --- a/src/plugins/plugin_xep_0100.py Wed Jul 06 01:04:24 2011 +0200 +++ b/src/plugins/plugin_xep_0100.py Wed Jul 06 01:06:18 2011 +0200 @@ -44,8 +44,8 @@ info(_("Gateways plugin initialization")) self.host = host self.__gateways = {} #dict used to construct the answer to findGateways. Key = target jid - host.bridge.addMethod("findGateways", ".communication", in_sign='ss', out_sign='s', method=self.findGateways) - host.bridge.addMethod("gatewayRegister", ".request", in_sign='ssa(ss)s', out_sign='s', method=self.gatewayRegister) + host.bridge.addMethod("findGateways", ".plugin", in_sign='ss', out_sign='s', method=self.findGateways) + host.bridge.addMethod("gatewayRegister", ".plugin", in_sign='ssa(ss)s', out_sign='s', method=self.gatewayRegister) def __inc_handled_items(self, request_id): self.__gateways[request_id]['__handled_items']+=1 diff -r 3ea41a199b36 -r f964dcec1611 src/plugins/plugin_xep_0163.py --- a/src/plugins/plugin_xep_0163.py Wed Jul 06 01:04:24 2011 +0200 +++ b/src/plugins/plugin_xep_0163.py Wed Jul 06 01:06:18 2011 +0200 @@ -50,8 +50,8 @@ self.pep_events=set() self.pep_out_cb={} host.trigger.add("PubSub Disco Info", self.disoInfoTrigger) - host.bridge.addSignal("personalEvent", ".communication", signature='ssa{ss}s') #args: from (jid), type(MOOD, TUNE, etc), data, profile - host.bridge.addMethod("sendPersonalEvent", ".communication", in_sign='sa{ss}s', out_sign='i', method=self.sendPersonalEvent) #args: type(MOOD, TUNE, etc), data, profile_key; return 0 or error_code + host.bridge.addSignal("personalEvent", ".plugin", signature='ssa{ss}s') #args: from (jid), type(MOOD, TUNE, etc), data, profile + host.bridge.addMethod("sendPersonalEvent", ".plugin", in_sign='sa{ss}s', out_sign='i', method=self.sendPersonalEvent) #args: type(MOOD, TUNE, etc), data, profile_key; return 0 or error_code self.addPEPEvent("MOOD", NS_USER_MOOD, self.userMoodCB, self.sendMood) def disoInfoTrigger(self, disco_info, profile): diff -r 3ea41a199b36 -r f964dcec1611 src/plugins/plugin_xep_0249.py --- a/src/plugins/plugin_xep_0249.py Wed Jul 06 01:04:24 2011 +0200 +++ b/src/plugins/plugin_xep_0249.py Wed Jul 06 01:06:18 2011 +0200 @@ -54,7 +54,7 @@ def __init__(self, host): info(_("Plugin XEP_0249 initialization")) self.host = host - host.bridge.addMethod("inviteMUC", ".communication", in_sign='sssa{ss}s', out_sign='', method=self._invite) + host.bridge.addMethod("inviteMUC", ".plugin", in_sign='sssa{ss}s', out_sign='', method=self._invite) def getHandler(self, profile): return XEP_0249_handler(self) diff -r 3ea41a199b36 -r f964dcec1611 src/plugins/plugin_xep_0277.py --- a/src/plugins/plugin_xep_0277.py Wed Jul 06 01:04:24 2011 +0200 +++ b/src/plugins/plugin_xep_0277.py Wed Jul 06 01:06:18 2011 +0200 @@ -59,7 +59,7 @@ info(_("Microblogging plugin initialization")) self.host = host self.host.plugins["XEP-0163"].addPEPEvent("MICROBLOG", NS_MICROBLOG, self.microblogCB, self.sendMicroblog) - host.bridge.addMethod("getLastMicroblogs", ".communication", + host.bridge.addMethod("getLastMicroblogs", ".plugin", in_sign='sis', out_sign='aa{ss}', method=self.getLastMicroblogs, async = True, @@ -69,7 +69,7 @@ 'param_2':'%(doc_profile)s', 'return':'list of microblog data (dict)' }) - host.bridge.addMethod("setMicroblogAccess", ".communication", in_sign='ss', out_sign='', + host.bridge.addMethod("setMicroblogAccess", ".plugin", in_sign='ss', out_sign='', method=self.setMicroblogAccess, async = True, doc = {