X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fio%2Fpoll.h;h=fdb68c515bbe35e0e05cafdde93e59c625a7bced;hp=09e00e5bbedb6313bea0832d09eb0e451a5ffe3d;hb=292aed8e23ea543b089d5f2a73000de4640befe7;hpb=609c9a508cfdc7b42c46c4f21d17639204165a00 diff --git a/source/io/poll.h b/source/io/poll.h index 09e00e5..fdb68c5 100644 --- a/source/io/poll.h +++ b/source/io/poll.h @@ -1,9 +1,10 @@ #ifndef MSP_IO_POLL_H_ #define MSP_IO_POLL_H_ -#include #include #include +#include +#include #include namespace Msp { @@ -17,7 +18,8 @@ enum PollEvent P_INPUT = 1, P_PRIO = 2, P_OUTPUT = 4, - P_ERROR = 8 + P_ERROR = 8, + P_HANGUP = 16 }; inline PollEvent operator|(PollEvent e, PollEvent f) @@ -30,7 +32,7 @@ inline PollEvent operator~(PollEvent e) { return PollEvent(~static_cast(e)); } -class Poller +class Poller: private NonCopyable { public: struct Slot @@ -41,16 +43,15 @@ public: Slot(EventObject *o, PollEvent e): object(o), events(e) { } }; - typedef std::list SlotList; + typedef std::vector SlotList DEPRECATED; private: - typedef std::map EventMap; - struct Private; - EventMap objects; + std::vector objects; Private *priv; + bool events_changed; bool objs_changed; - SlotList poll_result; + std::vector poll_result; public: Poller(); @@ -64,7 +65,7 @@ private: int do_poll(int); void platform_poll(int); public: - const SlotList &get_result() const { return poll_result; } + const std::vector &get_result() const { return poll_result; } }; PollEvent poll(EventObject &, PollEvent);