Home | History | Annotate | Download | only in http
      1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef NET_HTTP_HTTP_VERSION_H_
      6 #define NET_HTTP_HTTP_VERSION_H_
      7 
      8 #include "base/basictypes.h"
      9 
     10 namespace net {
     11 
     12 // Wrapper for an HTTP (major,minor) version pair.
     13 class HttpVersion {
     14  public:
     15   // Default constructor (major=0, minor=0).
     16   HttpVersion() : value_(0) { }
     17 
     18   // Build from unsigned major/minor pair.
     19   HttpVersion(uint16 major, uint16 minor) : value_(major << 16 | minor) { }
     20 
     21   // Major version number.
     22   uint16 major_value() const {
     23     return value_ >> 16;
     24   }
     25 
     26   // Minor version number.
     27   uint16 minor_value() const {
     28     return value_ & 0xffff;
     29   }
     30 
     31   // Overloaded operators:
     32 
     33   bool operator==(const HttpVersion& v) const {
     34     return value_ == v.value_;
     35   }
     36   bool operator!=(const HttpVersion& v) const {
     37     return value_ != v.value_;
     38   }
     39   bool operator>(const HttpVersion& v) const {
     40     return value_ > v.value_;
     41   }
     42   bool operator>=(const HttpVersion& v) const {
     43     return value_ >= v.value_;
     44   }
     45   bool operator<(const HttpVersion& v) const {
     46     return value_ < v.value_;
     47   }
     48   bool operator<=(const HttpVersion& v) const {
     49     return value_ <= v.value_;
     50   }
     51 
     52  private:
     53   uint32 value_; // Packed as <major>:<minor>
     54 };
     55 
     56 }  // namespace net
     57 
     58 #endif  // NET_HTTP_HTTP_VERSION_H_
     59