]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/contrib/srvrec.h
edsp: support generic and solver-specific configs
[apt.git] / apt-pkg / contrib / srvrec.h
index 583907706b59e7950c63e7b20d4f69e6f0a7aca8..01b810281b0c16ffe091da5be94a9f32d0bbecb3 100644 (file)
@@ -3,7 +3,7 @@
 /* ######################################################################
 
    SRV record support
-  
+
    ##################################################################### */
                                                                        /*}}}*/
 #ifndef SRVREC_H
@@ -21,10 +21,34 @@ class SrvRec
    u_int16_t weight;
    u_int16_t port;
 
-   // see rfc-2782
-   //int random;
+   // each server is assigned a interval [start, end] in the space of [0, max]
+   int random_number_range_start;
+   int random_number_range_end;
+   int random_number_range_max;
+
+   bool operator<(SrvRec const &other) const {
+      return this->priority < other.priority;
+   }
+   bool operator==(SrvRec const &other) const;
+
+   SrvRec(std::string const Target, u_int16_t const Priority,
+        u_int16_t const Weight, u_int16_t const Port) :
+      target(Target), priority(Priority), weight(Weight), port(Port),
+      random_number_range_start(0), random_number_range_end(0),
+      random_number_range_max(0) {}
 };
 
+/** \brief Get SRV records from host/port (builds the query string internally) 
+ */
 bool GetSrvRecords(std::string name, std::vector<SrvRec> &Result);
 
+/** \brief Get SRV records for query string like: _http._tcp.example.com
+ */
+bool GetSrvRecords(std::string host, int port, std::vector<SrvRec> &Result);
+
+/** \brief Pop a single SRV record from the vector of SrvRec taking
+ *         priority and weight into account
+ */
+SrvRec PopFromSrvRecs(std::vector<SrvRec> &Recs);
+
 #endif