Merge remote-tracking branch 'mvo/feature/dpkg-progress-docs' into debian/sid
[ntk/apt.git] / methods / rsh.h
1 // -*- mode: cpp; mode: fold -*-
2 // Description /*{{{*/// $Id: rsh.h,v 1.4 2002/11/09 23:33:26 doogie Exp $
3 // $Id: rsh.h,v 1.4 2002/11/09 23:33:26 doogie Exp $
4 /* ######################################################################
5
6 RSH method - Transfer files via rsh compatible program
7
8 ##################################################################### */
9 /*}}}*/
10 #ifndef APT_RSH_H
11 #define APT_RSH_H
12
13 #include <string>
14 #include <apt-pkg/strutl.h>
15
16 class Hashes;
17 class FileFd;
18
19 class RSHConn
20 {
21 char Buffer[1024*10];
22 unsigned long Len;
23 int WriteFd;
24 int ReadFd;
25 URI ServerName;
26
27 // Private helper functions
28 bool ReadLine(std::string &Text);
29
30 public:
31
32 pid_t Process;
33
34 // Raw connection IO
35 bool WriteMsg(std::string &Text,bool Sync,const char *Fmt,...);
36 bool Connect(std::string Host, std::string User);
37 bool Comp(URI Other) const {return Other.Host == ServerName.Host && Other.Port == ServerName.Port;};
38
39 // Connection control
40 bool Open();
41 void Close();
42
43 // Query
44 bool Size(const char *Path,unsigned long long &Size);
45 bool ModTime(const char *Path, time_t &Time);
46 bool Get(const char *Path,FileFd &To,unsigned long long Resume,
47 Hashes &Hash,bool &Missing, unsigned long long Size);
48
49 RSHConn(URI Srv);
50 ~RSHConn();
51 };
52
53 #include <apt-pkg/acquire-method.h>
54
55 class RSHMethod : public pkgAcqMethod
56 {
57 virtual bool Fetch(FetchItem *Itm);
58 virtual bool Configuration(std::string Message);
59
60 RSHConn *Server;
61
62 static std::string FailFile;
63 static int FailFd;
64 static time_t FailTime;
65 static void SigTerm(int);
66
67 public:
68
69 RSHMethod();
70 };
71
72 #endif