00001
00002
00003
00004
00005
00006
00007 #ifndef __WVMAGICCIRCLE_H
00008 #define __WVMAGICCIRCLE_H
00009
00010 #include "wvshmzone.h"
00011
00012
00014 class WvMagicCircle : public WvErrorBase
00015 {
00016 public:
00022 WvMagicCircle(size_t size);
00023 ~WvMagicCircle();
00024
00025 protected:
00026 WvShmZone shm;
00027
00028 volatile int &head, &tail;
00029 int size;
00030 char *circle;
00031
00032 public:
00033 size_t used();
00034 size_t left()
00035 { return size - used() - 1; }
00036 size_t put(const void *data, size_t len);
00037 size_t get(void *data, size_t len);
00038 size_t skip(size_t len);
00039 };
00040
00041
00042 #endif // __WVMAGICCIRCLE_H