Main Page   Packages   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

C:/temp/src/j2k/nto/bak2/MsgThreadServer.cpp

Go to the documentation of this file.
00001 #ifndef __J2K__MsgThreadServer_CPP__
00002 #define __J2K__MsgThreadServer_CPP__
00003 
00004 #include <j2k/nto/MsgThreadServer.hpp>
00005 
00006 MsgThreadServer::MsgThreadServer( const char* name0 = "MsgSample" ) : Basic_PThread()
00007 {
00008     name_len = strlen( name0 ) + 1;
00009     name     = new char[ name_len ];
00010     memcpy( name, name0, name_len );
00011 
00012     /* Create a local name (/dev/name/local/...) */
00013 
00014     attach = name_attach( NULL, name, 0 );
00015     assert( attach != NULL );
00016 }
00017 
00018 Message MsgThreadServer::receive( int who )
00019 {
00020     int rcvid = -1;
00021     while( rcvid != who )
00022     {
00023       rcvid = MsgReceive( attach->chid, m.getMessageAddr(), m.getMessageSize(), NULL );
00024 
00025       if ( rcvid != -1 ) // Error case
00026       {
00027         break;
00028       }
00029 
00030       register int r = m.handleHeader( rcvid );
00031 
00032       if ( r != 0 ) continue;
00033       
00034       /* A message (presumable ours) received, handle */
00035       printf( "Server receive %d \n", m.getMessageNumber() );
00036       MsgReply( rcvid, EOK, 0, 0 );
00037 
00038       return Message( m );
00039 
00040 //      if ( rcvid == who ) return Message( m );
00041     }
00042 
00043     return Message( m );
00044 }
00045 
00046 
00047 MsgThreadServer::~MsgThreadServer() 
00048 {
00049     /* Remove the name from the space */ 
00050     name_detach(attach, 0);
00051 }
00052 
00053 void MsgThreadServer::send( const char* dest0, Message msg_recv )
00054 {
00055     int fd = name_open( dest0, 0);
00056     assert( fd != -1 );
00057  
00058     int r = MsgSend( fd, msg_recv.getMessageAddr(), msg_recv.getMessageSize(), NULL, 0 );
00059     assert( r != -1 );
00060  
00061     /* Close the connection */
00062     name_close( fd ); 
00063 }
00064 
00065 #endif

Generated on Sun Oct 14 18:46:36 2001 for Standard J2K Library by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001