OSDN Git Service

DO NOT MERGE Fix unexpected behavior in smp_sm_event
[android-x86/system-bt.git] / service / settings.h
1 //
2 //  Copyright (C) 2015 Google, Inc.
3 //
4 //  Licensed under the Apache License, Version 2.0 (the "License");
5 //  you may not use this file except in compliance with the License.
6 //  You may obtain a copy of the License at:
7 //
8 //  http://www.apache.org/licenses/LICENSE-2.0
9 //
10 //  Unless required by applicable law or agreed to in writing, software
11 //  distributed under the License is distributed on an "AS IS" BASIS,
12 //  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 //  See the License for the specific language governing permissions and
14 //  limitations under the License.
15 //
16
17 #pragma once
18
19 #include <string>
20
21 #include <base/files/file_path.h>
22 #include <base/macros.h>
23
24 namespace bluetooth {
25
26 // The Settings class stores global runtime configurations, such as IPC domain
27 // namespace, configuration file locations, and other system properties and
28 // flags.
29 class Settings {
30  public:
31   // Constant for the "--help" command-line switches.
32   static const char kHelp[];
33
34   Settings();
35   ~Settings();
36
37   // TODO(armansito): Write an instance method for storing things into a file.
38
39   // Initializes the Settings object. This reads the command-line options for
40   // the current process (which must have been initialized using
41   // base::CommandLine) and sets up the initial global settings. Returns false
42   // if there is an error, e.g. if the parameters/switches are malformed.
43   bool Init();
44
45   // If Android init created a server socket for the daemon,
46   // we can retrieve it through this suffix.
47   const std::string& android_ipc_socket_suffix() const {
48     return android_ipc_socket_suffix_;
49   }
50
51   // Path to create a Unix domain socket server for Bluetooth IPC.
52   const base::FilePath& create_ipc_socket_path() const {
53     return create_ipc_socket_path_;
54   }
55
56   // Returns true if domain-socket based IPC should be used. If false, then
57   // Binder IPC must be used.
58   inline bool UseSocketIPC() const {
59     return !android_ipc_socket_suffix().empty() ||
60         !create_ipc_socket_path().empty();
61   }
62
63  private:
64   bool initialized_;
65   std::string android_ipc_socket_suffix_;
66   base::FilePath create_ipc_socket_path_;
67
68   DISALLOW_COPY_AND_ASSIGN(Settings);
69 };
70
71 }  // namespace bluetooth