public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-devel] [edk2-redfish-client][PATCH 02/13] RedfishClientPkg: remove RedfishHttpCacheLib
@ 2024-02-29  8:53 Nickle Wang via groups.io
  2024-03-04  1:53 ` Chang, Abner via groups.io
  0 siblings, 1 reply; 2+ messages in thread
From: Nickle Wang via groups.io @ 2024-02-29  8:53 UTC (permalink / raw)
  To: devel; +Cc: Abner Chang, Igor Kulchytskyy

Remove RedfishHttpCacheLib and use EDK2 RedfishHttpLib.

Signed-off-by: Nickle Wang <nicklew@nvidia.com>
Cc: Abner Chang <abner.chang@amd.com>
Cc: Igor Kulchytskyy <igork@ami.com>
---
 RedfishClientPkg/RedfishClientPkg.dec         |   1 -
 RedfishClientPkg/RedfishClientLibs.dsc.inc    |   2 +-
 RedfishClientPkg/RedfishClientPkg.dsc         |   1 -
 .../RedfishHttpCacheLib.inf                   |  48 --
 .../Include/Library/RedfishHttpCacheLib.h     |  59 --
 .../RedfishHttpCacheLibInternal.h             |  63 --
 .../RedfishHttpCacheLib/RedfishHttpCacheLib.c | 774 ------------------
 7 files changed, 1 insertion(+), 947 deletions(-)
 delete mode 100644 RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.inf
 delete mode 100644 RedfishClientPkg/Include/Library/RedfishHttpCacheLib.h
 delete mode 100644 RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLibInternal.h
 delete mode 100644 RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.c

diff --git a/RedfishClientPkg/RedfishClientPkg.dec b/RedfishClientPkg/RedfishClientPkg.dec
index ce3b6d975..aa018d714 100644
--- a/RedfishClientPkg/RedfishClientPkg.dec
+++ b/RedfishClientPkg/RedfishClientPkg.dec
@@ -27,7 +27,6 @@
   EdkIIRedfishResourceConfigLib|Include/Library/EdkIIRedfishResourceConfigLib.h
   RedfishEventLib|Include/Library/RedfishEventLib.h
   RedfishVersionLib|Include/Library/RedfishVersionLib.h
-  RedfishHttpCacheLib|Include/Library/RedfishHttpCacheLib.h
 
 [LibraryClasses.Common.Private]
   ##  @libraryclass Redfish Helper Library
diff --git a/RedfishClientPkg/RedfishClientLibs.dsc.inc b/RedfishClientPkg/RedfishClientLibs.dsc.inc
index 9c7889d2b..8ec27baa3 100644
--- a/RedfishClientPkg/RedfishClientLibs.dsc.inc
+++ b/RedfishClientPkg/RedfishClientLibs.dsc.inc
@@ -42,4 +42,4 @@
   RedfishVersionLib|RedfishClientPkg/Library/RedfishVersionLib/RedfishVersionLib.inf
   RedfishAddendumLib|RedfishClientPkg/Library/RedfishAddendumLib/RedfishAddendumLib.inf
   RedfishDebugLib|RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.inf
-  RedfishHttpCacheLib|RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.inf
+  RedfishHttpLib|RedfishPkg/Library/RedfishHttpLib/RedfishHttpLib.inf
diff --git a/RedfishClientPkg/RedfishClientPkg.dsc b/RedfishClientPkg/RedfishClientPkg.dsc
index 0e3ef1ac9..f37bf93ac 100644
--- a/RedfishClientPkg/RedfishClientPkg.dsc
+++ b/RedfishClientPkg/RedfishClientPkg.dsc
@@ -61,6 +61,5 @@
   RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib.inf
   RedfishClientPkg/PrivateLibrary/RedfishLib/RedfishLib.inf
   RedfishClientPkg/Library/RedfishAddendumLib/RedfishAddendumLib.inf
-  RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.inf
 
   !include RedfishClientPkg/RedfishClient.dsc.inc
diff --git a/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.inf b/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.inf
deleted file mode 100644
index e76c8b65e..000000000
--- a/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.inf
+++ /dev/null
@@ -1,48 +0,0 @@
-## @file
-#  Redfish HTTP cache library helps Redfish application to get Redfish resource
-#  from Redfish service with cache mechanism enabled.
-#
-#  Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
-#
-#  SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-[Defines]
-  INF_VERSION                    = 0x00010006
-  BASE_NAME                      = RedfishHttpCacheLib
-  FILE_GUID                      = 21F8FEEC-023C-451D-824D-823058FD9481
-  MODULE_TYPE                    = DXE_DRIVER
-  VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = RedfishHttpCacheLib| DXE_DRIVER UEFI_DRIVER
-  CONSTRUCTOR                    = RedfishHttpCacheConstructor
-  DESTRUCTOR                     = RedfishHttpCacheDestructor
-
-#
-#  VALID_ARCHITECTURES           = IA32 X64 EBC
-#
-
-[Sources]
-  RedfishHttpCacheLibInternal.h
-  RedfishHttpCacheLib.c
-
-[Packages]
-  MdePkg/MdePkg.dec
-  MdeModulePkg/MdeModulePkg.dec
-  RedfishPkg/RedfishPkg.dec
-  RedfishClientPkg/RedfishClientPkg.dec
-
-[LibraryClasses]
-  BaseLib
-  DebugLib
-  UefiBootServicesTableLib
-  MemoryAllocationLib
-  RedfishLib
-  UefiLib
-  RedfishDebugLib
-  ReportStatusCodeLib
-  PrintLib
-
-[depex]
-  TRUE
-
diff --git a/RedfishClientPkg/Include/Library/RedfishHttpCacheLib.h b/RedfishClientPkg/Include/Library/RedfishHttpCacheLib.h
deleted file mode 100644
index 1277b9814..000000000
--- a/RedfishClientPkg/Include/Library/RedfishHttpCacheLib.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/** @file
-  This file defines the Redfish HTTP cache library interface.
-
-  Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
-
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef REDFISH_HTTP_CACHE_LIB_H_
-#define REDFISH_HTTP_CACHE_LIB_H_
-
-#include <Uefi.h>
-#include <Library/RedfishLib.h>
-
-/**
-  Get redfish resource from given resource URI with cache mechanism
-  supported. It's caller's responsibility to Response by calling
-  RedfishFreeResponse ().
-
-  @param[in]  Service       Redfish service instance to make query.
-  @param[in]  Uri           Target resource URI.
-  @param[out] Response      HTTP response from redfish service.
-  @param[in]  UseCache      If it is TRUE, this function will search for
-                            cache first. If it is FALSE, this function
-                            will query Redfish URI directly.
-
-  @retval     EFI_SUCCESS     Resrouce is returned successfully.
-  @retval     Others          Errors occur.
-
-**/
-EFI_STATUS
-RedfishHttpGetResource (
-  IN  REDFISH_SERVICE   Service,
-  IN  EFI_STRING        Uri,
-  OUT REDFISH_RESPONSE  *Response,
-  IN  BOOLEAN           UseCache
-  );
-
-/**
-  Reset the cached data specified by given URI. When response data
-  returned by RedfishHttpResetResource() is modified, the response
-  data can not be used by other caller. Application calls this
-  function to make this data to be stale data and
-  RedfishHttpResetResource() will get latest data from remote server
-  again.
-
-  @param[in]  Uri           Target resource URI.
-
-  @retval     EFI_SUCCESS     Resrouce is reset successfully.
-  @retval     Others          Errors occur.
-
-**/
-EFI_STATUS
-RedfishHttpResetResource (
-  IN  EFI_STRING  Uri
-  );
-
-#endif
diff --git a/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLibInternal.h b/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLibInternal.h
deleted file mode 100644
index 2549335d8..000000000
--- a/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLibInternal.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/** @file
-  This file defines the Redfish HTTP cache library internal headers.
-
-  Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
-
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef REDFISH_HTTP_CACHE_INTERNAL_LIB_H_
-#define REDFISH_HTTP_CACHE_INTERNAL_LIB_H_
-
-#include <Uefi.h>
-#include <RedfishBase.h>
-
-#include <Library/UefiLib.h>
-#include <Library/BaseLib.h>
-#include <Library/DebugLib.h>
-#include <Library/RedfishLib.h>
-#include <Library/UefiBootServicesTableLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/RedfishHttpCacheLib.h>
-#include <Library/RedfishDebugLib.h>
-#include <Library/ReportStatusCodeLib.h>
-#include <Library/PrintLib.h>
-
-#define REDFISH_HTTP_CACHE_LIST_SIZE   0x0F
-#define REDFISH_HTTP_GET_RETRY_MAX     0x0F
-#define REDFISH_HTTP_RETRY_WAIT        (2 * 1000000U)  ///< 1 second
-#define REDFISH_ERROR_MSG_MAX          128
-#define REDFISH_HTTP_ERROR_REPORT      "Redfish HTTP failure(0x%x): %a"
-#define REDFISH_HTTP_CACHE_DEBUG       DEBUG_VERBOSE
-#define REDFISH_HTTP_CACHE_DEBUG_DUMP  DEBUG_VERBOSE
-
-///
-/// Definition of REDFISH_HTTP_CACHE_DATA
-///
-typedef struct {
-  LIST_ENTRY          List;
-  EFI_STRING          Uri;
-  UINTN               HitCount;
-  REDFISH_RESPONSE    *Response;
-} REDFISH_HTTP_CACHE_DATA;
-
-#define REDFISH_HTTP_CACHE_FROM_LIST(a)  BASE_CR (a, REDFISH_HTTP_CACHE_DATA, List)
-
-///
-/// Definition of REDFISH_HTTP_CACHE_LIST
-///
-typedef struct {
-  LIST_ENTRY    Head;
-  UINTN         Count;
-  UINTN         Capacity;
-} REDFISH_HTTP_CACHE_LIST;
-
-///
-/// Definition of REDFISH_HTTP_CACHE_PRIVATE
-///
-typedef struct {
-  REDFISH_HTTP_CACHE_LIST    CacheList;
-} REDFISH_HTTP_CACHE_PRIVATE;
-
-#endif
diff --git a/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.c b/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.c
deleted file mode 100644
index be31706e6..000000000
--- a/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.c
+++ /dev/null
@@ -1,774 +0,0 @@
-/** @file
-  Redfish HTTP cache library helps Redfish application to get Redfish resource
-  from Redfish service with cache mechanism enabled.
-
-  Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
-
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include "RedfishHttpCacheLibInternal.h"
-
-REDFISH_HTTP_CACHE_PRIVATE  *mRedfishHttpCachePrivate = NULL;
-
-/**
-  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
-  )
-{
-  EDKII_JSON_VALUE  JsonValue;
-  REDFISH_SERVICE   Service;
-  UINTN             Index;
-
-  if ((SrcResponse == NULL) || (DstResponse == NULL)) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  if (SrcResponse == DstResponse) {
-    return EFI_SUCCESS;
-  }
-
-  //
-  // Status code
-  //
-  if (SrcResponse->StatusCode != NULL) {
-    DstResponse->StatusCode = AllocateCopyPool (sizeof (EFI_HTTP_STATUS_CODE), SrcResponse->StatusCode);
-    if (DstResponse->StatusCode == NULL) {
-      goto ON_ERROR;
-    }
-  }
-
-  //
-  // Header
-  //
-  if ((SrcResponse->HeaderCount > 0) && (SrcResponse->Headers != NULL)) {
-    DstResponse->HeaderCount = 0;
-    DstResponse->Headers     = AllocateZeroPool (sizeof (EFI_HTTP_HEADER) * SrcResponse->HeaderCount);
-    if (DstResponse->Headers == NULL) {
-      goto ON_ERROR;
-    }
-
-    for (Index = 0; Index < SrcResponse->HeaderCount; Index++) {
-      DstResponse->Headers[Index].FieldName = AllocateCopyPool (AsciiStrSize (SrcResponse->Headers[Index].FieldName), SrcResponse->Headers[Index].FieldName);
-      if (DstResponse->Headers[Index].FieldName == NULL) {
-        goto ON_ERROR;
-      }
-
-      DstResponse->Headers[Index].FieldValue = AllocateCopyPool (AsciiStrSize (SrcResponse->Headers[Index].FieldValue), SrcResponse->Headers[Index].FieldValue);
-      if (DstResponse->Headers[Index].FieldValue == NULL) {
-        goto ON_ERROR;
-      }
-
-      DstResponse->HeaderCount += 1;
-    }
-  }
-
-  //
-  // Payload
-  //
-  if (SrcResponse->Payload != NULL) {
-    Service              = RedfishServiceInPayload (SrcResponse->Payload);
-    JsonValue            = RedfishJsonInPayload (SrcResponse->Payload);
-    DstResponse->Payload = RedfishCreatePayload (JsonValue, Service);
-    if (DstResponse->Payload  == NULL) {
-      goto ON_ERROR;
-    }
-  }
-
-  return EFI_SUCCESS;
-
-ON_ERROR:
-
-  RedfishFreeResponse (
-    DstResponse->StatusCode,
-    DstResponse->HeaderCount,
-    DstResponse->Headers,
-    DstResponse->Payload
-    );
-
-  return EFI_OUT_OF_RESOURCES;
-}
-
-/**
-  This function clone input response and return to caller
-
-  @param[in]  Response      Response to clone.
-
-  @retval     REDFISH_RESPONSE *  Response is cloned.
-  @retval     NULL                Errors occur.
-
-**/
-REDFISH_RESPONSE *
-CloneRedfishResponse (
-  IN REDFISH_RESPONSE  *Response
-  )
-{
-  EFI_STATUS        Status;
-  REDFISH_RESPONSE  *NewResponse;
-
-  if (Response == NULL) {
-    return NULL;
-  }
-
-  NewResponse = AllocateZeroPool (sizeof (REDFISH_RESPONSE));
-  if (NewResponse == NULL) {
-    return NULL;
-  }
-
-  Status = CopyRedfishResponse (Response, NewResponse);
-  if (EFI_ERROR (Status)) {
-    FreePool (NewResponse);
-    return NULL;
-  }
-
-  return NewResponse;
-}
-
-/**
-
-  Convert Unicode string to ASCII string. It's call responsibility to release returned buffer.
-
-  @param[in]  UnicodeStr      Unicode string to convert.
-
-  @retval     CHAR8 *         ASCII string returned.
-  @retval     NULL            Errors occur.
-
-**/
-CHAR8 *
-StringUnicodeToAscii (
-  IN EFI_STRING  UnicodeStr
-  )
-{
-  CHAR8       *AsciiStr;
-  UINTN       AsciiStrSize;
-  EFI_STATUS  Status;
-
-  if (IS_EMPTY_STRING (UnicodeStr)) {
-    return NULL;
-  }
-
-  AsciiStrSize = StrLen (UnicodeStr) + 1;
-  AsciiStr     = AllocatePool (AsciiStrSize);
-  if (AsciiStr == NULL) {
-    return NULL;
-  }
-
-  Status = UnicodeStrToAsciiStrS (UnicodeStr, AsciiStr, AsciiStrSize);
-  if (EFI_ERROR (Status)) {
-    DEBUG ((DEBUG_ERROR, "UnicodeStrToAsciiStrS failed: %r\n", Status));
-    FreePool (AsciiStr);
-    return NULL;
-  }
-
-  return AsciiStr;
-}
-
-/**
-  Release REDFISH_HTTP_CACHE_DATA resource
-
-  @param[in]    Data    Pointer to REDFISH_HTTP_CACHE_DATA instance
-
-  @retval EFI_SUCCESS             REDFISH_HTTP_CACHE_DATA is released successfully.
-  @retval EFI_INVALID_PARAMETER   Data is NULL
-
-**/
-EFI_STATUS
-ReleaseHttpCacheData (
-  IN REDFISH_HTTP_CACHE_DATA  *Data
-  )
-{
-  if (Data == NULL) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  if (Data->Uri != NULL) {
-    FreePool (Data->Uri);
-  }
-
-  if (Data->Response != NULL) {
-    if (Data->Response->Payload != NULL) {
-      RedfishFreeResponse (
-        Data->Response->StatusCode,
-        Data->Response->HeaderCount,
-        Data->Response->Headers,
-        Data->Response->Payload
-        );
-      FreePool (Data->Response);
-    }
-  }
-
-  FreePool (Data);
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Create new cache data.
-
-  @param[in]    Uri       The URI string matching to this cache data.
-  @param[in]    Response  HTTP response.
-
-  @retval REDFISH_HTTP_CACHE_DATA *   Pointer to newly created cache data.
-  @retval NULL                        No memory available.
-
-**/
-REDFISH_HTTP_CACHE_DATA *
-NewHttpCacheData (
-  IN  EFI_STRING        Uri,
-  IN  REDFISH_RESPONSE  *Response
-  )
-{
-  REDFISH_HTTP_CACHE_DATA  *NewData;
-  UINTN                    Size;
-
-  if (IS_EMPTY_STRING (Uri) || (Response == NULL)) {
-    return NULL;
-  }
-
-  NewData = AllocateZeroPool (sizeof (REDFISH_HTTP_CACHE_DATA));
-  if (NewData == NULL) {
-    return NULL;
-  }
-
-  Size         = StrSize (Uri);
-  NewData->Uri = AllocateCopyPool (Size, Uri);
-  if (NewData->Uri == NULL) {
-    goto ON_ERROR;
-  }
-
-  NewData->Response = Response;
-  NewData->HitCount = 1;
-
-  return NewData;
-
-ON_ERROR:
-
-  if (NewData != NULL) {
-    ReleaseHttpCacheData (NewData);
-  }
-
-  return NULL;
-}
-
-/**
-  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
-  )
-{
-  LIST_ENTRY               *List;
-  REDFISH_HTTP_CACHE_DATA  *Data;
-
-  if (IS_EMPTY_STRING (Uri)) {
-    return NULL;
-  }
-
-  if (IsListEmpty (ListHeader)) {
-    return NULL;
-  }
-
-  Data = NULL;
-  List = GetFirstNode (ListHeader);
-  while (!IsNull (ListHeader, List)) {
-    Data = REDFISH_HTTP_CACHE_FROM_LIST (List);
-
-    if (StrCmp (Data->Uri, Uri) == 0) {
-      return Data;
-    }
-
-    List = GetNextNode (ListHeader, List);
-  }
-
-  return NULL;
-}
-
-/**
-  Search on given ListHeader and return cache data with minimum hit count.
-
-  @param[in]    ListHeader  Target list to search.
-
-  @retval REDFISH_HTTP_CACHE_DATA   Target cache data is returned.
-  @retval NULL                      No cache data is found.
-
-**/
-REDFISH_HTTP_CACHE_DATA *
-FindUnusedHttpCacheData (
-  IN  LIST_ENTRY  *ListHeader
-  )
-{
-  LIST_ENTRY               *List;
-  REDFISH_HTTP_CACHE_DATA  *Data;
-  REDFISH_HTTP_CACHE_DATA  *UnusedData;
-  UINTN                    HitCount;
-
-  if (IsListEmpty (ListHeader)) {
-    return NULL;
-  }
-
-  Data       = NULL;
-  UnusedData = NULL;
-  HitCount   = 0;
-
-  List       = GetFirstNode (ListHeader);
-  Data       = REDFISH_HTTP_CACHE_FROM_LIST (List);
-  UnusedData = Data;
-  HitCount   = Data->HitCount;
-  List       = GetNextNode (ListHeader, List);
-
-  while (!IsNull (ListHeader, List)) {
-    Data = REDFISH_HTTP_CACHE_FROM_LIST (List);
-
-    if (Data->HitCount < HitCount) {
-      HitCount   = Data->HitCount;
-      UnusedData = Data;
-    }
-
-    List = GetNextNode (ListHeader, List);
-  }
-
-  return UnusedData;
-}
-
-/**
-  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
-  )
-{
-  if ((List == NULL) || (Data == NULL)) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  DEBUG ((REDFISH_HTTP_CACHE_DEBUG, "%a: delete: %s\n", __func__, Data->Uri));
-
-  RemoveEntryList (&Data->List);
-  --List->Count;
-
-  return ReleaseHttpCacheData (Data);
-}
-
-/**
-  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
-  )
-{
-  REDFISH_HTTP_CACHE_DATA  *NewData;
-  REDFISH_HTTP_CACHE_DATA  *OldData;
-  REDFISH_HTTP_CACHE_DATA  *UnusedData;
-  REDFISH_RESPONSE         *NewResponse;
-
-  if ((List == NULL) || IS_EMPTY_STRING (Uri) || (Response == NULL)) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  //
-  // If same cache data exist, replace it with latest one.
-  //
-  OldData = FindHttpCacheData (&List->Head, Uri);
-  if (OldData != NULL) {
-    DeleteHttpCacheData (List, OldData);
-  }
-
-  //
-  // Check capacity
-  //
-  if (List->Count >= List->Capacity) {
-    DEBUG ((REDFISH_HTTP_CACHE_DEBUG, "%a: list is full and retire unused cache\n", __func__));
-    UnusedData = FindUnusedHttpCacheData (&List->Head);
-    if (UnusedData == NULL) {
-      return EFI_OUT_OF_RESOURCES;
-    }
-
-    DeleteHttpCacheData (List, UnusedData);
-  }
-
-  //
-  // Clone a local copy
-  //
-  NewResponse = CloneRedfishResponse (Response);
-  if (NewResponse == NULL) {
-    return EFI_OUT_OF_RESOURCES;
-  }
-
-  NewData = NewHttpCacheData (Uri, NewResponse);
-  if (NewData == NULL) {
-    return EFI_OUT_OF_RESOURCES;
-  }
-
-  InsertTailList (&List->Head, &NewData->List);
-  ++List->Count;
-
-  DEBUG ((REDFISH_HTTP_CACHE_DEBUG, "%a: cache(%d/%d) %s\n", __func__, List->Count, List->Capacity, NewData->Uri));
-
-  return EFI_SUCCESS;
-}
-
-/**
-  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
-  )
-{
-  LIST_ENTRY               *List;
-  LIST_ENTRY               *Next;
-  REDFISH_HTTP_CACHE_DATA  *Data;
-
-  if (CacheList == NULL) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  if (IsListEmpty (&CacheList->Head)) {
-    return EFI_SUCCESS;
-  }
-
-  Data = NULL;
-  Next = NULL;
-  List = GetFirstNode (&CacheList->Head);
-  while (!IsNull (&CacheList->Head, List)) {
-    Data = REDFISH_HTTP_CACHE_FROM_LIST (List);
-    Next = GetNextNode (&CacheList->Head, List);
-
-    DeleteHttpCacheData (CacheList, Data);
-
-    List = Next;
-  }
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Debug output the cache list.
-
-  @param[in]    Msg            Debug message string.
-  @param[in]    ErrorLevel     Output error level.
-  @param[in]    CacheList      Target list to dump.
-
-  @retval EFI_SUCCESS             Debug dump finished.
-  @retval EFI_INVALID_PARAMETER   HttpCacheList is NULL.
-
-**/
-EFI_STATUS
-DumpHttpCacheList (
-  IN  CONST CHAR8              *Msg,
-  IN  UINTN                    ErrorLevel,
-  IN  REDFISH_HTTP_CACHE_LIST  *CacheList
-  )
-{
-  LIST_ENTRY               *List;
-  REDFISH_HTTP_CACHE_DATA  *Data;
-  UINTN                    Index;
-
-  if (CacheList == NULL) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  if (!IS_EMPTY_STRING (Msg)) {
-    DEBUG ((ErrorLevel, "%a\n", Msg));
-  }
-
-  if (IsListEmpty (&CacheList->Head)) {
-    DEBUG ((ErrorLevel, "list is empty\n"));
-    return EFI_NOT_FOUND;
-  }
-
-  DEBUG ((ErrorLevel, "list count: %d capacity: %d\n", CacheList->Count, CacheList->Capacity));
-  Data  = NULL;
-  Index = 0;
-  List  = GetFirstNode (&CacheList->Head);
-  while (!IsNull (&CacheList->Head, List)) {
-    Data = REDFISH_HTTP_CACHE_FROM_LIST (List);
-
-    DEBUG ((ErrorLevel, "%d) Uri: %s Hit: %d\n", ++Index, Data->Uri, Data->HitCount));
-
-    List = GetNextNode (&CacheList->Head, List);
-  }
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Get redfish resource from given resource URI with cache mechanism
-  supported. It's caller's responsibility to Response by calling
-  RedfishFreeResponse ().
-
-  @param[in]  Service       Redfish service instance to make query.
-  @param[in]  Uri           Target resource URI.
-  @param[out] Response      HTTP response from redfish service.
-  @param[in]  UseCache      If it is TRUE, this function will search for
-                            cache first. If it is FALSE, this function
-                            will query Redfish URI directly.
-
-  @retval     EFI_SUCCESS     Resrouce is returned successfully.
-  @retval     Others          Errors occur.
-
-**/
-EFI_STATUS
-RedfishHttpGetResource (
-  IN  REDFISH_SERVICE   Service,
-  IN  EFI_STRING        Uri,
-  OUT REDFISH_RESPONSE  *Response,
-  IN  BOOLEAN           UseCache
-  )
-{
-  EFI_STATUS               Status;
-  CHAR8                    *AsciiUri;
-  REDFISH_HTTP_CACHE_DATA  *CacheData;
-  UINTN                    RetryCount;
-
-  if ((Service == NULL) || (Response == NULL) || IS_EMPTY_STRING (Uri)) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  if (mRedfishHttpCachePrivate == NULL) {
-    return EFI_NOT_READY;
-  }
-
-  AsciiUri   = NULL;
-  CacheData  = NULL;
-  RetryCount = 0;
-
-  //
-  // Search for cache list.
-  //
-  if (UseCache) {
-    CacheData = FindHttpCacheData (&mRedfishHttpCachePrivate->CacheList.Head, Uri);
-    if (CacheData != NULL) {
-      DEBUG ((REDFISH_HTTP_CACHE_DEBUG, "%a: cache hit! %s\n", __func__, Uri));
-
-      //
-      // Copy cached response to caller's buffer.
-      //
-      Status               = CopyRedfishResponse (CacheData->Response, Response);
-      CacheData->HitCount += 1;
-      return Status;
-    }
-  }
-
-  AsciiUri = StringUnicodeToAscii (Uri);
-  if (AsciiUri == NULL) {
-    return EFI_OUT_OF_RESOURCES;
-  }
-
-  //
-  // Get resource from redfish service.
-  //
-  do {
-    RetryCount += 1;
-    Status      = RedfishGetByUri (
-                    Service,
-                    AsciiUri,
-                    Response
-                    );
-    if (!EFI_ERROR (Status) || (RetryCount >= REDFISH_HTTP_GET_RETRY_MAX)) {
-      break;
-    }
-
-    //
-    // Retry when Redfish service is not ready.
-    //
-    if ((Response->StatusCode != NULL)) {
-      DEBUG_CODE (
-        DumpRedfishResponse (NULL, DEBUG_ERROR, Response);
-        );
-
-      if (*Response->StatusCode != HTTP_STATUS_500_INTERNAL_SERVER_ERROR) {
-        break;
-      }
-
-      FreePool (Response->StatusCode);
-      Response->StatusCode = NULL;
-    }
-
-    DEBUG ((DEBUG_WARN, "%a: RedfishGetByUri failed, retry (%d/%d)\n", __func__, RetryCount, REDFISH_HTTP_GET_RETRY_MAX));
-    gBS->Stall (REDFISH_HTTP_RETRY_WAIT);
-  } while (TRUE);
-
-  if (EFI_ERROR (Status)) {
-    DEBUG ((DEBUG_ERROR, "%a: get %a failed (%d/%d): %r\n", __func__, AsciiUri, RetryCount, REDFISH_HTTP_GET_RETRY_MAX, Status));
-    if (Response->Payload != NULL) {
-      RedfishFreeResponse (
-        NULL,
-        0,
-        NULL,
-        Response->Payload
-        );
-      Response->Payload = NULL;
-    }
-
-    goto ON_RELEASE;
-  }
-
-  //
-  // Keep response in cache list
-  //
-  Status = AddHttpCacheData (&mRedfishHttpCachePrivate->CacheList, Uri, Response);
-  if (EFI_ERROR (Status)) {
-    DEBUG ((DEBUG_ERROR, "%a: failed to cache %s: %r\n", __func__, Uri, Status));
-    goto ON_RELEASE;
-  }
-
-  DEBUG_CODE (
-    DumpHttpCacheList (__func__, REDFISH_HTTP_CACHE_DEBUG_DUMP, &mRedfishHttpCachePrivate->CacheList);
-    );
-
-ON_RELEASE:
-
-  if (AsciiUri != NULL) {
-    FreePool (AsciiUri);
-  }
-
-  return Status;
-}
-
-/**
-  Reset the cached data specified by given URI. When response data
-  returned by RedfishHttpResetResource() is modified, the response
-  data can not be used by other caller. Application calls this
-  function to make this data to be stale data and
-  RedfishHttpResetResource() will get latest data from remote server
-  again.
-
-  @param[in]  Uri           Target resource URI.
-
-  @retval     EFI_SUCCESS     Resrouce is reset successfully.
-  @retval     Others          Errors occur.
-
-**/
-EFI_STATUS
-RedfishHttpResetResource (
-  IN  EFI_STRING  Uri
-  )
-{
-  REDFISH_HTTP_CACHE_DATA  *CacheData;
-
-  if (IS_EMPTY_STRING (Uri)) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  if (mRedfishHttpCachePrivate == NULL) {
-    return EFI_NOT_READY;
-  }
-
-  CacheData = FindHttpCacheData (&mRedfishHttpCachePrivate->CacheList.Head, Uri);
-  if (CacheData == NULL) {
-    return EFI_NOT_FOUND;
-  }
-
-  DeleteHttpCacheData (&mRedfishHttpCachePrivate->CacheList, CacheData);
-
-  return EFI_SUCCESS;
-}
-
-/**
-
-  Initial HTTP cache library instance.
-
-  @param[in] ImageHandle     The image handle.
-  @param[in] SystemTable     The system table.
-
-  @retval  EFI_SUCCESS  Initial library successfully.
-  @retval  Other        Return error status.
-
-**/
-EFI_STATUS
-EFIAPI
-RedfishHttpCacheConstructor (
-  IN EFI_HANDLE        ImageHandle,
-  IN EFI_SYSTEM_TABLE  *SystemTable
-  )
-{
-  mRedfishHttpCachePrivate = AllocateZeroPool (sizeof (REDFISH_HTTP_CACHE_PRIVATE));
-  if (mRedfishHttpCachePrivate == NULL) {
-    return EFI_OUT_OF_RESOURCES;
-  }
-
-  //
-  // Initial cache list
-  //
-  mRedfishHttpCachePrivate->CacheList.Capacity = REDFISH_HTTP_CACHE_LIST_SIZE;
-  mRedfishHttpCachePrivate->CacheList.Count    = 0x00;
-  InitializeListHead (&mRedfishHttpCachePrivate->CacheList.Head);
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Release allocated resource.
-
-  @param[in] ImageHandle       Handle that identifies the image to be unloaded.
-  @param[in] SystemTable      The system table.
-
-  @retval EFI_SUCCESS      The image has been unloaded.
-
-**/
-EFI_STATUS
-EFIAPI
-RedfishHttpCacheDestructor (
-  IN EFI_HANDLE        ImageHandle,
-  IN EFI_SYSTEM_TABLE  *SystemTable
-  )
-{
-  if (mRedfishHttpCachePrivate != NULL) {
-    if (!IsListEmpty (&mRedfishHttpCachePrivate->CacheList.Head)) {
-      ReleaseCacheList (&mRedfishHttpCachePrivate->CacheList);
-    }
-
-    FreePool (mRedfishHttpCachePrivate);
-    mRedfishHttpCachePrivate = NULL;
-  }
-
-  return EFI_SUCCESS;
-}
-- 
2.34.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116142): https://edk2.groups.io/g/devel/message/116142
Mute This Topic: https://groups.io/mt/104640216/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [edk2-devel] [edk2-redfish-client][PATCH 02/13] RedfishClientPkg: remove RedfishHttpCacheLib
  2024-02-29  8:53 [edk2-devel] [edk2-redfish-client][PATCH 02/13] RedfishClientPkg: remove RedfishHttpCacheLib Nickle Wang via groups.io
@ 2024-03-04  1:53 ` Chang, Abner via groups.io
  0 siblings, 0 replies; 2+ messages in thread
