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

C:/temp/src/j2k/Net/TFTP/TFTP_OptionSaved.cpp

Go to the documentation of this file.
00001 #ifndef __J2K__TFTP_OptionSaved_CPP__
00002 #define __J2K__TFTP_OptionSaved_CPP__
00003 
00004 #include <j2k/Net/TFTP/TFTP_OptionSaved.hpp>
00005 
00006 
00007 TFTP_OptionSaved::TFTP_OptionSaved()
00008     : mode(       NULL ),
00009       timeout(    NULL ),
00010       blocksize(  NULL ),
00011       windowsize( NULL ),
00012       windowsizeLength( 0 ),
00013       blocksizeLength( 0 ),
00014       timeoutLength( 0 ),
00015       modeLength( 0 ) { }
00016 
00017 TFTP_OptionSaved::~TFTP_OptionSaved()
00018   {
00019     if ( mode       != NULL )  delete [] mode;
00020     if ( timeout    != NULL )  delete [] timeout;
00021     if ( blocksize  != NULL )  delete [] blocksize;
00022     if ( windowsize != NULL )  delete [] windowsize;
00023   }
00024 
00025 void TFTP_OptionSaved::save()
00026   {
00027     option.rwlock1_global.read();
00028     rwlock4_saved.write();
00029 
00030     if ( mode       != NULL )  delete [] mode;
00031     if ( timeout    != NULL )  delete [] timeout;
00032     if ( blocksize  != NULL )  delete [] blocksize;
00033     if ( windowsize != NULL )  delete [] windowsize;
00034 
00035     mode       = new char[       option.modeLength ];
00036     timeout    = new char[    option.timeoutLength ];
00037     blocksize  = new char[  option.blocksizeLength ];
00038     windowsize = new char[ option.windowsizeLength ];
00039                 
00040     windowsizeLength = option.windowsizeLength;
00041      blocksizeLength = option.blocksizeLength;
00042        timeoutLength = option.timeoutLength;
00043           modeLength = option.modeLength;
00044     
00045     memcpy( mode,       option.mode,       option.modeLength       );
00046     memcpy( timeout,    option.timeout,    option.timeoutLength    );
00047     memcpy( blocksize,  option.blocksize,  option.blocksizeLength  );
00048     memcpy( windowsize, option.windowsize, option.windowsizeLength );
00049 
00050     rwlock4_saved.releaseWrite();
00051     option.rwlock1_global.releaseRead();
00052   }
00053 
00054   void TFTP_OptionSaved::load()
00055   {
00056     option.rwlock1_global.write();
00057     rwlock4_saved.read();
00058 
00059     if ( option.mode       != NULL )  delete [] option.mode;
00060     if ( option.timeout    != NULL )  delete [] option.timeout;
00061     if ( option.blocksize  != NULL )  delete [] option.blocksize;
00062     if ( option.windowsize != NULL )  delete [] option.windowsize;
00063 
00064     option.windowsizeLength = windowsizeLength;
00065      option.blocksizeLength = blocksizeLength;
00066        option.timeoutLength = timeoutLength;
00067           option.modeLength = modeLength;
00068                                              
00069     memcpy( option.mode,       mode,             modeLength );
00070     memcpy( option.timeout,    timeout,       timeoutLength );
00071     memcpy( option.blocksize,  blocksize,   blocksizeLength );
00072     memcpy( option.windowsize, windowsize, windowsizeLength );
00073 
00074     rwlock4_saved.releaseRead();
00075     option.rwlock1_global.write();
00076   }
00077 
00078 #endif

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