#include <ace/ACE_Memory_Pool.h>
class ACE_Shared_Memory_Pool : public ACE_Event_Handler {
public:
typedef ACE_Shared_Memory_Pool_Options OPTIONS;
ACE_Shared_Memory_Pool ( LPCTSTR backing_store_name = 0, const OPTIONS *options = 0 );
virtual ~ACE_Shared_Memory_Pool (void);
virtual void *init_acquire ( size_t nbytes, size_t &rounded_bytes, int &first_time );
virtual void *acquire (size_t nbytes, size_t &rounded_bytes);
virtual int release (void);
virtual int sync (ssize_t len = -1, int flags = MS_SYNC);
virtual int sync (void *addr, size_t len, int flags = MS_SYNC);
virtual int protect (ssize_t len = -1, int prot = PROT_RDWR);
virtual int protect ( void *addr, size_t len, int prot = PROT_RDWR );
virtual void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;
protected:
virtual size_t round_up (size_t nbytes);
virtual int commit_backing_store_name ( size_t rounded_bytes, off_t &offset );
struct SHM_TABLE {
public:
key_t key_;
int shmid_;
int used_;
};
void *base_addr_;
size_t file_perms_;
size_t max_segments_;
off_t minimum_bytes_;
size_t segment_size_;
key_t base_shm_key_;
virtual int find_seg (
const void *const searchPtr,
off_t &offset,
size_t &counter
);
virtual int in_use (off_t &offset, size_t &counter);
ACE_Sig_Handler signal_handler_;
virtual int handle_signal (int signum, siginfo_t *, ucontext_t *);
};
void *base_addr_;
size_t file_perms_;
size_t max_segments_;
SHM_TABLE
table.
off_t minimum_bytes_;
size_t segment_size_;
key_t base_shm_key_;
virtual int find_seg (
const void *const searchPtr,
off_t &offset,
size_t &counter
);
virtual int in_use (off_t &offset, size_t &counter);
ACE_Sig_Handler signal_handler_;
virtual int handle_signal (int signum, siginfo_t *, ucontext_t *);