From: Chang, Abner via groups.io @ 2024-03-04  1:53 UTC (permalink / raw)
  To: Nickle Wang, devel@edk2.groups.io; +Cc: Igor Kulchytskyy

[AMD Official Use Only - General]

Reviewed-by: Abner Chang <abner.chang@amd.com>

> -----Original Message-----
> From: Nickle Wang <nicklew@nvidia.com>
> Sent: Thursday, February 29, 2024 4:53 PM
> To: devel@edk2.groups.io
> Cc: Chang, Abner <Abner.Chang@amd.com>; Igor Kulchytskyy
> <igork@ami.com>
> Subject: [edk2-redfish-client][PATCH 02/13] RedfishClientPkg: remove
> RedfishHttpCacheLib
>
> Caution: This message originated from an External Source. Use proper caution
> when opening attachments, clicking links, or responding.
>
>
> Remove RedfishHttpCacheLib and use EDK2 RedfishHttpLib.
>
> Signed-off-by: Nickle Wang <nicklew@nvidia.com>
> Cc: Abner Chang <abner.chang@amd.com>
> Cc: Igor Kulchytskyy <igork@ami.com>
> ---
>  RedfishClientPkg/RedfishClientPkg.dec         |   1 -
>  RedfishClientPkg/RedfishClientLibs.dsc.inc    |   2 +-
>  RedfishClientPkg/RedfishClientPkg.dsc         |   1 -
>  .../RedfishHttpCacheLib.inf                   |  48 --
>  .../Include/Library/RedfishHttpCacheLib.h     |  59 --
>  .../RedfishHttpCacheLibInternal.h             |  63 --
>  .../RedfishHttpCacheLib/RedfishHttpCacheLib.c | 774 ------------------
>  7 files changed, 1 insertion(+), 947 deletions(-)
>  delete mode 100644
> RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.inf
>  delete mode 100644
> RedfishClientPkg/Include/Library/RedfishHttpCacheLib.h
>  delete mode 100644
> RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLibInternal.h
>  delete mode 100644
> RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.c
>
> diff --git a/RedfishClientPkg/RedfishClientPkg.dec
> b/RedfishClientPkg/RedfishClientPkg.dec
> index ce3b6d975..aa018d714 100644
> --- a/RedfishClientPkg/RedfishClientPkg.dec
> +++ b/RedfishClientPkg/RedfishClientPkg.dec
> @@ -27,7 +27,6 @@
>
> EdkIIRedfishResourceConfigLib|Include/Library/EdkIIRedfishResourceConfigLi
> b.h
>    RedfishEventLib|Include/Library/RedfishEventLib.h
>    RedfishVersionLib|Include/Library/RedfishVersionLib.h
> -  RedfishHttpCacheLib|Include/Library/RedfishHttpCacheLib.h
>
>  [LibraryClasses.Common.Private]
>    ##  @libraryclass Redfish Helper Library
> diff --git a/RedfishClientPkg/RedfishClientLibs.dsc.inc
> b/RedfishClientPkg/RedfishClientLibs.dsc.inc
> index 9c7889d2b..8ec27baa3 100644
> --- a/RedfishClientPkg/RedfishClientLibs.dsc.inc
> +++ b/RedfishClientPkg/RedfishClientLibs.dsc.inc
> @@ -42,4 +42,4 @@
>
> RedfishVersionLib|RedfishClientPkg/Library/RedfishVersionLib/RedfishVersio
> nLib.inf
>
> RedfishAddendumLib|RedfishClientPkg/Library/RedfishAddendumLib/Redfis
> hAddendumLib.inf
>    RedfishDebugLib|RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.inf
> -
> RedfishHttpCacheLib|RedfishClientPkg/Library/RedfishHttpCacheLib/Redfish
> HttpCacheLib.inf
> +  RedfishHttpLib|RedfishPkg/Library/RedfishHttpLib/RedfishHttpLib.inf
> diff --git a/RedfishClientPkg/RedfishClientPkg.dsc
> b/RedfishClientPkg/RedfishClientPkg.dsc
> index 0e3ef1ac9..f37bf93ac 100644
> --- a/RedfishClientPkg/RedfishClientPkg.dsc
> +++ b/RedfishClientPkg/RedfishClientPkg.dsc
> @@ -61,6 +61,5 @@
>
> RedfishClientPkg/Library/RedfishFeatureUtilityLib/RedfishFeatureUtilityLib.inf
>    RedfishClientPkg/PrivateLibrary/RedfishLib/RedfishLib.inf
>    RedfishClientPkg/Library/RedfishAddendumLib/RedfishAddendumLib.inf
> -  RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.inf
>
>    !include RedfishClientPkg/RedfishClient.dsc.inc
> diff --git
> a/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.inf
> b/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.inf
> deleted file mode 100644
> index e76c8b65e..000000000
> --- a/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.inf
> +++ /dev/null
> @@ -1,48 +0,0 @@
> -## @file
> -#  Redfish HTTP cache library helps Redfish application to get Redfish resource
> -#  from Redfish service with cache mechanism enabled.
> -#
> -#  Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights
> reserved.
> -#
> -#  SPDX-License-Identifier: BSD-2-Clause-Patent
> -#
> -##
> -
> -[Defines]
> -  INF_VERSION                    = 0x00010006
> -  BASE_NAME                      = RedfishHttpCacheLib
> -  FILE_GUID                      = 21F8FEEC-023C-451D-824D-823058FD9481
> -  MODULE_TYPE                    = DXE_DRIVER
> -  VERSION_STRING                 = 1.0
> -  LIBRARY_CLASS                  = RedfishHttpCacheLib| DXE_DRIVER UEFI_DRIVER
> -  CONSTRUCTOR                    = RedfishHttpCacheConstructor
> -  DESTRUCTOR                     = RedfishHttpCacheDestructor
> -
> -#
> -#  VALID_ARCHITECTURES           = IA32 X64 EBC
> -#
> -
> -[Sources]
> -  RedfishHttpCacheLibInternal.h
> -  RedfishHttpCacheLib.c
> -
> -[Packages]
> -  MdePkg/MdePkg.dec
> -  MdeModulePkg/MdeModulePkg.dec
> -  RedfishPkg/RedfishPkg.dec
> -  RedfishClientPkg/RedfishClientPkg.dec
> -
> -[LibraryClasses]
> -  BaseLib
> -  DebugLib
> -  UefiBootServicesTableLib
> -  MemoryAllocationLib
> -  RedfishLib
> -  UefiLib
> -  RedfishDebugLib
> -  ReportStatusCodeLib
> -  PrintLib
> -
> -[depex]
> -  TRUE
> -
> diff --git a/RedfishClientPkg/Include/Library/RedfishHttpCacheLib.h
> b/RedfishClientPkg/Include/Library/RedfishHttpCacheLib.h
> deleted file mode 100644
> index 1277b9814..000000000
> --- a/RedfishClientPkg/Include/Library/RedfishHttpCacheLib.h
> +++ /dev/null
> @@ -1,59 +0,0 @@
> -/** @file
> -  This file defines the Redfish HTTP cache library interface.
> -
> -  Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights
> reserved.
> -
> -  SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> -**/
> -
> -#ifndef REDFISH_HTTP_CACHE_LIB_H_
> -#define REDFISH_HTTP_CACHE_LIB_H_
> -
> -#include <Uefi.h>
> -#include <Library/RedfishLib.h>
> -
> -/**
> -  Get redfish resource from given resource URI with cache mechanism
> -  supported. It's caller's responsibility to Response by calling
> -  RedfishFreeResponse ().
> -
> -  @param[in]  Service       Redfish service instance to make query.
> -  @param[in]  Uri           Target resource URI.
> -  @param[out] Response      HTTP response from redfish service.
> -  @param[in]  UseCache      If it is TRUE, this function will search for
> -                            cache first. If it is FALSE, this function
> -                            will query Redfish URI directly.
> -
> -  @retval     EFI_SUCCESS     Resrouce is returned successfully.
> -  @retval     Others          Errors occur.
> -
> -**/
> -EFI_STATUS
> -RedfishHttpGetResource (
> -  IN  REDFISH_SERVICE   Service,
> -  IN  EFI_STRING        Uri,
> -  OUT REDFISH_RESPONSE  *Response,
> -  IN  BOOLEAN           UseCache
> -  );
> -
> -/**
> -  Reset the cached data specified by given URI. When response data
> -  returned by RedfishHttpResetResource() is modified, the response
> -  data can not be used by other caller. Application calls this
> -  function to make this data to be stale data and
> -  RedfishHttpResetResource() will get latest data from remote server
> -  again.
> -
> -  @param[in]  Uri           Target resource URI.
> -
> -  @retval     EFI_SUCCESS     Resrouce is reset successfully.
> -  @retval     Others          Errors occur.
> -
> -**/
> -EFI_STATUS
> -RedfishHttpResetResource (
> -  IN  EFI_STRING  Uri
> -  );
> -
> -#endif
> diff --git
> a/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLibInterna
> l.h
> b/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLibInterna
> l.h
> deleted file mode 100644
> index 2549335d8..000000000
> ---
> a/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLibInterna
> l.h
> +++ /dev/null
> @@ -1,63 +0,0 @@
> -/** @file
> -  This file defines the Redfish HTTP cache library internal headers.
> -
> -  Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
> -
> -  SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> -**/
> -
> -#ifndef REDFISH_HTTP_CACHE_INTERNAL_LIB_H_
> -#define REDFISH_HTTP_CACHE_INTERNAL_LIB_H_
> -
> -#include <Uefi.h>
> -#include <RedfishBase.h>
> -
> -#include <Library/UefiLib.h>
> -#include <Library/BaseLib.h>
> -#include <Library/DebugLib.h>
> -#include <Library/RedfishLib.h>
> -#include <Library/UefiBootServicesTableLib.h>
> -#include <Library/MemoryAllocationLib.h>
> -#include <Library/RedfishHttpCacheLib.h>
> -#include <Library/RedfishDebugLib.h>
> -#include <Library/ReportStatusCodeLib.h>
> -#include <Library/PrintLib.h>
> -
> -#define REDFISH_HTTP_CACHE_LIST_SIZE   0x0F
> -#define REDFISH_HTTP_GET_RETRY_MAX     0x0F
> -#define REDFISH_HTTP_RETRY_WAIT        (2 * 1000000U)  ///< 1 second
> -#define REDFISH_ERROR_MSG_MAX          128
> -#define REDFISH_HTTP_ERROR_REPORT      "Redfish HTTP failure(0x%x): %a"
> -#define REDFISH_HTTP_CACHE_DEBUG       DEBUG_VERBOSE
> -#define REDFISH_HTTP_CACHE_DEBUG_DUMP  DEBUG_VERBOSE
> -
> -///
> -/// Definition of REDFISH_HTTP_CACHE_DATA
> -///
> -typedef struct {
> -  LIST_ENTRY          List;
> -  EFI_STRING          Uri;
> -  UINTN               HitCount;
> -  REDFISH_RESPONSE    *Response;
> -} REDFISH_HTTP_CACHE_DATA;
> -
> -#define REDFISH_HTTP_CACHE_FROM_LIST(a)  BASE_CR (a,
> REDFISH_HTTP_CACHE_DATA, List)
> -
> -///
> -/// Definition of REDFISH_HTTP_CACHE_LIST
> -///
> -typedef struct {
> -  LIST_ENTRY    Head;
> -  UINTN         Count;
> -  UINTN         Capacity;
> -} REDFISH_HTTP_CACHE_LIST;
> -
> -///
> -/// Definition of REDFISH_HTTP_CACHE_PRIVATE
> -///
> -typedef struct {
> -  REDFISH_HTTP_CACHE_LIST    CacheList;
> -} REDFISH_HTTP_CACHE_PRIVATE;
> -
> -#endif
> diff --git
> a/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.c
> b/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.c
> deleted file mode 100644
> index be31706e6..000000000
> --- a/RedfishClientPkg/Library/RedfishHttpCacheLib/RedfishHttpCacheLib.c
> +++ /dev/null
> @@ -1,774 +0,0 @@
> -/** @file
> -  Redfish HTTP cache library helps Redfish application to get Redfish resource
> -  from Redfish service with cache mechanism enabled.
> -
> -  Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights
> reserved.
> -
> -  SPDX-License-Identifier: BSD-2-Clause-Patent
> -
> -**/
> -
> -#include "RedfishHttpCacheLibInternal.h"
> -
> -REDFISH_HTTP_CACHE_PRIVATE  *mRedfishHttpCachePrivate = NULL;
> -
> -/**
> -  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
> -  )
> -{
> -  EDKII_JSON_VALUE  JsonValue;
> -  REDFISH_SERVICE   Service;
> -  UINTN             Index;
> -
> -  if ((SrcResponse == NULL) || (DstResponse == NULL)) {
> -    return EFI_INVALID_PARAMETER;
> -  }
> -
> -  if (SrcResponse == DstResponse) {
> -    return EFI_SUCCESS;
> -  }
> -
> -  //
> -  // Status code
> -  //
> -  if (SrcResponse->StatusCode != NULL) {
> -    DstResponse->StatusCode = AllocateCopyPool (sizeof
> (EFI_HTTP_STATUS_CODE), SrcResponse->StatusCode);
> -    if (DstResponse->StatusCode == NULL) {
> -      goto ON_ERROR;
> -    }
> -  }
> -
> -  //
> -  // Header
> -  //
> -  if ((SrcResponse->HeaderCount > 0) && (SrcResponse->Headers != NULL)) {
> -    DstResponse->HeaderCount = 0;
> -    DstResponse->Headers     = AllocateZeroPool (sizeof (EFI_HTTP_HEADER) *
> SrcResponse->HeaderCount);
> -    if (DstResponse->Headers == NULL) {
> -      goto ON_ERROR;
> -    }
> -
> -    for (Index = 0; Index < SrcResponse->HeaderCount; Index++) {
> -      DstResponse->Headers[Index].FieldName = AllocateCopyPool (AsciiStrSize
> (SrcResponse->Headers[Index].FieldName), SrcResponse-
> >Headers[Index].FieldName);
> -      if (DstResponse->Headers[Index].FieldName == NULL) {
> -        goto ON_ERROR;
> -      }
> -
> -      DstResponse->Headers[Index].FieldValue = AllocateCopyPool (AsciiStrSize
> (SrcResponse->Headers[Index].FieldValue), SrcResponse-
> >Headers[Index].FieldValue);
> -      if (DstResponse->Headers[Index].FieldValue == NULL) {
> -        goto ON_ERROR;
> -      }
> -
> -      DstResponse->HeaderCount += 1;
> -    }
> -  }
> -
> -  //
> -  // Payload
> -  //
> -  if (SrcResponse->Payload != NULL) {
> -    Service              = RedfishServiceInPayload (SrcResponse->Payload);
> -    JsonValue            = RedfishJsonInPayload (SrcResponse->Payload);
> -    DstResponse->Payload = RedfishCreatePayload (JsonValue, Service);
> -    if (DstResponse->Payload  == NULL) {
> -      goto ON_ERROR;
> -    }
> -  }
> -
> -  return EFI_SUCCESS;
> -
> -ON_ERROR:
> -
> -  RedfishFreeResponse (
> -    DstResponse->StatusCode,
> -    DstResponse->HeaderCount,
> -    DstResponse->Headers,
> -    DstResponse->Payload
> -    );
> -
> -  return EFI_OUT_OF_RESOURCES;
> -}
> -
> -/**
> -  This function clone input response and return to caller
> -
> -  @param[in]  Response      Response to clone.
> -
> -  @retval     REDFISH_RESPONSE *  Response is cloned.
> -  @retval     NULL                Errors occur.
> -
> -**/
> -REDFISH_RESPONSE *
> -CloneRedfishResponse (
> -  IN REDFISH_RESPONSE  *Response
> -  )
> -{
> -  EFI_STATUS        Status;
> -  REDFISH_RESPONSE  *NewResponse;
> -
> -  if (Response == NULL) {
> -    return NULL;
> -  }
> -
> -  NewResponse = AllocateZeroPool (sizeof (REDFISH_RESPONSE));
> -  if (NewResponse == NULL) {
> -    return NULL;
> -  }
> -
> -  Status = CopyRedfishResponse (Response, NewResponse);
> -  if (EFI_ERROR (Status)) {
> -    FreePool (NewResponse);
> -    return NULL;
> -  }
> -
> -  return NewResponse;
> -}
> -
> -/**
> -
> -  Convert Unicode string to ASCII string. It's call responsibility to release
> returned buffer.
> -
> -  @param[in]  UnicodeStr      Unicode string to convert.
> -
> -  @retval     CHAR8 *         ASCII string returned.
> -  @retval     NULL            Errors occur.
> -
> -**/
> -CHAR8 *
> -StringUnicodeToAscii (
> -  IN EFI_STRING  UnicodeStr
> -  )
> -{
> -  CHAR8       *AsciiStr;
> -  UINTN       AsciiStrSize;
> -  EFI_STATUS  Status;
> -
> -  if (IS_EMPTY_STRING (UnicodeStr)) {
> -    return NULL;
> -  }
> -
> -  AsciiStrSize = StrLen (UnicodeStr) + 1;
> -  AsciiStr     = AllocatePool (AsciiStrSize);
> -  if (AsciiStr == NULL) {
> -    return NULL;
> -  }
> -
> -  Status = UnicodeStrToAsciiStrS (UnicodeStr, AsciiStr, AsciiStrSize);
> -  if (EFI_ERROR (Status)) {
> -    DEBUG ((DEBUG_ERROR, "UnicodeStrToAsciiStrS failed: %r\n", Status));
> -    FreePool (AsciiStr);
> -    return NULL;
> -  }
> -
> -  return AsciiStr;
> -}
> -
> -/**
> -  Release REDFISH_HTTP_CACHE_DATA resource
> -
> -  @param[in]    Data    Pointer to REDFISH_HTTP_CACHE_DATA instance
> -
> -  @retval EFI_SUCCESS             REDFISH_HTTP_CACHE_DATA is released
> successfully.
> -  @retval EFI_INVALID_PARAMETER   Data is NULL
> -
> -**/
> -EFI_STATUS
> -ReleaseHttpCacheData (
> -  IN REDFISH_HTTP_CACHE_DATA  *Data
> -  )
> -{
> -  if (Data == NULL) {
> -    return EFI_INVALID_PARAMETER;
> -  }
> -
> -  if (Data->Uri != NULL) {
> -    FreePool (Data->Uri);
> -  }
> -
> -  if (Data->Response != NULL) {
> -    if (Data->Response->Payload != NULL) {
> -      RedfishFreeResponse (
> -        Data->Response->StatusCode,
> -        Data->Response->HeaderCount,
> -        Data->Response->Headers,
> -        Data->Response->Payload
> -        );
> -      FreePool (Data->Response);
> -    }
> -  }
> -
> -  FreePool (Data);
> -
> -  return EFI_SUCCESS;
> -}
> -
> -/**
> -  Create new cache data.
> -
> -  @param[in]    Uri       The URI string matching to this cache data.
> -  @param[in]    Response  HTTP response.
> -
> -  @retval REDFISH_HTTP_CACHE_DATA *   Pointer to newly created cache
> data.
> -  @retval NULL                        No memory available.
> -
> -**/
> -REDFISH_HTTP_CACHE_DATA *
> -NewHttpCacheData (
> -  IN  EFI_STRING        Uri,
> -  IN  REDFISH_RESPONSE  *Response
> -  )
> -{
> -  REDFISH_HTTP_CACHE_DATA  *NewData;
> -  UINTN                    Size;
> -
> -  if (IS_EMPTY_STRING (Uri) || (Response == NULL)) {
> -    return NULL;
> -  }
> -
> -  NewData = AllocateZeroPool (sizeof (REDFISH_HTTP_CACHE_DATA));
> -  if (NewData == NULL) {
> -    return NULL;
> -  }
> -
> -  Size         = StrSize (Uri);
> -  NewData->Uri = AllocateCopyPool (Size, Uri);
> -  if (NewData->Uri == NULL) {
> -    goto ON_ERROR;
> -  }
> -
> -  NewData->Response = Response;
> -  NewData->HitCount = 1;
> -
> -  return NewData;
> -
> -ON_ERROR:
> -
> -  if (NewData != NULL) {
> -    ReleaseHttpCacheData (NewData);
> -  }
> -
> -  return NULL;
> -}
> -
> -/**
> -  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
> -  )
> -{
> -  LIST_ENTRY               *List;
> -  REDFISH_HTTP_CACHE_DATA  *Data;
> -
> -  if (IS_EMPTY_STRING (Uri)) {
> -    return NULL;
> -  }
> -
> -  if (IsListEmpty (ListHeader)) {
> -    return NULL;
> -  }
> -
> -  Data = NULL;
> -  List = GetFirstNode (ListHeader);
> -  while (!IsNull (ListHeader, List)) {
> -    Data = REDFISH_HTTP_CACHE_FROM_LIST (List);
> -
> -    if (StrCmp (Data->Uri, Uri) == 0) {
> -      return Data;
> -    }
> -
> -    List = GetNextNode (ListHeader, List);
> -  }
> -
> -  return NULL;
> -}
> -
> -/**
> -  Search on given ListHeader and return cache data with minimum hit count.
> -
> -  @param[in]    ListHeader  Target list to search.
> -
> -  @retval REDFISH_HTTP_CACHE_DATA   Target cache data is returned.
> -  @retval NULL                      No cache data is found.
> -
> -**/
> -REDFISH_HTTP_CACHE_DATA *
> -FindUnusedHttpCacheData (
> -  IN  LIST_ENTRY  *ListHeader
> -  )
> -{
> -  LIST_ENTRY               *List;
> -  REDFISH_HTTP_CACHE_DATA  *Data;
> -  REDFISH_HTTP_CACHE_DATA  *UnusedData;
> -  UINTN                    HitCount;
> -
> -  if (IsListEmpty (ListHeader)) {
> -    return NULL;
> -  }
> -
> -  Data       = NULL;
> -  UnusedData = NULL;
> -  HitCount   = 0;
> -
> -  List       = GetFirstNode (ListHeader);
> -  Data       = REDFISH_HTTP_CACHE_FROM_LIST (List);
> -  UnusedData = Data;
> -  HitCount   = Data->HitCount;
> -  List       = GetNextNode (ListHeader, List);
> -
> -  while (!IsNull (ListHeader, List)) {
> -    Data = REDFISH_HTTP_CACHE_FROM_LIST (List);
> -
> -    if (Data->HitCount < HitCount) {
> -      HitCount   = Data->HitCount;
> -      UnusedData = Data;
> -    }
> -
> -    List = GetNextNode (ListHeader, List);
> -  }
> -
> -  return UnusedData;
> -}
> -
> -/**
> -  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
> -  )
> -{
> -  if ((List == NULL) || (Data == NULL)) {
> -    return EFI_INVALID_PARAMETER;
> -  }
> -
> -  DEBUG ((REDFISH_HTTP_CACHE_DEBUG, "%a: delete: %s\n", __func__,
> Data->Uri));
> -
> -  RemoveEntryList (&Data->List);
> -  --List->Count;
> -
> -  return ReleaseHttpCacheData (Data);
> -}
> -
> -/**
> -  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
> -  )
> -{
> -  REDFISH_HTTP_CACHE_DATA  *NewData;
> -  REDFISH_HTTP_CACHE_DATA  *OldData;
> -  REDFISH_HTTP_CACHE_DATA  *UnusedData;
> -  REDFISH_RESPONSE         *NewResponse;
> -
> -  if ((List == NULL) || IS_EMPTY_STRING (Uri) || (Response == NULL)) {
> -    return EFI_INVALID_PARAMETER;
> -  }
> -
> -  //
> -  // If same cache data exist, replace it with latest one.
> -  //
> -  OldData = FindHttpCacheData (&List->Head, Uri);
> -  if (OldData != NULL) {
> -    DeleteHttpCacheData (List, OldData);
> -  }
> -
> -  //
> -  // Check capacity
> -  //
> -  if (List->Count >= List->Capacity) {
> -    DEBUG ((REDFISH_HTTP_CACHE_DEBUG, "%a: list is full and retire unused
> cache\n", __func__));
> -    UnusedData = FindUnusedHttpCacheData (&List->Head);
> -    if (UnusedData == NULL) {
> -      return EFI_OUT_OF_RESOURCES;
> -    }
> -
> -    DeleteHttpCacheData (List, UnusedData);
> -  }
> -
> -  //
> -  // Clone a local copy
> -  //
> -  NewResponse = CloneRedfishResponse (Response);
> -  if (NewResponse == NULL) {
> -    return EFI_OUT_OF_RESOURCES;
> -  }
> -
> -  NewData = NewHttpCacheData (Uri, NewResponse);
> -  if (NewData == NULL) {
> -    return EFI_OUT_OF_RESOURCES;
> -  }
> -
> -  InsertTailList (&List->Head, &NewData->List);
> -  ++List->Count;
> -
> -  DEBUG ((REDFISH_HTTP_CACHE_DEBUG, "%a: cache(%d/%d) %s\n",
> __func__, List->Count, List->Capacity, NewData->Uri));
> -
> -  return EFI_SUCCESS;
> -}
> -
> -/**
> -  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
> -  )
> -{
> -  LIST_ENTRY               *List;
> -  LIST_ENTRY               *Next;
> -  REDFISH_HTTP_CACHE_DATA  *Data;
> -
> -  if (CacheList == NULL) {
> -    return EFI_INVALID_PARAMETER;
> -  }
> -
> -  if (IsListEmpty (&CacheList->Head)) {
> -    return EFI_SUCCESS;
> -  }
> -
> -  Data = NULL;
> -  Next = NULL;
> -  List = GetFirstNode (&CacheList->Head);
> -  while (!IsNull (&CacheList->Head, List)) {
> -    Data = REDFISH_HTTP_CACHE_FROM_LIST (List);
> -    Next = GetNextNode (&CacheList->Head, List);
> -
> -    DeleteHttpCacheData (CacheList, Data);
> -
> -    List = Next;
> -  }
> -
> -  return EFI_SUCCESS;
> -}
> -
> -/**
> -  Debug output the cache list.
> -
> -  @param[in]    Msg            Debug message string.
> -  @param[in]    ErrorLevel     Output error level.
> -  @param[in]    CacheList      Target list to dump.
> -
> -  @retval EFI_SUCCESS             Debug dump finished.
> -  @retval EFI_INVALID_PARAMETER   HttpCacheList is NULL.
> -
> -**/
> -EFI_STATUS
> -DumpHttpCacheList (
> -  IN  CONST CHAR8              *Msg,
> -  IN  UINTN                    ErrorLevel,
> -  IN  REDFISH_HTTP_CACHE_LIST  *CacheList
> -  )
> -{
> -  LIST_ENTRY               *List;
> -  REDFISH_HTTP_CACHE_DATA  *Data;
> -  UINTN                    Index;
> -
> -  if (CacheList == NULL) {
> -    return EFI_INVALID_PARAMETER;
> -  }
> -
> -  if (!IS_EMPTY_STRING (Msg)) {
> -    DEBUG ((ErrorLevel, "%a\n", Msg));
> -  }
> -
> -  if (IsListEmpty (&CacheList->Head)) {
> -    DEBUG ((ErrorLevel, "list is empty\n"));
> -    return EFI_NOT_FOUND;
> -  }
> -
> -  DEBUG ((ErrorLevel, "list count: %d capacity: %d\n", CacheList->Count,
> CacheList->Capacity));
> -  Data  = NULL;
> -  Index = 0;
> -  List  = GetFirstNode (&CacheList->Head);
> -  while (!IsNull (&CacheList->Head, List)) {
> -    Data = REDFISH_HTTP_CACHE_FROM_LIST (List);
> -
> -    DEBUG ((ErrorLevel, "%d) Uri: %s Hit: %d\n", ++Index, Data->Uri, Data-
> >HitCount));
> -
> -    List = GetNextNode (&CacheList->Head, List);
> -  }
> -
> -  return EFI_SUCCESS;
> -}
> -
> -/**
> -  Get redfish resource from given resource URI with cache mechanism
> -  supported. It's caller's responsibility to Response by calling
> -  RedfishFreeResponse ().
> -
> -  @param[in]  Service       Redfish service instance to make query.
> -  @param[in]  Uri           Target resource URI.
> -  @param[out] Response      HTTP response from redfish service.
> -  @param[in]  UseCache      If it is TRUE, this function will search for
> -                            cache first. If it is FALSE, this function
> -                            will query Redfish URI directly.
> -
> -  @retval     EFI_SUCCESS     Resrouce is returned successfully.
> -  @retval     Others          Errors occur.
> -
> -**/
> -EFI_STATUS
> -RedfishHttpGetResource (
> -  IN  REDFISH_SERVICE   Service,
> -  IN  EFI_STRING        Uri,
> -  OUT REDFISH_RESPONSE  *Response,
> -  IN  BOOLEAN           UseCache
> -  )
> -{
> -  EFI_STATUS               Status;
> -  CHAR8                    *AsciiUri;
> -  REDFISH_HTTP_CACHE_DATA  *CacheData;
> -  UINTN                    RetryCount;
> -
> -  if ((Service == NULL) || (Response == NULL) || IS_EMPTY_STRING (Uri)) {
> -    return EFI_INVALID_PARAMETER;
> -  }
> -
> -  if (mRedfishHttpCachePrivate == NULL) {
> -    return EFI_NOT_READY;
> -  }
> -
> -  AsciiUri   = NULL;
> -  CacheData  = NULL;
> -  RetryCount = 0;
> -
> -  //
> -  // Search for cache list.
> -  //
> -  if (UseCache) {
> -    CacheData = FindHttpCacheData (&mRedfishHttpCachePrivate-
> >CacheList.Head, Uri);
> -    if (CacheData != NULL) {
> -      DEBUG ((REDFISH_HTTP_CACHE_DEBUG, "%a: cache hit! %s\n", __func__,
> Uri));
> -
> -      //
> -      // Copy cached response to caller's buffer.
> -      //
> -      Status               = CopyRedfishResponse (CacheData->Response, Response);
> -      CacheData->HitCount += 1;
> -      return Status;
> -    }
> -  }
> -
> -  AsciiUri = StringUnicodeToAscii (Uri);
> -  if (AsciiUri == NULL) {
> -    return EFI_OUT_OF_RESOURCES;
> -  }
> -
> -  //
> -  // Get resource from redfish service.
> -  //
> -  do {
> -    RetryCount += 1;
> -    Status      = RedfishGetByUri (
> -                    Service,
> -                    AsciiUri,
> -                    Response
> -                    );
> -    if (!EFI_ERROR (Status) || (RetryCount >=
> REDFISH_HTTP_GET_RETRY_MAX)) {
> -      break;
> -    }
> -
> -    //
> -    // Retry when Redfish service is not ready.
> -    //
> -    if ((Response->StatusCode != NULL)) {
> -      DEBUG_CODE (
> -        DumpRedfishResponse (NULL, DEBUG_ERROR, Response);
> -        );
> -
> -      if (*Response->StatusCode !=
> HTTP_STATUS_500_INTERNAL_SERVER_ERROR) {
> -        break;
> -      }
> -
> -      FreePool (Response->StatusCode);
> -      Response->StatusCode = NULL;
> -    }
> -
> -    DEBUG ((DEBUG_WARN, "%a: RedfishGetByUri failed, retry (%d/%d)\n",
> __func__, RetryCount, REDFISH_HTTP_GET_RETRY_MAX));
> -    gBS->Stall (REDFISH_HTTP_RETRY_WAIT);
> -  } while (TRUE);
> -
> -  if (EFI_ERROR (Status)) {
> -    DEBUG ((DEBUG_ERROR, "%a: get %a failed (%d/%d): %r\n", __func__,
> AsciiUri, RetryCount, REDFISH_HTTP_GET_RETRY_MAX, Status));
> -    if (Response->Payload != NULL) {
> -      RedfishFreeResponse (
> -        NULL,
> -        0,
> -        NULL,
> -        Response->Payload
> -        );
> -      Response->Payload = NULL;
> -    }
> -
> -    goto ON_RELEASE;
> -  }
> -
> -  //
> -  // Keep response in cache list
> -  //
> -  Status = AddHttpCacheData (&mRedfishHttpCachePrivate->CacheList, Uri,
> Response);
> -  if (EFI_ERROR (Status)) {
> -    DEBUG ((DEBUG_ERROR, "%a: failed to cache %s: %r\n", __func__, Uri,
> Status));
> -    goto ON_RELEASE;
> -  }
> -
> -  DEBUG_CODE (
> -    DumpHttpCacheList (__func__, REDFISH_HTTP_CACHE_DEBUG_DUMP,
> &mRedfishHttpCachePrivate->CacheList);
> -    );
> -
> -ON_RELEASE:
> -
> -  if (AsciiUri != NULL) {
> -    FreePool (AsciiUri);
> -  }
> -
> -  return Status;
> -}
> -
> -/**
> -  Reset the cached data specified by given URI. When response data
> -  returned by RedfishHttpResetResource() is modified, the response
> -  data can not be used by other caller. Application calls this
> -  function to make this data to be stale data and
> -  RedfishHttpResetResource() will get latest data from remote server
> -  again.
> -
> -  @param[in]  Uri           Target resource URI.
> -
> -  @retval     EFI_SUCCESS     Resrouce is reset successfully.
> -  @retval     Others          Errors occur.
> -
> -**/
> -EFI_STATUS
> -RedfishHttpResetResource (
> -  IN  EFI_STRING  Uri
> -  )
> -{
> -  REDFISH_HTTP_CACHE_DATA  *CacheData;
> -
> -  if (IS_EMPTY_STRING (Uri)) {
> -    return EFI_INVALID_PARAMETER;
> -  }
> -
> -  if (mRedfishHttpCachePrivate == NULL) {
> -    return EFI_NOT_READY;
> -  }
> -
> -  CacheData = FindHttpCacheData (&mRedfishHttpCachePrivate-
> >CacheList.Head, Uri);
> -  if (CacheData == NULL) {
> -    return EFI_NOT_FOUND;
> -  }
> -
> -  DeleteHttpCacheData (&mRedfishHttpCachePrivate->CacheList, CacheData);
> -
> -  return EFI_SUCCESS;
> -}
> -
> -/**
> -
> -  Initial HTTP cache library instance.
> -
> -  @param[in] ImageHandle     The image handle.
> -  @param[in] SystemTable     The system table.
> -
> -  @retval  EFI_SUCCESS  Initial library successfully.
> -  @retval  Other        Return error status.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -RedfishHttpCacheConstructor (
> -  IN EFI_HANDLE        ImageHandle,
> -  IN EFI_SYSTEM_TABLE  *SystemTable
> -  )
> -{
> -  mRedfishHttpCachePrivate = AllocateZeroPool (sizeof
> (REDFISH_HTTP_CACHE_PRIVATE));
> -  if (mRedfishHttpCachePrivate == NULL) {
> -    return EFI_OUT_OF_RESOURCES;
> -  }
> -
> -  //
> -  // Initial cache list
> -  //
> -  mRedfishHttpCachePrivate->CacheList.Capacity =
> REDFISH_HTTP_CACHE_LIST_SIZE;
> -  mRedfishHttpCachePrivate->CacheList.Count    = 0x00;
> -  InitializeListHead (&mRedfishHttpCachePrivate->CacheList.Head);
> -
> -  return EFI_SUCCESS;
> -}
> -
> -/**
> -  Release allocated resource.
> -
> -  @param[in] ImageHandle       Handle that identifies the image to be
> unloaded.
> -  @param[in] SystemTable      The system table.
> -
> -  @retval EFI_SUCCESS      The image has been unloaded.
> -
> -**/
> -EFI_STATUS
> -EFIAPI
> -RedfishHttpCacheDestructor (
> -  IN EFI_HANDLE        ImageHandle,
> -  IN EFI_SYSTEM_TABLE  *SystemTable
> -  )
> -{
> -  if (mRedfishHttpCachePrivate != NULL) {
> -    if (!IsListEmpty (&mRedfishHttpCachePrivate->CacheList.Head)) {
> -      ReleaseCacheList (&mRedfishHttpCachePrivate->CacheList);
> -    }
> -
> -    FreePool (mRedfishHttpCachePrivate);
> -    mRedfishHttpCachePrivate = NULL;
> -  }
> -
> -  return EFI_SUCCESS;
> -}
> --
> 2.34.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#116298): https://edk2.groups.io/g/devel/message/116298
Mute This Topic: https://groups.io/mt/104640216/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-03-04  1:53 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-29  8:53 [edk2-devel] [edk2-redfish-client][PATCH 02/13] RedfishClientPkg: remove RedfishHttpCacheLib Nickle Wang via groups.io
2024-03-04  1:53 ` Chang, Abner via groups.io

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox