xref: /openbmc/phosphor-ipmi-flash/bmc/handler_config.hpp (revision cc7f385bea161647777a55e187c5e40bab4f841c)
1*cc7f385bSWilliam A. Kennington III #pragma once
2*cc7f385bSWilliam A. Kennington III #include "image_handler.hpp"
3*cc7f385bSWilliam A. Kennington III 
4*cc7f385bSWilliam A. Kennington III #include <memory>
5*cc7f385bSWilliam A. Kennington III #include <string>
6*cc7f385bSWilliam A. Kennington III 
7*cc7f385bSWilliam A. Kennington III namespace ipmi_flash
8*cc7f385bSWilliam A. Kennington III {
9*cc7f385bSWilliam A. Kennington III 
10*cc7f385bSWilliam A. Kennington III /**
11*cc7f385bSWilliam A. Kennington III  * HandlerConfig associates a blobID with an ImageHandler and a set of
12*cc7f385bSWilliam A. Kennington III  * supported actions of type T.
13*cc7f385bSWilliam A. Kennington III  */
14*cc7f385bSWilliam A. Kennington III template <typename T>
15*cc7f385bSWilliam A. Kennington III struct HandlerConfig
16*cc7f385bSWilliam A. Kennington III {
17*cc7f385bSWilliam A. Kennington III     /* A string in the form: /flash/{unique}, s.t. unique is something like,
18*cc7f385bSWilliam A. Kennington III      * flash, ubitar, statictar, or bios
19*cc7f385bSWilliam A. Kennington III      */
20*cc7f385bSWilliam A. Kennington III     std::string blobId;
21*cc7f385bSWilliam A. Kennington III 
22*cc7f385bSWilliam A. Kennington III     /* This owns a handler interface, this is typically going to be a file
23*cc7f385bSWilliam A. Kennington III      * writer object.
24*cc7f385bSWilliam A. Kennington III      */
25*cc7f385bSWilliam A. Kennington III     std::unique_ptr<ImageHandlerInterface> handler;
26*cc7f385bSWilliam A. Kennington III 
27*cc7f385bSWilliam A. Kennington III     /*  specifies actions to be taken in response to certain operations on a
28*cc7f385bSWilliam A. Kennington III      *  blob.
29*cc7f385bSWilliam A. Kennington III      *  Usually required but there are exceptions;  the hashBlobId doesn't have
30*cc7f385bSWilliam A. Kennington III      * an action pack.
31*cc7f385bSWilliam A. Kennington III      */
32*cc7f385bSWilliam A. Kennington III     std::unique_ptr<T> actions;
33*cc7f385bSWilliam A. Kennington III };
34*cc7f385bSWilliam A. Kennington III 
35*cc7f385bSWilliam A. Kennington III } // namespace ipmi_flash
36