00001
00002
00003
00004
00005
00006
00007
#ifndef __WVMAGICCIRCLE_H
00008
#define __WVMAGICCIRCLE_H
00009
00010
#include "wvshmzone.h"
00011
00012
00013
00014 class WvMagicCircle :
public WvError
00015 {
00016
public:
00017
00018
00019
00020
00021
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