LSSTApplications  1.1.2+25,10.0+13,10.0+132,10.0+133,10.0+224,10.0+41,10.0+8,10.0-1-g0f53050+14,10.0-1-g4b7b172+19,10.0-1-g61a5bae+98,10.0-1-g7408a83+3,10.0-1-gc1e0f5a+19,10.0-1-gdb4482e+14,10.0-11-g3947115+2,10.0-12-g8719d8b+2,10.0-15-ga3f480f+1,10.0-2-g4f67435,10.0-2-gcb4bc6c+26,10.0-28-gf7f57a9+1,10.0-3-g1bbe32c+14,10.0-3-g5b46d21,10.0-4-g027f45f+5,10.0-4-g86f66b5+2,10.0-4-gc4fccf3+24,10.0-40-g4349866+2,10.0-5-g766159b,10.0-5-gca2295e+25,10.0-6-g462a451+1
LSSTDataManagementBasePackage
Public Types | Public Member Functions | Static Public Member Functions | Private Types | Static Private Member Functions | Private Attributes | List of all members
lsst::ap::SharedObjectChunkManager Class Reference

A manager for Object chunks that exist in shared memory. More...

#include <ChunkManager.h>

Public Types

typedef Manager::Chunk ObjectChunk
 

Public Member Functions

 SharedObjectChunkManager (std::string const &name)
 
bool isVisitInFlight (int const visitId)
 
void registerVisit (int const visitId)
 
void failVisit (int const visitId)
 
void startVisit (std::vector< ObjectChunk > &toRead, std::vector< ObjectChunk > &toWaitFor, int const visitId, std::vector< int > const &chunkIds)
 
void waitForOwnership (std::vector< ObjectChunk > &toRead, std::vector< ObjectChunk > &toWaitFor, int const visitId, TimeSpec const &deadline)
 
void getChunks (std::vector< ObjectChunk > &chunks, std::vector< int > const &chunkIds)
 
bool endVisit (int const visitId, bool const rollback)
 
void printVisits (std::ostream &os) const
 
void printChunks (std::ostream &os) const
 
void printVisit (int const visitId, std::ostream &os) const
 
void printChunk (int const chunkId, std::ostream &os) const
 

Static Public Member Functions

static void destroyInstance (std::string const &name)
 
static std::size_t size ()
 Returns the size in bytes of the underlying chunk manager and pool of memory blocks. More...
 

Private Types

typedef
detail::ChunkManagerImpl
< SharedMutex, Object
Manager
 

Static Private Member Functions

static Managerinstance (std::string const &name)
 

Private Attributes

Manager_manager
 

Detailed Description

A manager for Object chunks that exist in shared memory.

Definition at line 45 of file ChunkManager.h.

Member Typedef Documentation

Definition at line 49 of file ChunkManager.h.

Definition at line 57 of file ChunkManager.h.

Constructor & Destructor Documentation

lsst::ap::SharedObjectChunkManager::SharedObjectChunkManager ( std::string const &  name)

Definition at line 237 of file ChunkManager.cc.

237 : _manager(instance(name)) {}
static Manager * instance(std::string const &name)

Member Function Documentation

void lsst::ap::SharedObjectChunkManager::destroyInstance ( std::string const &  name)
static

Unlinks the shared memory object underlying all manager instances. The associated memory is not returned to the system until all client processes have relinquished references to it.

Definition at line 251 of file ChunkManager.cc.

251  {
252  std::string actualName(sSharedPrefix);
253  actualName += name;
254  int res = ::shm_unlink(actualName.c_str());
255  // Note: shm_unlink is broken on Mac OSX 10.4 - in violation of the documentation and standard,
256  // EINVAL (rather than ENOENT) is returned when trying to shm_unlink a non-existant shared
257  // memory object.
258  if (res != 0 && errno != ENOENT && errno != EINVAL) {
259  throw LSST_EXCEPT(ex::RuntimeError,
260  (boost::format("shm_unlink(): failed to unlink shared memory object %1%, errno: %2%")
261  % name % errno).str());
262  }
263 }
#define LSST_EXCEPT(type,...)
Definition: Exception.h:46
bool lsst::ap::SharedObjectChunkManager::endVisit ( int const  visitId,
bool const  rollback 
)
inline

Definition at line 96 of file ChunkManager.h.

