26 #ifndef _PUBLISHSTORE_H_ 27 #define _PUBLISHSTORE_H_ 55 , _fileName(fileName_)
56 , _initialBlocks(1000)
57 , _truncateOnClose(false)
67 PublishStore(
const std::string& fileName_,
size_t blocksPerRealloc_)
69 (amps_uint32_t)blocksPerRealloc_, true)
70 , _fileName(fileName_)
71 , _initialBlocks((int)blocksPerRealloc_)
72 , _truncateOnClose(false)
89 _truncateOnClose = truncate_;
98 BufferLock guard(_blockStore);
100 if (_truncateOnClose && unpersisted == 0)
104 HANDLE file = INVALID_HANDLE_VALUE;
105 while( file == INVALID_HANDLE_VALUE && retries++ < 5)
107 file = CreateFileA(_fileName.c_str(),
108 GENERIC_READ | GENERIC_WRITE, 0, NULL,
109 OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
112 if( file != INVALID_HANDLE_VALUE )
114 SetFilePointer(file, (LONG)(_initialBlocks*_blockStore.
getBlockSize()),
120 if (truncate(_fileName.c_str(),
121 (off_t)_initialBlocks * (off_t)_blockStore.
getBlockSize()) == -1)
134 BufferLock guard(_blockStore);
138 std::string _fileName;
140 bool _truncateOnClose;
145 #endif //_PUBLISHSTORE_H_ Buffer * getBuffer()
Return the buffer underlying the store for direct write/read.
Definition: BlockStore.hpp:591
Provides AMPS::MMapStoreBuffer, an AMPS::Buffer implementation used by the AMPS::MMapBookmarkStore.
void truncateOnClose(bool truncate_)
Tell the PublishStore if it should return the file to its initial capacity when the store is closed i...
Definition: PublishStore.hpp:87
Provides AMPS::BlockPublishStore, a concrete implementation of a store that breaks the allocated stor...
PublishStore(const std::string &fileName_)
Create a PublishStore that uses fileName_ for the storage.
Definition: PublishStore.hpp:53
A StoreImpl implementation that uses a memory-mapped file to provide a publish store that persists ac...
Definition: PublishStore.hpp:46
PublishStore(const std::string &fileName_, size_t blocksPerRealloc_)
Create a PublishStore that uses fileName_ for the storage.
Definition: PublishStore.hpp:67
Core type, function, and class declarations for the AMPS C++ client.
size_t unpersistedCount() const
Method to return the count of messages that currently in the Store because they have not been discard...
Definition: BlockPublishStore.hpp:614
A Buffer implementation that uses a memory mapped file as its storage.
Definition: MMapStoreBuffer.hpp:49
void sync()
Force the PublishStore to sync to disk.
Definition: PublishStore.hpp:132
Used as a base class for other stores in the AMPS C++ client, this is an implementation of StoreImpl ...
Definition: BlockPublishStore.hpp:60
void close()
Close the PublishStore and associated file.
Definition: PublishStore.hpp:94
amps_uint32_t getBlockSize() const
Get the size of each Block, as set in the constructor.
Definition: BlockStore.hpp:160
Definition: ampsplusplus.hpp:103