xref: /openbmc/bmcweb/features/redfish/include/redfish.hpp (revision b6df6dc7a1777e1063104012cf79f2aaa9dbe3f9)
1*b6df6dc7SBorawski.Lukasz /*
2*b6df6dc7SBorawski.Lukasz // Copyright (c) 2018 Intel Corporation
3*b6df6dc7SBorawski.Lukasz //
4*b6df6dc7SBorawski.Lukasz // Licensed under the Apache License, Version 2.0 (the "License");
5*b6df6dc7SBorawski.Lukasz // you may not use this file except in compliance with the License.
6*b6df6dc7SBorawski.Lukasz // You may obtain a copy of the License at
7*b6df6dc7SBorawski.Lukasz //
8*b6df6dc7SBorawski.Lukasz //      http://www.apache.org/licenses/LICENSE-2.0
9*b6df6dc7SBorawski.Lukasz //
10*b6df6dc7SBorawski.Lukasz // Unless required by applicable law or agreed to in writing, software
11*b6df6dc7SBorawski.Lukasz // distributed under the License is distributed on an "AS IS" BASIS,
12*b6df6dc7SBorawski.Lukasz // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*b6df6dc7SBorawski.Lukasz // See the License for the specific language governing permissions and
14*b6df6dc7SBorawski.Lukasz // limitations under the License.
15*b6df6dc7SBorawski.Lukasz */
16*b6df6dc7SBorawski.Lukasz #pragma once
17*b6df6dc7SBorawski.Lukasz 
18*b6df6dc7SBorawski.Lukasz #include "../lib/service_root.hpp"
19*b6df6dc7SBorawski.Lukasz 
20*b6df6dc7SBorawski.Lukasz namespace redfish {
21*b6df6dc7SBorawski.Lukasz /*
22*b6df6dc7SBorawski.Lukasz  * @brief Top level class installing and providing Redfish services
23*b6df6dc7SBorawski.Lukasz  */
24*b6df6dc7SBorawski.Lukasz class RedfishService {
25*b6df6dc7SBorawski.Lukasz  public:
26*b6df6dc7SBorawski.Lukasz   /*
27*b6df6dc7SBorawski.Lukasz    * @brief Redfish service constructor
28*b6df6dc7SBorawski.Lukasz    *
29*b6df6dc7SBorawski.Lukasz    * Loads Redfish configuration and installs schema resources
30*b6df6dc7SBorawski.Lukasz    *
31*b6df6dc7SBorawski.Lukasz    * @param[in] app   Crow app on which Redfish will initialize
32*b6df6dc7SBorawski.Lukasz    */
33*b6df6dc7SBorawski.Lukasz   template <typename CrowApp>
34*b6df6dc7SBorawski.Lukasz   RedfishService(CrowApp& app) {
35*b6df6dc7SBorawski.Lukasz     auto privilegeProvider = PrivilegeProvider();
36*b6df6dc7SBorawski.Lukasz     serviceRootPtr = std::make_unique<ServiceRoot>(app, privilegeProvider);
37*b6df6dc7SBorawski.Lukasz   }
38*b6df6dc7SBorawski.Lukasz 
39*b6df6dc7SBorawski.Lukasz  private:
40*b6df6dc7SBorawski.Lukasz   std::unique_ptr<ServiceRoot> serviceRootPtr;
41*b6df6dc7SBorawski.Lukasz };
42*b6df6dc7SBorawski.Lukasz 
43*b6df6dc7SBorawski.Lukasz }  // namespace redfish
44