HandleSet.h
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:2k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* HandleSet - Encapsulates a set of fd's for select/poll */
  2. /* Copyright (c) 1999 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01e,18aug99,aim  removed inline for SIMNT build
  7. 01d,21jul99,aim  quantify tweaks
  8. 01c,20jul99,aim  added inline statements
  9. 01b,18jun99,aim  added copy ctor and operator=
  10. 01a,07may99,aim  created
  11. */
  12. #ifndef __INCHandleSet_h
  13. #define __INCHandleSet_h
  14. #include "ReactorTypes.h"
  15. #include "iostream"
  16. class HandleSet
  17.     {
  18.   public:
  19.     virtual ~HandleSet();
  20.     HandleSet ();
  21.     HandleSet (REACTOR_HANDLE_SET_TYPE mask);
  22.     HandleSet (const HandleSet&);
  23.     HandleSet& operator= (const HandleSet&);
  24.     int count () const;
  25.     int sync (REACTOR_HANDLE = maxSize ());
  26.     void reset ();
  27.     bool isSet (REACTOR_HANDLE h) const;
  28.     void clr (REACTOR_HANDLE h);
  29.     void set (REACTOR_HANDLE h);
  30.     REACTOR_HANDLE maxHandle () const;
  31.     operator REACTOR_HANDLE_SET_TYPE* ();
  32.     friend class HandleSetIterator;
  33.     friend ostream& operator<<
  34. (
  35. ostream&,
  36. const HandleSet&
  37. );
  38.     static int maxSize ();
  39.   private:
  40.     REACTOR_HANDLE maxHandleSet ();
  41.     
  42.     int m_count;
  43.     REACTOR_HANDLE m_maxHandle;
  44.     REACTOR_HANDLE_SET_TYPE m_mask;
  45.     };
  46. class HandleSetIterator
  47.     {
  48.   public:
  49.     HandleSetIterator (const HandleSet &hs);
  50.     REACTOR_HANDLE end() const;
  51.     bool last() const;
  52.     REACTOR_HANDLE operator() ();
  53.     // "Next" operator.  Returns the next <REACTOR_HANDLE> in the
  54.     // <HandleSet> up to <HandleSet->maxHandle>.  When all the Handles
  55.     // have been seen returns <INVALID_REACTOR_HANDLE>.
  56.   private:
  57.     const HandleSet& m_handleSet;
  58.     int m_count;
  59.     int m_index;
  60.     int m_maxHandle;
  61.     // unsupported
  62.     HandleSetIterator ();
  63.     HandleSetIterator (const HandleSetIterator&);
  64.     HandleSetIterator& operator= (HandleSetIterator&);
  65.     };
  66. #endif // __INCHandleSet_h