Hey Isaku

Yes I see, the events are in a separated file. Whenever you throw an
event or listen to one, you will have something like this in your
code:

from ryu.services.vrrp import event as vrrp_event

ev.__class__ attribute and obsersers dict in get_observers in the
app_manager will have a value/key like

ryu.services.vrrp.event.EventVRRPReceived

That's fine I gonna do this the same way, thanks

g *pae

2013/6/13 Isaku Yamahata <[email protected]>:
> The vrrp patch series would be a good example.
> http://thread.gmane.org/gmane.network.ryu.devel/2557
>
> thanks,
>
>
> On Wed, Jun 12, 2013 at 04:18:17PM +0200, Philipp Aeschlimann wrote:
>> Hey there
>>
>> Whats the right way to implement a custom-Event between two app's?
>> That's the way I have done this:
>>
>> ### file: ryu/app/app_one.py ###
>> import ryu.app.AppOne
>> ...
>>
>> class EventAppOne(event.EventBase):
>>     def __init__ ...
>>         ...
>>
>> class AppOne(app_manager.RyuApp):
>>     def __init__ ...
>>         ...
>>     def foo(self, dp):
>>         self.send_event_to_observers(ryu.app.AppOne.EventAppOne(dp))
>>
>> ### file: ryu/app/app_two.py ###
>> from ryu.app import AppOne
>> ...
>>
>> class AppTwo(app_manager.RyuApp):
>>     def __init__ ...
>>         ...
>>     @set_ev_cls(AppOne.EventAppOne)
>>     def bar(self, ev):
>>         ...
>>
>> The Problem is in the app_manager.py (or I do not understand how to
>> implement events is the reason...) in the method:
>>
>>     def get_observers(self, ev, state):
>>         observers = []
>>         for k, v in self.observers.get(ev.__class__, {}).iteritems():
>>             if not state or not v or state in v:
>>                 observers.append(k)
>>
>> If you send the event to the oveservers as follows:
>>
>> self.send_event_to_observers(EventAppOne(dp))
>>
>> then the attribute ev.__class__ in def get_observers(self, ev, state)
>> contains the key "AppOne.EventAppOne" but in the observers dict is the
>> key "ryu.app.AppOne.EventAppOne". So the event is not thrown.
>>
>> If you send the event like this (and described before):
>>
>> self.send_event_to_observers(ryu.app.AppOne.EventAppOne(dp))
>>
>> then the attribute ev.__class__ in def get_observers(self, ev, state)
>> contains the right value that is "ryu.app.AppOne.EventAppOne" which is
>> the same as the key in observers dict and the event is thrown.
>>
>> I hope I explained it correctly.
>>
>> g *pae
>>
>> --
>> ZHAW - Zurich University of Applied Sciences
>> Institute of Applied Information Technology InIT
>> InIT Cloud Computing Laboratory ICCLab
>>
>> Philipp Aeschlimann
>> Researcher
>> Obere Kirchgasse 2
>> CH-8401 Winterthur
>>
>> Tel. +41 58 934 6964 (intern 6964)
>> mailto:[email protected]
>> www.zhaw.ch
>> www.cloudcomp.ch
>>
>> GPG IDKey: 647E122E
>> Fingerprint: 47B7 8D8A 98D1 E91D 4B7C E261 D88C BE9E 647E 122E
>>
>> ------------------------------------------------------------------------------
>> This SF.net email is sponsored by Windows:
>>
>> Build for Windows Store.
>>
>> http://p.sf.net/sfu/windows-dev2dev
>> _______________________________________________
>> Ryu-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>
>
> --
> yamahata



-- 
ZHAW - Zurich University of Applied Sciences
Institute of Applied Information Technology InIT
InIT Cloud Computing Laboratory ICCLab

Philipp Aeschlimann
Researcher
Obere Kirchgasse 2
CH-8401 Winterthur

Tel. +41 58 934 6964 (intern 6964)
mailto:[email protected]
www.zhaw.ch
www.cloudcomp.ch

GPG IDKey: 647E122E
Fingerprint: 47B7 8D8A 98D1 E91D 4B7C E261 D88C BE9E 647E 122E

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to