blob: 1f298d6c0ebbc9950ac917c5c0ae8c6742bf840f [file] [log] [blame]
Arman Uguray065d0f72015-07-16 18:12:13 -07001//
Jakub Pawlowski5b790fe2017-09-18 09:00:20 -07002// Copyright 2015 Google, Inc.
Arman Uguray065d0f72015-07-16 18:12:13 -07003//
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
24namespace 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.
29class Settings {
30 public:
31 // Constant for the "--help" command-line switches.
32 static const char kHelp[];
33
Arman Uguray065d0f72015-07-16 18:12:13 -070034 Settings();
35 ~Settings();
36
37 // TODO(armansito): Write an instance method for storing things into a file.
38
Arman Ugurayfe65fb72015-07-24 19:14:42 -070039 // 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
Ian Coolidgec6760d82015-07-30 20:51:47 -070045 // 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_;
Arman Uguray065d0f72015-07-16 18:12:13 -070054 }
55
Arman Ugurayb2286f32015-08-05 21:19:02 -070056 // 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() ||
Myles Watson911d1ae2016-11-28 16:44:40 -080060 !create_ipc_socket_path().empty();
Arman Ugurayb2286f32015-08-05 21:19:02 -070061 }
62
Bailey Forreste8e6c6b2017-06-07 14:50:08 -070063 bool EnableOnStart() const { return enable_on_start_; }
64
Arman Uguray065d0f72015-07-16 18:12:13 -070065 private:
Arman Uguray065d0f72015-07-16 18:12:13 -070066 bool initialized_;
Bailey Forreste8e6c6b2017-06-07 14:50:08 -070067 bool enable_on_start_;
Ian Coolidgec6760d82015-07-30 20:51:47 -070068 std::string android_ipc_socket_suffix_;
69 base::FilePath create_ipc_socket_path_;
Arman Uguray065d0f72015-07-16 18:12:13 -070070
71 DISALLOW_COPY_AND_ASSIGN(Settings);
72};
73
74} // namespace bluetooth