Public Member Functions | Protected Member Functions

eq::net::Barrier Class Reference

A networked, versioned barrier. More...

#include <barrier.h>

Inheritance diagram for eq::net::Barrier:
Collaboration diagram for eq::net::Barrier:

List of all members.

Public Member Functions

 Barrier (NodePtr master, const uint32_t height=0)
 Construct a new barrier.
 Barrier ()
 Construct a new barrier, to be mapped to the master version.
virtual ~Barrier ()
 Destruct the barrier.
Data Access

After a change, the barrier should be committed and synced to the same version on all nodes entering the barrier.

void setHeight (const uint32_t height)
 Set the number of participants in the barrier.
void increase ()
 Add one participant to the barrier.
uint32_t getHeight () const
Operations

void enter ()
 Enter the barrier, blocks until the barrier has been reached.

Protected Member Functions

virtual void attachToSession (const uint32_t id, const uint32_t instanceID, Session *session)
 Called when object is attached to session from the receiver thread.
virtual ChangeType getChangeType () const
virtual void getInstanceData (DataOStream &os)
 Serialize all instance information of this distributed object.
virtual void applyInstanceData (DataIStream &is)
 Deserialize the instance data.
virtual void pack (DataOStream &os)
 Serialize the modifications since the last call to commit().
virtual void unpack (DataIStream &is)
 Deserialize a change.

Detailed Description

A networked, versioned barrier.

Definition at line 34 of file barrier.h.


Constructor & Destructor Documentation

eq::net::Barrier::Barrier ( NodePtr  master,
const uint32_t  height = 0 
)

Construct a new barrier.

The master node will maintain the barrier state. It has to be reachable from all other nodes participating in the barrier.

This instance should be registered as the master version of the barrier with the session. Note the node of the object master, i.e., this instance, and the barrier master node might be different.

Definition at line 37 of file barrier.cpp.

References EQINFO, and eq::base::UUID::ZERO.

eq::net::Barrier::Barrier (  ) 

Construct a new barrier, to be mapped to the master version.

Definition at line 46 of file barrier.cpp.

References EQINFO.

eq::net::Barrier::~Barrier (  )  [virtual]

Destruct the barrier.

Definition at line 51 of file barrier.cpp.


Member Function Documentation

void eq::net::Barrier::applyInstanceData ( DataIStream is  )  [protected, virtual]

Deserialize the instance data.

This method is called during object mapping to populate slave instances with the master object's data.

Parameters:
is the input stream.

Implements eq::net::Object.

Definition at line 63 of file barrier.cpp.

void eq::net::Barrier::enter (  ) 

Enter the barrier, blocks until the barrier has been reached.

The implementation assumes that the master node instance also enters the barrier.

Definition at line 92 of file barrier.cpp.

References EQLOG, eq::base::Monitor< T >::get(), eq::net::Object::getID(), eq::net::Session::getLocalNode(), eq::net::Object::getSession(), eq::net::Object::getVersion(), eq::base::RefPtr< T >::isValid(), eq::net::Object::send(), eq::base::Monitor< T >::waitEQ(), and eq::base::UUID::ZERO.

Here is the call graph for this function:

virtual ChangeType eq::net::Barrier::getChangeType (  )  const [inline, protected, virtual]
Returns:
how the changes are to be handled.

Reimplemented from eq::net::Object.

Definition at line 87 of file barrier.h.

uint32_t eq::net::Barrier::getHeight (  )  const [inline]
Returns:
the number of participants.

Definition at line 69 of file barrier.h.

Referenced by eq::server::Compound::update().

Here is the caller graph for this function:

void eq::net::Barrier::getInstanceData ( DataOStream os  )  [protected, virtual]

Serialize all instance information of this distributed object.

Parameters:
os The output stream.

Implements eq::net::Object.

Definition at line 58 of file barrier.cpp.

void eq::net::Barrier::increase (  )  [inline]

Add one participant to the barrier.

Definition at line 66 of file barrier.h.

Referenced by eq::server::Window::joinNVSwapBarrier(), and eq::server::Window::joinSwapBarrier().

Here is the caller graph for this function:

void eq::net::Barrier::pack ( DataOStream os  )  [protected, virtual]

Serialize the modifications since the last call to commit().

No new version will be created if no data is written to the output stream.

Parameters:
os the output stream.

Reimplemented from eq::net::Object.

Definition at line 68 of file barrier.cpp.

void eq::net::Barrier::setHeight ( const uint32_t  height  )  [inline]

Set the number of participants in the barrier.

Definition at line 63 of file barrier.h.

Referenced by eq::server::Node::getBarrier().

Here is the caller graph for this function:

void eq::net::Barrier::unpack ( DataIStream is  )  [protected, virtual]

Deserialize a change.

Parameters:
is the input data stream.

Reimplemented from eq::net::Object.

Definition at line 73 of file barrier.cpp.


The documentation for this class was generated from the following files:
Generated on Sun Aug 29 2010 13:53:45 for Equalizer 0.9.1 by  doxygen 1.7.1