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_;
101 BufferLock guard(_blockStore);
103 if (_truncateOnClose && unpersisted == 0)
107 HANDLE file = INVALID_HANDLE_VALUE;
108 while ( file == INVALID_HANDLE_VALUE && retries++ < 5)
110 file = CreateFileA(_fileName.c_str(),
111 GENERIC_READ | GENERIC_WRITE, 0, NULL,
112 OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
115 if ( file != INVALID_HANDLE_VALUE )
117 SetFilePointer(file, (LONG)(_initialBlocks * _blockStore.
getBlockSize()),
123 if (truncate(_fileName.c_str(),
124 (off_t)_initialBlocks * (off_t)_blockStore.
getBlockSize()) == -1)
137 BufferLock guard(_blockStore);
141 std::string _fileName;
143 bool _truncateOnClose;
148 #endif //_PUBLISHSTORE_H_ Buffer * getBuffer()
Return the buffer underlying the store for direct write/read.
Definition: BlockStore.hpp:597
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:628
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:135
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