Oops, that was my bad -- as I said, I had adapted that from another message. The correct import should be: from nox.coreapps.messenger.pyjsonmsgevent import JSONMsg_event
-- Murphy On Jan 26, 2012, at 3:40 AM, Giorgio Mazza wrote: > Thanks, I think I will specify a port. > > Another question... > At the moment I get an error while importing the JSON_Msg event in the > install() of my component. > > "in install > from nox.coreapps.messenger.pymsgevent import JSONMsg_event > ImportError: No module named pymsgevent " > > I blindly followed your instructions at first, but then I looked in my > messenger folder without finding where this event is defined. > Could you please tell me where is it, so that I can insert the correct path > in my install function? I'm using the standard message folder. > Thank you. > Regards, > > Giorgio > > On 25/01/2012 22:28, Murphy McCauley wrote: >> >> I believe it defaults to port 2703. You should be able to set the port >> number by specifying it on the commandline... >> ./nox_core -i ptcp: jsonmessenger=tcpport=4096 your_app_here >> >> It listens on all IP addresses; there is currently no way to specify just >> one. >> >> -- Murphy >> >> On Jan 25, 2012, at 1:11 PM, Giorgio Mazza wrote: >> >>> A question about the socket opened when invoking jsonmessenger. >>> What are the IP address, the tcp port and the interface that this socket >>> refers to? Is there any way to set them? >>> I undersotood the mechanism, but I don't know where to send my messages >>> from the external application. >>> Thank you. >>> Regards, >>> >>> Giorgio >>> >>> On 24/01/2012 13:49, Murphy McCauley wrote: >>>> >>>> The minimum to get up and going should be something like this: >>>> >>>> 1) In your component's install function: >>>> from nox.coreapps.messenger.pymsgevent import JSONMsg_event >>>> JSONMsg_event.register_event_converter(self.ctxt) >>>> self.register_handler(JSONMsg_event.static_get_name(), myHandler) >>>> >>>> 2) Implement a handler: >>>> def myHandler (e): >>>> import json >>>> print json.loads(e.jsonstring) >>>> e.reply(json.dumps({"msg":"Hello world"})) >>>> >>>> 3) Include jsonmessenger on the commandline or as a dependency >>>> >>>> >>>> That may not be exactly correct -- it's adapted from a quick writeup I did >>>> in December about using the new Python support for the "regular" messenger >>>> (as opposed to the JSON messenger), which has not yet been pushed to the >>>> repository. For reference, that post was: >>>> http://noxrepo.org/pipermail/nox-dev/2011-December/008382.html >>>> >>>> (If using the new version of messenger that I linked to in that post, you >>>> remove the register_event_converter() call from step 1 and include >>>> pyjsonmessenger instead of jsonmessenger in step 3.) >>>> >>>> Invoking the jsonmessenger component (on the commandline or by including >>>> it as a dependency in your app's meta.json) will create the server socket >>>> for you. >>>> >>>> You absolutely do not have to use the messenger.py class. I'm removing it >>>> from that directory, because all it ever does is confuse people -- it >>>> really doesn't belong there. messenger.py is a library for writing JSON >>>> messenger *clients* (external programs) in Python. That may be useful to >>>> you, but you don't need it for the NOX side of things. >>>> >>>> Hope that helps. >>>> >>>> -- Murphy >>>> >>>> On Jan 24, 2012, at 4:12 AM, Giorgio Mazza wrote: >>>> >>>>> Thank you. >>>>> I try to sum up the operations I need to perform, to see if I understood >>>>> correctly. >>>>> Basically in my external application I have to set up a socket that sends >>>>> json messages and this would be quite simple. >>>>> In my nox component, instead, I have to import the "JSONMsg_event" and, >>>>> within the "install()" instruction, to handle it with my specific method, >>>>> that, in my case, would only save these json messages into a dictionary, >>>>> for using them later, according to some conditions. >>>>> Is that correct? >>>>> >>>>> A couple of things that I didn't understand: >>>>> - I assume I also have to set up a server socket in my nox component, in >>>>> order to receive json messages and handle JSONMsg_events. So, I think >>>>> this socket has to be already up and running when I handle the event. So, >>>>> when do I have to create it and how? Do I have to use messenger.py >>>>> channel class? >>>>> - Second question, probably related to the first. I think to be pretty >>>>> confused about jsonmessenger: what are the jsonmessenger files I could >>>>> look into in order to understand fields and methods that I would need to >>>>> use? Are the jsonmessenger.cc and jsonmessenger.hh in >>>>> nox/src/nox/coreapps/messenger? And, if it is the case, how can I >>>>> integrate them into a python component? >>>>> >>>>> Thanks again, >>>>> >>>>> Giorgio >>>>> >>>>> On 24/01/2012 12:28, Kyriakos Zarifis wrote: >>>>>> >>>>>> Hi Giorgio, >>>>>> >>>>>> yes, I think using jsonmessenger would be the best approach for this. >>>>>> >>>>>> you need to implement a send/receive interface on the external >>>>>> application and in your nox component. For the external application, >>>>>> it's pretty straightforward - Connect to the jsonmessenger socket and >>>>>> send json strings. In your nox application you need to register for JSON >>>>>> messages, and handle them appropriately. >>>>>> >>>>>> The wiki explains the communication in a few steps (specifically for the >>>>>> GUI<->NOX, but it will be similar and simpler for any external app) here: >>>>>> >>>>>> If you want to see a full example, the GUI and the monitoring component >>>>>> in destiny could be a place to look. I'm afraid it's much more complex >>>>>> than what you need, but the bits you need are in there if you dig in the >>>>>> code a bit. >>>>>> >>>>>> >>>>>> On Tue, Jan 24, 2012 at 2:16 AM, Giorgio Mazza >>>>>> <giorgio.mazza...@gmail.com> wrote: >>>>>> Hi all! >>>>>> I have written a simple component in python that works fine. >>>>>> Now I would to improve it, making it to install flow entries depending >>>>>> on parameters received from an external application. >>>>>> In particular I want to pass those parameters via json messages to my >>>>>> component, which, in my thougths, has to open a "permanent" socket >>>>>> listening for them, save those parameters in a dictionary and, as a >>>>>> consequence, decide the desired switch behaviour (whether install or not >>>>>> a flow entry for the received parameters). >>>>>> In previous threads I found that I have to use jsonmessenger (even in >>>>>> python?) or to have a look to discovery.py, but I am not sure to have >>>>>> understood what I have to do and where in order to realize such a >>>>>> behaviour. >>>>>> Could anyone, please, help me? >>>>>> Thank you in advance, >>>>>> >>>>>> Giorgio Mazza >>>>>> _______________________________________________ >>>>>> nox-dev mailing list >>>>>> nox-dev@noxrepo.org >>>>>> http://noxrepo.org/mailman/listinfo/nox-dev >>>>>> >>>>> >>>>> _______________________________________________ >>>>> nox-dev mailing list >>>>> nox-dev@noxrepo.org >>>>> http://noxrepo.org/mailman/listinfo/nox-dev >>>> >>> >>> _______________________________________________ >>> nox-dev mailing list >>> nox-dev@noxrepo.org >>> http://noxrepo.org/mailman/listinfo/nox-dev >> > > _______________________________________________ > nox-dev mailing list > nox-dev@noxrepo.org > http://noxrepo.org/mailman/listinfo/nox-dev
_______________________________________________ nox-dev mailing list nox-dev@noxrepo.org http://noxrepo.org/mailman/listinfo/nox-dev