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

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