> On 2011-08-17 16:34:38, Ted Ross wrote:
> > trunk/qpid/cpp/src/qmf/ConsoleSessionImpl.h, line 110
> > <https://reviews.apache.org/r/1557/diff/1/?file=33110#file33110line110>
> >
> > You need to pay attention to mutex protection of eventNotifiers.
> >
> > There's a convention used (see enqueueEvent and enqueueEventLH) whereby
> > functions that assume that a lock is held have their names suffixed by "LH"
> > (lock held). alertEventNotifiers is (I claim) always going to be called
> > with the session lock held and should be a "LH" function.
> >
> > {add,remove}EventNotifier are not "LH" functions but they must acquire
> > the lock before touching eventNotifiers. Not doing so will cause
> > difficult-to-debug problems down the road.
Both are done:
* renamed alertEventNotifiers() to alertEventNotifiersLH() and updated all
affected code, and
* added qpid::sys::Mutex::ScopedLocal to {ad,remove}EventNotifier() methods in
both Session types.
- Darryl
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/1557/#review1501
-----------------------------------------------------------
On 2011-08-17 14:07:58, Darryl Pierce wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/1557/
> -----------------------------------------------------------
>
> (Updated 2011-08-17 14:07:58)
>
>
> Review request for qpid, Kenneth Giusti, michael goulish, and Ted Ross.
>
>
> Summary
> -------
>
> Provides a new method for providing notification to an interested party when
> new messages are received.
>
> The EventNotifier class can be associated with either a console or agent
> session. The object provides a file descriptor which then becomes readable
> when there are messages to be processed.
>
> This implementation only supports Posix. There is some work necessary to get
> a Windows implementation in place.
>
>
> Diffs
> -----
>
> trunk/qpid/cpp/bindings/qmf2/examples/cpp/Makefile.am 1158370
> trunk/qpid/cpp/bindings/qmf2/examples/cpp/event_driven_list_agents.cpp
> PRE-CREATION
> trunk/qpid/cpp/include/qmf/AgentSession.h 1158370
> trunk/qpid/cpp/include/qmf/ConsoleSession.h 1158370
> trunk/qpid/cpp/include/qmf/EventNotifier.h PRE-CREATION
> trunk/qpid/cpp/src/CMakeLists.txt 1158370
> trunk/qpid/cpp/src/qmf.mk 1158370
> trunk/qpid/cpp/src/qmf/AgentSession.cpp 1158370
> trunk/qpid/cpp/src/qmf/AgentSessionImpl.h PRE-CREATION
> trunk/qpid/cpp/src/qmf/ConsoleSession.cpp 1158370
> trunk/qpid/cpp/src/qmf/ConsoleSessionImpl.h 1158370
> trunk/qpid/cpp/src/qmf/EventNotifier.cpp PRE-CREATION
> trunk/qpid/cpp/src/qmf/EventNotifierImpl.h PRE-CREATION
> trunk/qpid/cpp/src/qmf/EventNotifierImpl.cpp PRE-CREATION
> trunk/qpid/cpp/src/qmf/PosixEventNotifierImpl.cpp PRE-CREATION
> trunk/qpid/cpp/src/tests/EventNotifierTest.cpp PRE-CREATION
> trunk/qpid/cpp/src/tests/Makefile.am 1158370
>
> Diff: https://reviews.apache.org/r/1557/diff
>
>
> Testing
> -------
>
> An example agent takes the existing list_agents and uses an EventNotifier to
> respond to incoming messages rather than blocking on the
> ConsoleSession.nextReceiver() API.
>
> A unit test verifies that the file handle provides by the EventNotifier type
> is properly updating on incoming messgaes.
>
>
> Thanks,
>
> Darryl
>
>