Actually I get the same error, because I do not have neither
pyjsonmsgevent nor pymsgevent in messenger folder...
This is the list of what I have in messenger folder:
giorgio@controller:~/nox/build/src$ ls -a nox/coreapps/messenger/
. jsonmessenger.la
messenger.la
.. jsonmessenger_la-jsonmessenger.lo
messenger_la-messenger.lo
cacert.pem .libs
messenger.py
.deps Makefile
meta.json
__init__.py messenger_core.la
servercert.pem
__init__.pyc messenger_core_la-messenger_core.lo serverkey.pem
Do I miss anything in my folders or did I make something wrong?
Giorgio
On 26/01/2012 13:05, Murphy McCauley wrote:
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
<http://noxrepo.org/noxwiki/index.php/NOX_GUI#Connecting_a_subview_to_a_NOX_component>:
If you want to see a full example, the GUI
<http://tinyurl.com/6p2yl5o> and the monitoring
<http://tinyurl.com/6nv83a3> 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
<[email protected] <mailto:[email protected]>>
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
[email protected] <mailto:[email protected]>
http://noxrepo.org/mailman/listinfo/nox-dev
_______________________________________________
nox-dev mailing list
[email protected] <mailto:[email protected]>
http://noxrepo.org/mailman/listinfo/nox-dev
_______________________________________________
nox-dev mailing list
[email protected] <mailto:[email protected]>
http://noxrepo.org/mailman/listinfo/nox-dev
_______________________________________________
nox-dev mailing list
[email protected] <mailto:[email protected]>
http://noxrepo.org/mailman/listinfo/nox-dev
_______________________________________________
nox-dev mailing list
[email protected]
http://noxrepo.org/mailman/listinfo/nox-dev