96  {
97  return _manager->endVisit(visitId, rollback);
98  }
bool endVisit(int const visitId, bool const rollback)
void lsst::ap::SharedObjectChunkManager::failVisit ( int const  visitId)
inline

Definition at line 67 of file ChunkManager.h.

67  {
68  _manager->failVisit(visitId);
69  }
void lsst::ap::SharedObjectChunkManager::getChunks ( std::vector< ObjectChunk > &  chunks,
std::vector< int > const &  chunkIds 
)
inline

Definition at line 89 of file ChunkManager.h.

92  {
93  _manager->getChunks(chunks, chunkIds);
94  }
void getChunks(std::vector< Chunk > &chunks, std::vector< int > const &chunkIds)
detail::ObjChunkMgr * lsst::ap::SharedObjectChunkManager::instance ( std::string const &  name)
staticprivate

Definition at line 240 of file ChunkManager.cc.

240  {
241  std::string actualName(sSharedPrefix);
242  actualName += name;
243  return detail::getSingleton<detail::ObjChunkMgr>(actualName.c_str(), sSharedObjLock);
244 }
bool lsst::ap::SharedObjectChunkManager::isVisitInFlight ( int const  visitId)
inline

Definition at line 61 of file ChunkManager.h.

61  {
62  return _manager->isVisitInFlight(visitId);
63  }
bool isVisitInFlight(int const visitId)
void lsst::ap::SharedObjectChunkManager::printChunk ( int const  chunkId,
std::ostream &  os 
) const
inline

Definition at line 109 of file ChunkManager.h.

109  {
110  _manager->printChunk(chunkId, os);
111  }
void printChunk(int const chunkId, std::ostream &os) const
void lsst::ap::SharedObjectChunkManager::printChunks ( std::ostream &  os) const
inline

Definition at line 103 of file ChunkManager.h.

103  {
104  _manager->printChunks(os);
105  }
void printChunks(std::ostream &os) const
void lsst::ap::SharedObjectChunkManager::printVisit ( int const  visitId,
std::ostream &  os 
) const
inline

Definition at line 106 of file ChunkManager.h.

106  {
107  _manager->printVisit(visitId, os);
108  }
void printVisit(int const visitId, std::ostream &os) const
void lsst::ap::SharedObjectChunkManager::printVisits ( std::ostream &  os) const
inline

Definition at line 100 of file ChunkManager.h.

100  {
101  _manager->printVisits(os);
102  }
void printVisits(std::ostream &os) const
void lsst::ap::SharedObjectChunkManager::registerVisit ( int const  visitId)
inline

Definition at line 64 of file ChunkManager.h.

64  {
65  _manager->registerVisit(visitId);
66  }
void registerVisit(int const visitId)
std::size_t lsst::ap::SharedObjectChunkManager::size ( )
static

Returns the size in bytes of the underlying chunk manager and pool of memory blocks.

Definition at line 267 of file ChunkManager.cc.

267 { return detail::ObjChunkMgr::size(); }
void lsst::ap::SharedObjectChunkManager::startVisit ( std::vector< ObjectChunk > &  toRead,
std::vector< ObjectChunk > &  toWaitFor,
int const  visitId,
std::vector< int > const &  chunkIds 
)
inline

Definition at line 71 of file ChunkManager.h.

76  {
77  _manager->startVisit(toRead, toWaitFor, visitId, chunkIds);
78  }
void startVisit(std::vector< Chunk > &toRead, std::vector< Chunk > &toWaitFor, int const visitId, std::vector< int > const &chunkIds)
void lsst::ap::SharedObjectChunkManager::waitForOwnership ( std::vector< ObjectChunk > &  toRead,
std::vector< ObjectChunk > &  toWaitFor,
int const  visitId,
TimeSpec const &  deadline 
)
inline

Definition at line 80 of file ChunkManager.h.

85  {
86  _manager->waitForOwnership(toRead, toWaitFor, visitId, deadline);
87  }
void waitForOwnership(std::vector< Chunk > &toRead, std::vector< Chunk > &toWaitFor, int const visitId, TimeSpec const &deadline)

Member Data Documentation

Manager* lsst::ap::SharedObjectChunkManager::_manager
private

Definition at line 51 of file ChunkManager.h.


The documentation for this class was generated from the following files: