1 //
2 // Copyright (C) 2020 The Android Open Source Project
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 <binder/BinderService.h>
20 #include <binder/Status.h>
21 
22 #include "com/android/server/profcollect/BnProfCollectd.h"
23 #include "scheduler.h"
24 
25 namespace android {
26 namespace profcollectd {
27 
28 class ProfcollectdBinder : public BinderService<ProfcollectdBinder>,
29                            public ::com::android::server::profcollect::BnProfCollectd {
30  public:
31   explicit ProfcollectdBinder();
32 
getServiceName()33   static constexpr const char* getServiceName() { return "profcollectd"; }
34 
35   binder::Status ReadConfig() override;
36   binder::Status ScheduleCollection() override;
37   binder::Status TerminateCollection() override;
38   binder::Status TraceOnce(const std::string& tag) override;
39   binder::Status ProcessProfile() override;
40   binder::Status GetSupportedProvider(std::string* provider) override;
41 
42  protected:
43   inline static std::unique_ptr<ProfcollectdScheduler> Scheduler;
44 };
45 
46 }  // namespace profcollectd
47 }  // namespace android
48