| Paul Stewart | 20088d8 | 2012-02-16 06:58:55 -0800 | [diff] [blame] | 1 | // Copyright (c) 2012 The Chromium OS Authors. All rights reserved. | 
| Paul Stewart | fdd1607 | 2011-09-16 12:41:35 -0700 | [diff] [blame] | 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 SHILL_TECHNOLOGY_ | 
 | 6 | #define SHILL_TECHNOLOGY_ | 
 | 7 |  | 
 | 8 | #include <string> | 
| Paul Stewart | 20088d8 | 2012-02-16 06:58:55 -0800 | [diff] [blame] | 9 | #include <vector> | 
| Paul Stewart | fdd1607 | 2011-09-16 12:41:35 -0700 | [diff] [blame] | 10 |  | 
 | 11 | namespace shill { | 
 | 12 |  | 
| Paul Stewart | 20088d8 | 2012-02-16 06:58:55 -0800 | [diff] [blame] | 13 | class Error; | 
 | 14 |  | 
| Ben Chan | c12cf66 | 2012-04-05 14:47:18 -0700 | [diff] [blame] | 15 | // A class that provides functions for converting between technology names | 
 | 16 | // and identifiers. | 
| Paul Stewart | fdd1607 | 2011-09-16 12:41:35 -0700 | [diff] [blame] | 17 | class Technology { | 
 | 18 |  public: | 
 | 19 |   enum Identifier { | 
 | 20 |     kEthernet, | 
 | 21 |     kWifi, | 
| Paul Stewart | 2001a42 | 2011-12-15 10:20:09 -0800 | [diff] [blame] | 22 |     kWiFiMonitor, | 
| Paul Stewart | fdd1607 | 2011-09-16 12:41:35 -0700 | [diff] [blame] | 23 |     kCellular, | 
| Darin Petkov | 33af05c | 2012-02-28 10:10:30 +0100 | [diff] [blame] | 24 |     kVPN, | 
| Paul Stewart | cba0f7f | 2012-02-29 16:33:05 -0800 | [diff] [blame] | 25 |     kTunnel, | 
| Paul Stewart | fdd1607 | 2011-09-16 12:41:35 -0700 | [diff] [blame] | 26 |     kBlacklisted, | 
| Paul Stewart | e81eb70 | 2012-04-11 15:04:53 -0700 | [diff] [blame] | 27 |     kLoopback, | 
| mukesh agrawal | 93a29ed | 2012-04-17 16:13:01 -0700 | [diff] [blame] | 28 |     kVirtioEthernet,  // Only for internal use in DeviceInfo. | 
| Paul Stewart | ca876ee | 2012-04-21 08:55:58 -0700 | [diff] [blame^] | 29 |     kPPP, | 
| Paul Stewart | fdd1607 | 2011-09-16 12:41:35 -0700 | [diff] [blame] | 30 |     kUnknown, | 
| Paul Stewart | fdd1607 | 2011-09-16 12:41:35 -0700 | [diff] [blame] | 31 |   }; | 
 | 32 |  | 
| Ben Chan | c12cf66 | 2012-04-05 14:47:18 -0700 | [diff] [blame] | 33 |   // Returns the technology identifier for a technology name in |name|, | 
 | 34 |   // or Technology::kUnknown if the technology name is unknown. | 
| Paul Stewart | fdd1607 | 2011-09-16 12:41:35 -0700 | [diff] [blame] | 35 |   static Identifier IdentifierFromName(const std::string &name); | 
| Ben Chan | c12cf66 | 2012-04-05 14:47:18 -0700 | [diff] [blame] | 36 |  | 
 | 37 |   // Returns the technology name for a technology identifier in |id|, | 
 | 38 |   // or Technology::kUnknownName ("Unknown") if the technology identifier | 
 | 39 |   // is unknown. | 
| Paul Stewart | fdd1607 | 2011-09-16 12:41:35 -0700 | [diff] [blame] | 40 |   static std::string NameFromIdentifier(Identifier id); | 
| Ben Chan | c12cf66 | 2012-04-05 14:47:18 -0700 | [diff] [blame] | 41 |  | 
 | 42 |   // Returns the technology identifier for a storage group identifier in | 
 | 43 |   // |group|, which should have the format of <technology name>_<suffix>, | 
 | 44 |   // or Technology::kUnknown if |group| is not prefixed with a known | 
 | 45 |   // technology name. | 
| Paul Stewart | 1b25314 | 2012-01-26 14:05:52 -0800 | [diff] [blame] | 46 |   static Identifier IdentifierFromStorageGroup(const std::string &group); | 
| Paul Stewart | fdd1607 | 2011-09-16 12:41:35 -0700 | [diff] [blame] | 47 |  | 
| Ben Chan | c12cf66 | 2012-04-05 14:47:18 -0700 | [diff] [blame] | 48 |   // Converts the comma-separated list of technology names (with no whitespace | 
 | 49 |   // around commas) in |technologies_string| into a vector of technology | 
 | 50 |   // identifiers output in |technologies_vector|. Returns true if the | 
 | 51 |   // |technologies_string| contains a valid set of technologies with no | 
 | 52 |   // duplicate elements, false otherwise. | 
| Paul Stewart | 20088d8 | 2012-02-16 06:58:55 -0800 | [diff] [blame] | 53 |   static bool GetTechnologyVectorFromString( | 
 | 54 |       const std::string &technologies_string, | 
 | 55 |       std::vector<Identifier> *technologies_vector, | 
 | 56 |       Error *error); | 
 | 57 |  | 
| Paul Stewart | fdd1607 | 2011-09-16 12:41:35 -0700 | [diff] [blame] | 58 |  private: | 
| Paul Stewart | e81eb70 | 2012-04-11 15:04:53 -0700 | [diff] [blame] | 59 |   static const char kLoopbackName[]; | 
| Paul Stewart | cba0f7f | 2012-02-29 16:33:05 -0800 | [diff] [blame] | 60 |   static const char kTunnelName[]; | 
| Paul Stewart | ca876ee | 2012-04-21 08:55:58 -0700 | [diff] [blame^] | 61 |   static const char kPPPName[]; | 
| Paul Stewart | fdd1607 | 2011-09-16 12:41:35 -0700 | [diff] [blame] | 62 |   static const char kUnknownName[]; | 
 | 63 | }; | 
 | 64 |  | 
 | 65 | }  // namespace shill | 
 | 66 |  | 
 | 67 | #endif  // SHILL_TECHNOLOGY_ |