Envoyé par : xulien
Date : 22/08/2007 15:01
Salut, je développe un client riche en Xul. Celui-ci est notifié par un serveur distant du changement de certaines valeurs. Pour cela j'ai un mini serveur soap (XPCOM) dans mon client riche qui écoute les notifications de mon serveur distant. Depuis le code javascript je fournis une fonction à l'XPCOM pour être notifié mais lors de l'appel à cette fonction ca plante je ne comprends pas ! Pourriez vous y jeter un oeil ou si vous avez une autre solution...
code javascript
var listener = { onNotify: function() { alert("notify"); } }; myXPCOM = Components.classes[[CID].createInstance(Components.interfaces.IClient); voibResult = myXPCOM.init(listener);
idl
[[scriptable, uuid(...)] interface JSCallback : nsISupports { void onNotify(); }; [[scriptable, uuid(...)] interface IServerXpcom : nsISupports { boolean init(in JSCallback aCallback) }
code C++ - .h
class ServerXpcom : public IServerXpcom { public: NS_DECL_ISUPPORTS NS_DECL_ISIMSCLIENT ServerXpcom(); // Méthode appelée lorsque le serveur distant notifie void vCallNotify(); private: ~ServerXpcom(); protected: // fonction de callback des notifications nsCOMPtr<JSCallback> js_callback; }
.cpp
NS_IMETHODIMP ServerXpcom::Init(JSCallback *aCallback, PRBool *_retval) { js_callback = aCallback; // par exemple si j'appels notify ici ca fonctionne js_callback->onNotify(); return NS_OK;
}
void ServerXpcom::vCallNotify() { // Si en revanche je l'appels ici ca plante js_callback->onNotify(); };
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.