]> git.saurik.com Git - apt.git/blobdiff - methods/rsh.h
keep trying with next if connection to a SRV host failed
[apt.git] / methods / rsh.h
index 7bebe29a095d1365ad868a8079b10ffef4986282..571e38ba64baba53a062987b1f0fb1f9facf0081 100644 (file)
 #define APT_RSH_H
 
 #include <string>
+#include <time.h>
+
 #include <apt-pkg/strutl.h>
-#include <apt-pkg/hashes.h>
-#include <apt-pkg/acquire-method.h>
-#include <apt-pkg/fileutl.h>
+
+class Hashes;
+class FileFd;
 
 class RSHConn
 {
@@ -23,6 +25,7 @@ class RSHConn
    int WriteFd;
    int ReadFd;
    URI ServerName;
+   std::string const Prog;
 
    // Private helper functions
    bool ReadLine(std::string &Text);
@@ -34,6 +37,7 @@ class RSHConn
    // Raw connection IO
    bool WriteMsg(std::string &Text,bool Sync,const char *Fmt,...);
    bool Connect(std::string Host, std::string User);
+   bool Connect(std::string Host, unsigned int Port, std::string User);
    bool Comp(URI Other) const {return Other.Host == ServerName.Host && Other.Port == ServerName.Port;};
 
    // Connection control
@@ -46,25 +50,28 @@ class RSHConn
    bool Get(const char *Path,FileFd &To,unsigned long long Resume,
             Hashes &Hash,bool &Missing, unsigned long long Size);
 
-   RSHConn(URI Srv);
+   RSHConn(std::string const &Prog, URI Srv);
    ~RSHConn();
 };
 
-class RSHMethod : public pkgAcqMethod
+#include "aptmethod.h"
+
+class RSHMethod : public aptMethod
 {
-   virtual bool Fetch(FetchItem *Itm);
-   virtual bool Configuration(std::string Message);
+   std::string const Prog;
+   virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE;
+   virtual bool Configuration(std::string Message) APT_OVERRIDE;
 
    RSHConn *Server;
 
    static std::string FailFile;
    static int FailFd;
    static time_t FailTime;
-   static void SigTerm(int);
+   static APT_NORETURN void SigTerm(int);
 
    public:
 
-   RSHMethod();
+   explicit RSHMethod(std::string const &Prog);
 };
 
 #endif