MAINT-5976: Adding MailDrop type event Queue
parent
f4b6a89ab0
commit
83c9c6df07
|
|
@ -507,6 +507,37 @@ bool LLEventStream::post(const LLSD& event)
|
|||
return (*signal)(event);
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* LLEventMailDrop
|
||||
*****************************************************************************/
|
||||
bool LLEventMailDrop::post(const LLSD& event)
|
||||
{
|
||||
bool posted = LLEventPump::post(event);
|
||||
|
||||
if (!posted)
|
||||
{
|
||||
mEventHistory.push_back(event);
|
||||
}
|
||||
|
||||
return posted;
|
||||
}
|
||||
|
||||
LLBoundListener LLEventMailDrop::listen_impl(const std::string& name,
|
||||
const LLEventListener& listener,
|
||||
const NameList& after,
|
||||
const NameList& before)
|
||||
{
|
||||
LLBoundListener bndlistener = LLEventPump::listen_impl(name, listener, after, before);
|
||||
|
||||
return bndlistener;
|
||||
}
|
||||
|
||||
// typedef std::list<LLSD> EventList;
|
||||
// EventList mEventHistory;
|
||||
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* LLEventQueue
|
||||
*****************************************************************************/
|
||||
|
|
|
|||
|
|
@ -554,12 +554,13 @@ private:
|
|||
virtual void reset();
|
||||
|
||||
private:
|
||||
virtual LLBoundListener listen_impl(const std::string& name, const LLEventListener&,
|
||||
const NameList& after,
|
||||
const NameList& before);
|
||||
std::string mName;
|
||||
|
||||
protected:
|
||||
virtual LLBoundListener listen_impl(const std::string& name, const LLEventListener&,
|
||||
const NameList& after,
|
||||
const NameList& before);
|
||||
|
||||
/// implement the dispatching
|
||||
boost::shared_ptr<LLStandardSignal> mSignal;
|
||||
|
||||
|
|
@ -597,11 +598,39 @@ public:
|
|||
virtual bool post(const LLSD& event);
|
||||
};
|
||||
|
||||
/*****************************************************************************
|
||||
* LLEventMailDrop
|
||||
*****************************************************************************/
|
||||
/**
|
||||
* LLEventMailDrop is a specialization of LLEventStream. Events are posted normally,
|
||||
* however if no listeners return that they have handled the event it is placed in
|
||||
* a list. Subsequent attaching listeners will recieve stored events until a
|
||||
* listener indicates that the event has been handled.
|
||||
*/
|
||||
class LL_COMMON_API LLEventMailDrop: public LLEventPump
|
||||
{
|
||||
public:
|
||||
LLEventMailDrop(const std::string& name, bool tweak=false): LLEventPump(name, tweak) {}
|
||||
virtual ~LLEventMailDrop() {}
|
||||
|
||||
/// Post an event to all listeners
|
||||
virtual bool post(const LLSD& event);
|
||||
|
||||
protected:
|
||||
virtual LLBoundListener listen_impl(const std::string& name, const LLEventListener&,
|
||||
const NameList& after,
|
||||
const NameList& before);
|
||||
|
||||
private:
|
||||
typedef std::list<LLSD> EventList;
|
||||
EventList mEventHistory;
|
||||
};
|
||||
|
||||
/*****************************************************************************
|
||||
* LLEventQueue
|
||||
*****************************************************************************/
|
||||
/**
|
||||
* LLEventQueue isa LLEventPump whose post() method defers calling registered
|
||||
* LLEventQueue is a LLEventPump whose post() method defers calling registered
|
||||
* listeners until flush() is called.
|
||||
*/
|
||||
class LL_COMMON_API LLEventQueue: public LLEventPump
|
||||
|
|
|
|||
Loading…
Reference in New Issue