2727*/
2828
2929#include < Core/Services/FileTransferClient.h>
30+ #include < Core/Services/FileTransfer.h>
31+ #include < Core/SystemCall/TempFileManager.h>
32+ #include < Core/Services/Service.h>
33+ #include < Core/ICom/IComPacket.h>
3034
3135namespace SCIRun {
3236
3337
3438FileTransferClient::FileTransferClient () :
35- fileidcnt_ (1 ),
36- buffersize_ (1000000 )
39+ tfm_ (new TempFileManager),
40+ fileidcnt_ (1 ),
41+ buffersize_ (1000000 )
3742{
3843}
3944
4045FileTransferClient::~FileTransferClient ()
4146{
42- if (tempdir_ != " " ) tfm_. delete_tempdir (tempdir_);
47+ if (tempdir_ != " " ) tfm_-> delete_tempdir (tempdir_);
4348 tempdir_ = " " ;
4449}
4550
4651
47- bool FileTransferClient::open (IComAddress address, std::string servicename, int session, std::string passwd)
52+ bool FileTransferClient::open (IComAddressHandle address, std::string servicename, int session, std::string passwd)
4853{
4954 if (!(ServiceClient::open (address,servicename,session,passwd)))
5055 {
@@ -73,8 +78,8 @@ bool FileTransferClient::open(IComAddress address, std::string servicename, int
7378 remote_homedirid_ = data[0 ];
7479 remote_scirun_tempdir_ = data[1 ];
7580
76- local_homedirid_ = tfm_. get_homedirID ();
77- local_scirun_tempdir_ = tfm_. get_scirun_tmp_dir ();
81+ local_homedirid_ = tfm_-> get_homedirID ();
82+ local_scirun_tempdir_ = tfm_-> get_scirun_tmp_dir ();
7883 return (true );
7984 }
8085 seterror (" File transfer service returned an unknown packet" );
@@ -85,8 +90,8 @@ bool FileTransferClient::open(IComAddress address, std::string servicename, int
8590
8691bool FileTransferClient::create_remote_tempdir (std::string pattern,std::string &tempdir)
8792{
88- IComPacketHandle packet = new IComPacket;
89- if (packet. get_rep () == 0 )
93+ IComPacketHandle packet ( new IComPacket) ;
94+ if (! packet)
9095 {
9196 seterror (" Could not create IComPacket" );
9297 tempdir = " " ;
@@ -124,7 +129,7 @@ bool FileTransferClient::create_remote_tempdir(std::string pattern,std::string &
124129
125130bool FileTransferClient::create_local_tempdir (std::string pattern,std::string &tempdir)
126131{
127- return (tfm_. create_tempdir (pattern,tempdir));
132+ return (tfm_-> create_tempdir (pattern,tempdir));
128133}
129134
130135
@@ -133,7 +138,7 @@ bool FileTransferClient::get_local_homedirid(std::string& homeid)
133138 homeid = local_homedirid_;
134139 if (homeid == " " )
135140 {
136- local_homedirid_ = tfm_. get_homedirID ();
141+ local_homedirid_ = tfm_-> get_homedirID ();
137142 homeid = local_homedirid_;
138143 if (homeid == " " ) return (false );
139144 }
@@ -152,7 +157,7 @@ bool FileTransferClient::get_local_scirun_tempdir(std::string& tempdir)
152157 tempdir = local_scirun_tempdir_;
153158 if (tempdir == " " )
154159 {
155- local_scirun_tempdir_ = tfm_. get_scirun_tmp_dir ();
160+ local_scirun_tempdir_ = tfm_-> get_scirun_tmp_dir ();
156161 tempdir = local_scirun_tempdir_;
157162 if (tempdir == " " ) return (false );
158163 }
@@ -219,8 +224,8 @@ bool FileTransferClient::get_file(std::string remotefilename,std::string localfi
219224 return (false );
220225 }
221226
222- IComPacketHandle packet = new IComPacket;
223- if (packet. get_rep () == 0 )
227+ IComPacketHandle packet ( new IComPacket) ;
228+ if (! packet)
224229 {
225230 ::fclose (localfile);
226231 seterror (" Could not create IComPacket" );
@@ -322,8 +327,8 @@ bool FileTransferClient::put_file(std::string localfilename,std::string remotefi
322327 return (false );
323328 }
324329
325- IComPacketHandle packet = new IComPacket;
326- if (packet. get_rep () == 0 )
330+ IComPacketHandle packet ( new IComPacket) ;
331+ if (! packet)
327332 {
328333 seterror (" Could not create IComPacket" );
329334 ::fclose (localfile);
@@ -376,7 +381,7 @@ bool FileTransferClient::put_file(std::string localfilename,std::string remotefi
376381 }
377382
378383 int seekpos = packet->getparam1 ();
379- int bytesread = 0 ;
384+ size_t bytesread = 0 ;
380385
381386 packet->clear ();
382387 packet->newbuffer (buffersize_);
@@ -385,16 +390,6 @@ bool FileTransferClient::put_file(std::string localfilename,std::string remotefi
385390
386391 bytesread = ::fread (packet->getbuffer (),1 ,buffersize_,localfile);
387392
388- if (bytesread < 0 )
389- {
390- ::fclose (localfile);
391- packet->clear ();
392- packet->settag (TAG_FRESET);
393- send (packet);
394- seterror (" Error reading local file" );
395- return (false );
396- }
397-
398393 if (bytesread < buffersize_)
399394 {
400395 packet->setdatasize (bytesread);
@@ -423,6 +418,29 @@ bool FileTransferClient::put_file(std::string localfilename,std::string remotefi
423418
424419
425420
421+ bool FileTransferClient::set_local_dir (std::string dir)
422+ {
423+ if (dir[dir.size () - 1 ] != ' /' ) dir += ' /' ;
424+ local_dir_ = dir;
425+ return (true );
426+ }
427+
428+ bool FileTransferClient::set_remote_dir (std::string dir)
429+ {
430+ if (dir[dir.size () - 1 ] != ' /' ) dir += ' /' ;
431+ remote_dir_ = dir;
432+ return (true );
433+ }
434+
435+ std::string FileTransferClient::local_file (std::string filename)
436+ {
437+ return (local_dir_ + filename);
438+ }
439+
440+ std::string FileTransferClient::remote_file (std::string filename)
441+ {
442+ return (remote_dir_ + filename);
443+ }
426444
427445} // end namespace
428446
0 commit comments