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