/** @file | |
Definitions of RedfishHttpData | |
Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef EDKII_REDFISH_HTTP_DATA_H_ | |
#define EDKII_REDFISH_HTTP_DATA_H_ | |
#include "RedfishHttpDxe.h" | |
#define REDFISH_HTTP_DRIVER_SIGNATURE SIGNATURE_32 ('r', 'f', 'h', 'p') | |
#define REDFISH_HTTP_CACHE_SIGNATURE SIGNATURE_32 ('r', 'f', 'c', 'h') | |
#define REDFISH_HTTP_SERVICE_SIGNATURE SIGNATURE_32 ('r', 'f', 's', 'v') | |
#define REDFISH_HTTP_PAYLOAD_SIGNATURE SIGNATURE_32 ('r', 'f', 'p', 'l') | |
#define REDFISH_HTTP_BASIC_AUTH_STR "Basic " | |
/// | |
/// REDFISH_SERVICE_PRIVATE definition. | |
/// | |
typedef struct { | |
UINT32 Signature; | |
CHAR8 *Host; | |
CHAR8 *HostName; | |
CHAR8 *BasicAuth; | |
CHAR8 *SessionToken; | |
EFI_REST_EX_PROTOCOL *RestEx; | |
} REDFISH_SERVICE_PRIVATE; | |
/// | |
/// REDFISH_PAYLOAD_PRIVATE definition. | |
/// | |
typedef struct { | |
UINT32 Signature; | |
REDFISH_SERVICE_PRIVATE *Service; | |
EDKII_JSON_VALUE JsonValue; | |
} REDFISH_PAYLOAD_PRIVATE; | |
/// | |
/// Definition of REDFISH_HTTP_CACHE_DATA | |
/// | |
typedef struct { | |
UINT32 Signature; | |
LIST_ENTRY List; | |
EFI_STRING Uri; | |
UINTN HitCount; | |
REDFISH_RESPONSE *Response; | |
} REDFISH_HTTP_CACHE_DATA; | |
#define REDFISH_HTTP_CACHE_FROM_LIST(a) CR (a, REDFISH_HTTP_CACHE_DATA, List, REDFISH_HTTP_CACHE_SIGNATURE) | |
/// | |
/// Definition of REDFISH_HTTP_CACHE_LIST | |
/// | |
typedef struct { | |
LIST_ENTRY Head; | |
UINTN Count; | |
UINTN Capacity; | |
} REDFISH_HTTP_CACHE_LIST; | |
/// | |
/// Definition of REDFISH_HTTP_RETRY_SETTING | |
/// | |
typedef struct { | |
UINT16 MaximumRetryGet; | |
UINT16 MaximumRetryPut; | |
UINT16 MaximumRetryPost; | |
UINT16 MaximumRetryPatch; | |
UINT16 MaximumRetryDelete; | |
UINTN RetryWait; | |
} REDFISH_HTTP_RETRY_SETTING; | |
/// | |
/// Definition of REDFISH_HTTP_CACHE_PRIVATE | |
/// | |
typedef struct { | |
UINT32 Signature; | |
EFI_HANDLE ImageHandle; | |
BOOLEAN CacheDisabled; | |
EFI_EVENT NotifyEvent; | |
REDFISH_HTTP_CACHE_LIST CacheList; | |
EDKII_REDFISH_HTTP_PROTOCOL Protocol; | |
EDKII_REDFISH_CREDENTIAL_PROTOCOL *CredentialProtocol; | |
REDFISH_HTTP_RETRY_SETTING RetrySetting; | |
} REDFISH_HTTP_CACHE_PRIVATE; | |
#define REDFISH_HTTP_CACHE_PRIVATE_FROM_THIS(a) CR (a, REDFISH_HTTP_CACHE_PRIVATE, Protocol, REDFISH_HTTP_DRIVER_SIGNATURE) | |
/** | |
Search on given ListHeader for given URI string. | |
@param[in] ListHeader Target list to search. | |
@param[in] Uri Target URI to search. | |
@retval REDFISH_HTTP_CACHE_DATA Target cache data is found. | |
@retval NULL No cache data with given URI is found. | |
**/ | |
REDFISH_HTTP_CACHE_DATA * | |
FindHttpCacheData ( | |
IN LIST_ENTRY *ListHeader, | |
IN EFI_STRING Uri | |
); | |
/** | |
This function copy the data in SrcResponse to DstResponse. | |
@param[in] SrcResponse Source Response to copy. | |
@param[out] DstResponse Destination Response. | |
@retval EFI_SUCCESS Response is copied successfully. | |
@retval Others Error occurs. | |
**/ | |
EFI_STATUS | |
CopyRedfishResponse ( | |
IN REDFISH_RESPONSE *SrcResponse, | |
OUT REDFISH_RESPONSE *DstResponse | |
); | |
/** | |
Release all cache from list. | |
@param[in] CacheList The list to be released. | |
@retval EFI_SUCCESS All cache data are released. | |
@retval EFI_INVALID_PARAMETER CacheList is NULL. | |
**/ | |
EFI_STATUS | |
ReleaseCacheList ( | |
IN REDFISH_HTTP_CACHE_LIST *CacheList | |
); | |
/** | |
Add new cache by given URI and HTTP response to specify List. | |
@param[in] List Target cache list to add. | |
@param[in] Uri The URI string matching to this cache data. | |
@param[in] Response HTTP response. | |
@retval EFI_SUCCESS Cache data is added. | |
@retval Others Fail to add cache data. | |
**/ | |
EFI_STATUS | |
AddHttpCacheData ( | |
IN REDFISH_HTTP_CACHE_LIST *List, | |
IN EFI_STRING Uri, | |
IN REDFISH_RESPONSE *Response | |
); | |
/** | |
Delete a cache data by given cache instance. | |
@param[in] List Target cache list to be removed. | |
@param[in] Data Pointer to the instance to be deleted. | |
@retval EFI_SUCCESS Cache data is removed. | |
@retval Others Fail to remove cache data. | |
**/ | |
EFI_STATUS | |
DeleteHttpCacheData ( | |
IN REDFISH_HTTP_CACHE_LIST *List, | |
IN REDFISH_HTTP_CACHE_DATA *Data | |
); | |
/** | |
This function release Redfish Payload. | |
@param[in] Payload Pointer to payload instance. | |
@retval EFI_SUCCESS Payload is released. | |
@retval Others Error occurs. | |
**/ | |
EFI_STATUS | |
ReleaseRedfishPayload ( | |
IN REDFISH_PAYLOAD_PRIVATE *Payload | |
); | |
/** | |
This function creat new payload. Server and JsonObj are | |
copied to newly created payload. | |
@param[in] Service Pointer to Service instance. | |
@param[in] JsonObj Pointer to JSON object. | |
@retval REDFISH_PAYLOAD_PRIVATE Newly created payload. | |
@retval NULL Error occurs. | |
**/ | |
REDFISH_PAYLOAD_PRIVATE * | |
CreateRedfishPayload ( | |
IN REDFISH_SERVICE_PRIVATE *Service, | |
IN EDKII_JSON_VALUE JsonValue | |
); | |
/** | |
This function release Redfish Service. | |
@param[in] Service Pointer to service instance. | |
@retval EFI_SUCCESS Service is released. | |
@retval Others Error occurs. | |
**/ | |
EFI_STATUS | |
ReleaseRedfishService ( | |
IN REDFISH_SERVICE_PRIVATE *Service | |
); | |
/** | |
This function creat new service. Host and HostName are copied to | |
newly created service instance. | |
@param[in] Host Host string. | |
@param[in] HostName Hostname string. | |
@param[in] BasicAuth Basic Authorization string. | |
@param[in] SessionToken Session token string. | |
@param[in] RestEx Rest EX protocol instance. | |
@retval REDFISH_PAYLOAD_PRIVATE Newly created service. | |
@retval NULL Error occurs. | |
**/ | |
REDFISH_SERVICE_PRIVATE * | |
CreateRedfishService ( | |
IN CHAR8 *Host, | |
IN CHAR8 *HostName, | |
IN CHAR8 *BasicAuth OPTIONAL, | |
IN CHAR8 *SessionToken OPTIONAL, | |
IN EFI_REST_EX_PROTOCOL *RestEx | |
); | |
/** | |
This function update session token in Redfish Service. | |
@param[in] Service Pointer to service instance. | |
@param[in] Token Session token. | |
@retval EFI_SUCCESS Session token is updated. | |
@retval Others Error occurs. | |
**/ | |
EFI_STATUS | |
UpdateSessionToken ( | |
IN REDFISH_SERVICE_PRIVATE *Service, | |
IN CHAR8 *Token | |
); | |
#endif |