ALPS MPS Codes
Reference documentation.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Public Attributes | List of all members
storage::disk::serializable< T > Class Template Reference

#include <storage.h>

Inheritance diagram for storage::disk::serializable< T >:
storage::disk::descriptor Boundary< typename storage::constrained< Matrix >::type, SymmGroup >

Public Types

enum  { core, storing, uncore, prefetching }
 

Public Member Functions

serializableoperator= (const serializable &rhs)
 
void fetch ()
 
void prefetch ()
 
void evict ()
 
void drop ()
 
void thread (boost::thread *t)
 
void join ()
 

Public Attributes

enum
storage::disk::descriptor:: { ... }  
state
 
bool dumped
 
size_t sid
 
boost::thread * worker
 
size_t record
 

Detailed Description

template<class T>
class storage::disk::serializable< T >

Definition at line 176 of file storage.h.

Member Enumeration Documentation

anonymous enum
inherited
Enumerator
core 
storing 
uncore 
prefetching 

Definition at line 169 of file storage.h.

Member Function Documentation

template<class T>
void storage::disk::serializable< T >::drop ( )
inline

Definition at line 211 of file storage.h.

211  {
212  std::remove(disk::fp(sid).c_str());
213  if(state == core) drop_request<T>(disk::fp(sid), (T*)this)();
214  assert(this->state != storing); // drop of already stored data
215  assert(this->state != uncore); // drop of already stored data
216  assert(this->state != prefetching); // drop of prefetched data
217  }
static std::string fp(size_t sid)
Definition: storage.h:232
enum storage::disk::descriptor::@0 state
template<class T>
void storage::disk::serializable< T >::evict ( )
inline

Definition at line 198 of file storage.h.

198  {
199  if(state == core){
200  if(!dumped){
201  state = storing;
202  dumped = true;
203  this->thread(new boost::thread(evict_request<T>(disk::fp(sid), (T*)this)));
204  }else{
205  state = uncore;
206  drop_request<T>(disk::fp(sid), (T*)this)();
207  }
208  }
209  assert(this->state != prefetching); // evict of prefetched
210  }
static std::string fp(size_t sid)
Definition: storage.h:232
enum storage::disk::descriptor::@0 state
void thread(boost::thread *t)
Definition: storage.h:157
template<class T>
void storage::disk::serializable< T >::fetch ( )
inline

Definition at line 183 of file storage.h.

183  {
184  if(this->state == core) return;
185  else if(this->state == prefetching) this->join();
186  assert(this->state != storing); // isn't prefetched prior load
187  assert(this->state != uncore); // isn't prefetched prior load
188  this->state = core;
189  }
enum storage::disk::descriptor::@0 state
void storage::disk::descriptor::join ( )
inlineinherited

Definition at line 161 of file storage.h.

161  {
162  if(this->worker){
163  this->worker->join();
164  delete this->worker;
165  this->worker = NULL;
166  disk::untrack(this);
167  }
168  }
boost::thread * worker
Definition: storage.h:172
static void untrack(descriptor *d)
Definition: storage.h:242
template<class T>
serializable& storage::disk::serializable< T >::operator= ( const serializable< T > &  rhs)
inline

Definition at line 178 of file storage.h.

178  {
179  this->join();
180  descriptor::operator=(rhs);
181  return *this;
182  }
template<class T>
void storage::disk::serializable< T >::prefetch ( )
inline

Definition at line 190 of file storage.h.

190  {
191  if(this->state == core) return;
192  else if(this->state == prefetching) return;
193  else if(this->state == storing) this->join();
194 
195  state = prefetching;
196  this->thread(new boost::thread(fetch_request<T>(disk::fp(sid), (T*)this)));
197  }
static std::string fp(size_t sid)
Definition: storage.h:232
enum storage::disk::descriptor::@0 state
void thread(boost::thread *t)
Definition: storage.h:157
void storage::disk::descriptor::thread ( boost::thread *  t)
inlineinherited

Definition at line 157 of file storage.h.

157  {
158  this->worker = t;
159  disk::track(this);
160  }
static void track(descriptor *d)
Definition: storage.h:238
boost::thread * worker
Definition: storage.h:172

Member Data Documentation

bool storage::disk::descriptor::dumped
inherited

Definition at line 170 of file storage.h.

size_t storage::disk::descriptor::record
inherited

Definition at line 173 of file storage.h.

size_t storage::disk::descriptor::sid
inherited

Definition at line 171 of file storage.h.

enum { ... } storage::disk::descriptor::state
boost::thread* storage::disk::descriptor::worker
inherited

Definition at line 172 of file storage.h.


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