Discussion:
[9fans] Question about o/mero -> o/live event notification mechanism
(too old to reply)
aram
2012-04-30 21:54:47 UTC
Permalink
Hi,

i explore the UI of octopus and i try to understand how omero notifies the
viewers for events.
It is apparent from the documentation that the viewers "read" events from
the ui/olive file.
However, when i cat that file from the shell and "play" with a terminal a
bit, i get no data.
The terminals are updated correctly which indicates that the events are
delivered.
I checked the source of olive (port/live/live.b) and it simply reads (by
calling updateproc(fd)) the file as expected.

Obviously i am missing something important that the documentation does not
cover.
How can i read events posted by omero?

Thanks
Nemo
2012-05-01 08:58:28 UTC
Permalink
Hi,
i explore the UI of octopus and i try to understand how omero notifies the viewers for events.
It is apparent from the documentation that the viewers "read" events from the ui/olive file.
However, when i cat that file from the shell and "play" with a terminal a bit, i get no data.
The terminals are updated correctly which indicates that the events are delivered.
I checked the source of olive (port/live/live.b) and it simply reads (by calling updateproc(fd)) the file as expected.
Obviously i am missing something important that the documentation does not cover.
How can i read events posted by omero?
Thanks
There are two type of events. IIRC.
User events like open, exec, ... are posted via o/ports, and you can
read them from there.

UI events are sent through a file with a protocol for o/live.
(Time ago they were sent also through ports, but I think I changed that).
The viewer reads a tree and then gets updates from that file.
That's internal and I don't think the man page describes that.

I can take a look to the source so I remember if you don't have luck
with these hints.

hth
aram
2012-05-02 13:56:46 UTC
Permalink
Post by Nemo
Post by aram
Hi,
i explore the UI of octopus and i try to understand how omero notifies
the viewers for events.
It is apparent from the documentation that the viewers "read" events
from the ui/olive file.
However, when i cat that file from the shell and "play" with a terminal
a bit, i get no data.
The terminals are updated correctly which indicates that the events are delivered.
I checked the source of olive (port/live/live.b) and it simply reads
(by calling updateproc(fd)) the file as expected.
Obviously i am missing something important that the documentation does not cover.
How can i read events posted by omero?
Thanks
There are two type of events. IIRC.
User events like open, exec, ... are posted via o/ports, and you can
read them from there.
Yes, i receive successfully events targeted to applications (o/mero:.*).
However ...
Post by Nemo
UI events are sent through a file with a protocol for o/live.
(Time ago they were sent also through ports, but I think I changed that).
The viewer reads a tree and then gets updates from that file.
That's internal and I don't think the man page describes that.
... i am interested for this ^^. In mero.b these events are described as

# Events:
# from o/mero to o/live (via merop):
# "Tupdate file data"
# "Ctl top"
# "Ctl ins tag vers pos string"
# "Ctl del tag vers pos string"

I want to be able to listen precisely these events.
I assume by "the viewer reads a tree and then gets updates from that file"
you mean that the /mnt/ui/olive file is read?
I checked the viewers code again, and it does not do anything strange or
cryptic. The fact that bothers me is that by executing

% cat olive

I receive nothing, whereas by executing

% touch /mnt/ports/listen_app_events
% echo 'o/mero:.*' > listen_app_events
% cat listen_app_events

i receive application events (exec, close, ets) just fine.
Post by Nemo
I can take a look to the source so I remember if you don't have luck
with these hints.
hth
Thanks for your time.
--
This => <***@privatdemail.net> is my new email address.
Nemo
2012-05-02 15:02:02 UTC
Permalink
Post by aram
% cat olive
I receive nothing, whereas by executing
Because IIRC that file is used to speak a protocol.
That is, unless you issue certain requests on that file, o/mero
wont reply.

That's used to synchronize all o/lives so that they all perform
very much like in cooperative editing environments.

The ctls you saw in the comment are the protocol (merop).

Loading...