| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Dial requires some system information exposed to the world, for example |
| // the device name, etc. This class lets it be configurable, but throw default |
| // values from implementation. |
| |
| #ifndef NET_DIAL_DIAL_SYSTEM_CONFIG_H |
| #define NET_DIAL_DIAL_SYSTEM_CONFIG_H |
| |
| #include <string> |
| |
| #include "base/basictypes.h" |
| #include "base/memory/singleton.h" |
| #include "base/synchronization/lock.h" |
| |
| namespace net { |
| |
| class DialSystemConfig { |
| public: |
| static DialSystemConfig* GetInstance(); |
| |
| // Stores the pointers to various system info. |
| const char* friendly_name() const { return friendly_name_.c_str(); } |
| |
| const char* manufacturer_name() const { return manufacturer_name_.c_str(); } |
| |
| const char* model_name() const { return model_name_.c_str(); } |
| |
| // Get's the model uuid. |
| const char* model_uuid() const; |
| |
| private: |
| DialSystemConfig(); |
| |
| friend struct DefaultSingletonTraits<DialSystemConfig>; |
| |
| static void CreateDialUuid(); |
| |
| // These 4 functions must be defined by a platform-specific source file. |
| static std::string GetFriendlyName(); |
| static std::string GetManufacturerName(); |
| static std::string GetModelName(); |
| static std::string GeneratePlatformUuid(); |
| |
| static const int kMaxNameSize = 64; |
| |
| std::string friendly_name_; |
| std::string manufacturer_name_; |
| std::string model_name_; |
| |
| DISALLOW_COPY_AND_ASSIGN(DialSystemConfig); |
| mutable base::Lock lock_; |
| }; |
| |
| } |
| |
| #endif // NET_DIAL_DIAL_SYSTEM_CONFIG_H |