Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

Communicate Class Reference

#include <Communicate.h>

List of all members.

Public Member Functions

 Communicate (void)
 ~Communicate ()
MIStreamnewInputStream (int pe, int tag)
MOStreamnewOutputStream (int pe, int tag, unsigned int bufsize)
void * getMessage (int PE, int tag)
void sendMessage (int PE, void *msg, int size)


Constructor & Destructor Documentation

Communicate::Communicate void   ) 
 

Definition at line 24 of file Communicate.C.

References CsmHandler().

00025 {
00026   CkpvInitialize(CmmTable, CsmMessages);
00027   CsmHandlerIndex = CmiRegisterHandler((CmiHandler) CsmHandler);
00028   CkpvAccess(CsmMessages) = CmmNew();
00029 }

Communicate::~Communicate  ) 
 

Definition at line 32 of file Communicate.C.

00033 {
00034   // do nothing
00035 }


Member Function Documentation

void * Communicate::getMessage int  PE,
int  tag
 

Definition at line 49 of file Communicate.C.

References NAMD_bug().

00050 {
00051   if ( CmiMyRank() ) NAMD_bug("Communicate::getMessage called on non-rank-zero Pe\n");
00052   int itag[2], rtag[2];
00053   void *msg;
00054 
00055   itag[0] = (PE==(-1)) ? (CmmWildCard) : PE;
00056   itag[1] = (tag==(-1)) ? (CmmWildCard) : tag;
00057   while((msg=CmmGet(CkpvAccess(CsmMessages),2,itag,rtag))==0) {
00058     CmiDeliverMsgs(0);
00059   }
00060   return msg;
00061 }

MIStream * Communicate::newInputStream int  pe,
int  tag
 

Definition at line 37 of file Communicate.C.

00038 {
00039   MIStream *st = new MIStream(this, PE, tag);
00040   return st;
00041 }

MOStream * Communicate::newOutputStream int  pe,
int  tag,
unsigned int  bufsize
 

Definition at line 43 of file Communicate.C.

00044 {
00045   MOStream *st = new MOStream(this, PE, tag, bufSize);
00046   return st;
00047 }

void Communicate::sendMessage int  PE,
void *  msg,
int  size
 

Definition at line 63 of file Communicate.C.

References ALL, ALLBUTME, and NAMD_bug().

Referenced by MOStream::end().

00064 {
00065   if ( CmiMyPe() ) NAMD_bug("Communicate::sendMessage not from Pe 0");
00066   CmiSetHandler(msg, CsmHandlerIndex);
00067   switch(PE) {
00068     case ALL:
00069       NAMD_bug("Unexpected Communicate::sendMessage(ALL,...)");
00070       //CmiSyncBroadcastAll(size, (char *)msg);
00071       break;
00072     case ALLBUTME:
00073       CmiSyncBroadcast(size, (char *)msg);
00074       break;
00075     default:
00076       NAMD_bug("Unexpected Communicate::sendMessage(PEL,...)");
00077       //CmiSyncSend(PE, size, (char *)msg);
00078       break;
00079   }
00080 }


The documentation for this class was generated from the following files:
Generated on Mon Nov 23 04:59:34 2009 for NAMD by  doxygen 1.3.9.1