From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 97822D801E7 for ; Mon, 4 Mar 2024 01:53:49 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=zZdPHOYMYace715fJFMexfZO/f886qA5lzu2hc5EKK4=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:msip_labels:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1709517228; v=1; b=OLTRyPvJcX5B2VnKcdVqi2Xrze0T4H4LUA7IU2CUeUeR9327SSIubkipE7XkYYrnt1GER3Qe C9bV4EkFL5h7siuR3xxix+uerj4bHipuONn/NfANlVV/9vSCPqgDhOyS3qPLwO5fcYAZPBz113/ ZTXPw8E71bKLqxhpwJCBU6tc= X-Received: by 127.0.0.2 with SMTP id On6kYY7687511xLutEHH9XzU; Sun, 03 Mar 2024 17:53:48 -0800 X-Received: from NAM10-BN7-obe.outbound.protection.outlook.com (NAM10-BN7-obe.outbound.protection.outlook.com [40.107.92.77]) by mx.groups.io with SMTP id smtpd.web10.88795.1709517227359317582 for ; Sun, 03 Mar 2024 17:53:47 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j4yr9ghnReF0QY/gb9/zjYub0xS0q49X7j5g6HYiDW7X0HeRa/GiiyR9dIvusc8UZh7is/EXwmNvZotDXFs2bNFguACsXB+SKfrbcXuf8BYzggDMEIlTfY51gmGnfd0RTFCQvmexUGkmSf/awFBSoqpd7wuOcAmKIvNSW9WNXyPnpb0b4jODG6kgyK5qO97p8LKz/DAyMQXQ5dWO7XnIThOuf618eBAz65OAWBQLE9uRhDWlwfFvjBOe1l+bFVVleCkhsxT3RDYu534AnDQoQ4vEJoSPmP0sxT3KYuoW5QaMAxLDufyViXPrLofde2h9pLB8VB+QI01fYL8S3taBrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jkY9COgNzn8sQ3v9wo6O7d76tnLNaLYMvrbVEw7skfE=; b=hagfxHQF15mB601tyrkC5WqgBwIhlGkv44BXu6IogAA8qDhTBGZPQTX/TuYHKsXspyG6nnI5L1/lLQsSGLvyu49nVXvWruBVWfPxu62KEhAuYcITUaMP1wDTCs8n7R4CGgRB806Pwgt2CfPCQTX190EuhMI5/kiXNMPsm+EzcaJerlWD58lBTthoYYCpK+Mu08KB5djDr6T8GIfnBsLRIwp2cJJHgRo5OU6OLY4AAddPeh8IBIHfnE7PzL/nvX36mqF+L8dWiKVoPZmDawESrz+R41py4zhbblo4D4zhWjv6DzJGt7wOI6I6dctMNeX7oA/1WgWRq0qAcbLaxy+Tsg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none X-Received: from DM3PR12MB9433.namprd12.prod.outlook.com (2603:10b6:0:47::11) by PH0PR12MB7813.namprd12.prod.outlook.com (2603:10b6:510:286::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7339.38; Mon, 4 Mar 2024 01:53:44 +0000 X-Received: from DM3PR12MB9433.namprd12.prod.outlook.com ([fe80::943e:4534:7864:59ef]) by DM3PR12MB9433.namprd12.prod.outlook.com ([fe80::943e:4534:7864:59ef%4]) with mapi id 15.20.7339.035; Mon, 4 Mar 2024 01:53:44 +0000 From: "Chang, Abner via groups.io" To: Nickle Wang , "devel@edk2.groups.io" CC: Igor Kulchytskyy Subject: Re: [edk2-devel] [edk2-redfish-client][PATCH 02/13] RedfishClientPkg: remove RedfishHttpCacheLib Thread-Topic: [edk2-redfish-client][PATCH 02/13] RedfishClientPkg: remove RedfishHttpCacheLib Thread-Index: AQHaauzFuJ7GZieAGUGv/ycHm5qk2bEm17Vw Date: Mon, 4 Mar 2024 01:53:44 +0000 Message-ID: References: <20240229085306.111930-1-nicklew@nvidia.com> In-Reply-To: <20240229085306.111930-1-nicklew@nvidia.com> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=20716da0-c53e-4a06-8319-b0a6d4d1071d;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=0;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2024-03-04T01:53:40Z;MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM3PR12MB9433:EE_|PH0PR12MB7813:EE_ x-ms-office365-filtering-correlation-id: 48e43ab5-5f78-4764-7a8a-08dc3bedec9e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: DEpzaHoI4ghiHSlzwVJYiUYMTfy4gRsDQTb/MlAUUC4UgLrfAmidb45LYMFSzjqLtmAqu2ENx/+SMvJwlxBg+PZxN2S1XQhjRIxYjM5EPpTSSlyZc5ShL/DXqiyygHgSrujJ7YHduwy2gBWGi6ESMvSB4jqUd0mAuUfE7U6xEhGRmNXuZU3xmwchw+ns2fgRztnGzQkqNuYa2nQrhxCFGYaECoZuLUhcqVBcc6Yxj4wAaKM4j6O4PfhHFUkbvp1oGOYTYv1N5qyjC434cQHBxLcBPidbXWLafu9mOjNK0LsVaWQ31aaMlivNzma/Vn2wAllPSUxmPUYt8/I39edTHmgguarXITGjn1oHi+6ApQ8Q2SNXVHmxqHO006mu85+6VdBE5vmUXt4UxnAP4/iZd5wdxVBMZ4esEQcAMpSQ/2J1XWkJbaSRurd5wsTMAFWT5Ahed/pmQ7q/st7/Hk1g3McnKCsNpt6bXE6eyIdaqu+fz6dW1pG+PMa8lroz7jgu+L8VnhMENg+8V9jXrnKTQruPjnH4PZH+P8UcAKZutNPVvNvtQu1Qxh8GsfDbC+vMAO5EsszvVzXlGWhWI49rvxFa8+xG/6HeLrYchh3JE7j2vKMB6DLQzkLJAnlsAEnmg9VCJehsaxo5Dq51p5MZUcw49OAqF/7QUHI2jFYKQ7F3pAw2fNCxJVjpa4Icd0FOsYYgPlYJTWnwFoNsfAk8aw== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?BmNz6cjuJfb7Sq42suikPeAEfhRFBrHeFOSFfeg6ds54LEioylKdyDP/a0cZ?= =?us-ascii?Q?gSY/39yHFOcxh9wp2Xt+Qm+IkCGmSArd2O06K5huweEqwDPdTn3KM3B+TUVg?= =?us-ascii?Q?xnRoaKxDiVcqCQawRonoi+5h4aSdctOhpMs9beJlH1crZG+m1xkzAiErHj0w?= =?us-ascii?Q?ACngZ55OnCC7OD1g0lNxUUERdKRZ22LBwiR3rT0sx2yI2T83y6w7j1Aj+Q2V?= =?us-ascii?Q?W50s3ETbjAvPGI6sVW2+GqBYEWS0LbU0JNZtRPJsfGS9cv72+08Ws7Mspu25?= =?us-ascii?Q?4sT2Do9c/EhD+kEmUJD5sB0zc5j/gnjKI00CloBjpWes8anv5Urr1L7rnZwo?= =?us-ascii?Q?mEy2uJePYxHSLcW4OD5r2oH28KjkkCyMl3PfEPFbE3wId6ELMjn+ogU7XTXj?= =?us-ascii?Q?IqM5NS9Jc8vjhbnyOdSorTLRzh3Mhhe4RqzcJPLjJXz+AL5rkwMKdqUhOy8N?= =?us-ascii?Q?DqmILkOj6UQk8cgTbehWWJUa7EDrtmUa0gV4UwnaxN6k/dZ0M4eZnwnSwKPY?= =?us-ascii?Q?zp4zZGZ+3lFRG/FYxf/3u0j2JHvf0skvfP2ECELzMYaFaiLtR+P38auMECIG?= =?us-ascii?Q?7PS6ZdaMeb5TQonkGGQhjXZQKcgQIrpojeOKvI3azOe81SUQidNMSL9Qo30t?= =?us-ascii?Q?N98+wQ9OaarHtb8DKinQ8Fr07nuw0gWgJH9tsyG/a2/S+zM1l3Mir1R+49tt?= =?us-ascii?Q?D2VgEzhVm+1xQAfBEDU0uAE8W/oXQan9aBSLTyNQFb+jOucVSxFUkefrx0ym?= =?us-ascii?Q?XYO8S66iDZ1Z2KoDr4sCDiE8D23ggCv20CU2kPi8tuEyOE6a2MOKtBJJUYMM?= =?us-ascii?Q?FjfdAtgogNSyp1HPcUXwTqvrzRVBQXKF3cvAYTW7nRmIkImw+x9cHyPwvFLl?= =?us-ascii?Q?0OKotg2r8byamzHNisEDONHoKLbB/VAhLASp/5fawR744QV6teJD7WAfV8yK?= =?us-ascii?Q?1mwJj/nfki4SVeVr6gCjvnmf8Ji/vvG3/JsL1YV8YSdzilBG/UYrWKPbzwVQ?= =?us-ascii?Q?+5mxqeQx81Qh2BPOVYlc/AfoqOEBMEXSC0esVoEphv3Ac5qzkoqqwm+CPnGc?= =?us-ascii?Q?yxfLPBWh8FqN/xTn4uTHh/S3hH4yiA5BxfUWL09WYYN2mi93vNA6DlMuBUT+?= =?us-ascii?Q?3n1AUef6CEdCf/eR/qv7JUs8r1XVJ9a3s5V8VGrM3jUn7mjdoAnkQZV+swKS?= =?us-ascii?Q?CjGZwbsO/qZTsAXNBcv5bBr+NRYLKFJ1C9w2eM2mEhr1zvgRxwoqtjaZObuE?= =?us-ascii?Q?mF8+MxsBjBn9KfyBeA3xkRSWCupo7ydVuM3+fsvBv7UFdTthd6J1qi+BCcrT?= =?us-ascii?Q?54F8jIjftKkWbW4raMDz9Yrdy2tGkRNka1Yth2Hh0d0MHh/nULKZZvixN9mv?= =?us-ascii?Q?ZJC7wQVqrtxRVDyg5+0+gTekZMSF7XrJK8LO1VXnxGGG5slhHaKi1HxEzsL2?= =?us-ascii?Q?HwKWD/Nv96X0ImSW74i9Uf0G9k5/sfm21XVDC1TvxRG1OtlbY9Zn9wy+6M4C?= =?us-ascii?Q?llA07+oFqg/DvFEQ+rEVd3sl3F/TeIkjN7OFGZComu/hs0POfbOk8EhPauns?= =?us-ascii?Q?YmqLtRx5W596d3XAMI8=3D?= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM3PR12MB9433.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 48e43ab5-5f78-4764-7a8a-08dc3bedec9e X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Mar 2024 01:53:44.2487 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 8xVFj6gijqfItuqIqtbtkmSm+XMIP9jNnvq2IdQuZzu56zrwjIZzGwojPpkfZavh1SAjaVFzM5d1buOvJfwADw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB7813 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,abner.chang@amd.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: TpEXvALnBIHmMtMng2ZLXGbvx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=OLTRyPvJ; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; dmarc=pass (policy=none) header.from=groups.io; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") [AMD Official Use Only - General] Reviewed-by: Abner Chang > -----Original Message----- > From: Nickle Wang > Sent: Thursday, February 29, 2024 4:53 PM > To: devel@edk2.groups.io > Cc: Chang, Abner ; Igor Kulchytskyy > > Subject: [edk2-redfish-client][PATCH 02/13] RedfishClientPkg: remove > RedfishHttpCacheLib > > Caution: This message originated from an External Source. Use proper caut= ion > when opening attachments, clicking links, or responding. > > > Remove RedfishHttpCacheLib and use EDK2 RedfishHttpLib. > > Signed-off-by: Nickle Wang > Cc: Abner Chang > Cc: Igor Kulchytskyy > --- > 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/EdkIIRedfishResourceConfigL= i > 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/RedfishVersi= o > 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/RedfishFeatureUtilityLi= b.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.in= f > +++ /dev/null > @@ -1,48 +0,0 @@ > -## @file > -# Redfish HTTP cache library helps Redfish application to get Redfish r= esource > -# 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 =3D 0x00010006 > - BASE_NAME =3D RedfishHttpCacheLib > - FILE_GUID =3D 21F8FEEC-023C-451D-824D-823058FD948= 1 > - MODULE_TYPE =3D DXE_DRIVER > - VERSION_STRING =3D 1.0 > - LIBRARY_CLASS =3D RedfishHttpCacheLib| DXE_DRIVER UEF= I_DRIVER > - CONSTRUCTOR =3D RedfishHttpCacheConstructor > - DESTRUCTOR =3D RedfishHttpCacheDestructor > - > -# > -# VALID_ARCHITECTURES =3D 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 > -#include > - > -/** > - 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 reserv= ed. > - > - SPDX-License-Identifier: BSD-2-Clause-Patent > - > -**/ > - > -#ifndef REDFISH_HTTP_CACHE_INTERNAL_LIB_H_ > -#define REDFISH_HTTP_CACHE_INTERNAL_LIB_H_ > - > -#include > -#include > - > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > -#include > - > -#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 re= source > - 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 =3D 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 =3D=3D NULL) || (DstResponse =3D=3D NULL)) { > - return EFI_INVALID_PARAMETER; > - } > - > - if (SrcResponse =3D=3D DstResponse) { > - return EFI_SUCCESS; > - } > - > - // > - // Status code > - // > - if (SrcResponse->StatusCode !=3D NULL) { > - DstResponse->StatusCode =3D AllocateCopyPool (sizeof > (EFI_HTTP_STATUS_CODE), SrcResponse->StatusCode); > - if (DstResponse->StatusCode =3D=3D NULL) { > - goto ON_ERROR; > - } > - } > - > - // > - // Header > - // > - if ((SrcResponse->HeaderCount > 0) && (SrcResponse->Headers !=3D NULL)= ) { > - DstResponse->HeaderCount =3D 0; > - DstResponse->Headers =3D AllocateZeroPool (sizeof (EFI_HTTP_HEAD= ER) * > SrcResponse->HeaderCount); > - if (DstResponse->Headers =3D=3D NULL) { > - goto ON_ERROR; > - } > - > - for (Index =3D 0; Index < SrcResponse->HeaderCount; Index++) { > - DstResponse->Headers[Index].FieldName =3D AllocateCopyPool (AsciiS= trSize > (SrcResponse->Headers[Index].FieldName), SrcResponse- > >Headers[Index].FieldName); > - if (DstResponse->Headers[Index].FieldName =3D=3D NULL) { > - goto ON_ERROR; > - } > - > - DstResponse->Headers[Index].FieldValue =3D AllocateCopyPool (Ascii= StrSize > (SrcResponse->Headers[Index].FieldValue), SrcResponse- > >Headers[Index].FieldValue); > - if (DstResponse->Headers[Index].FieldValue =3D=3D NULL) { > - goto ON_ERROR; > - } > - > - DstResponse->HeaderCount +=3D 1; > - } > - } > - > - // > - // Payload > - // > - if (SrcResponse->Payload !=3D NULL) { > - Service =3D RedfishServiceInPayload (SrcResponse->Paylo= ad); > - JsonValue =3D RedfishJsonInPayload (SrcResponse->Payload)= ; > - DstResponse->Payload =3D RedfishCreatePayload (JsonValue, Service); > - if (DstResponse->Payload =3D=3D 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 =3D=3D NULL) { > - return NULL; > - } > - > - NewResponse =3D AllocateZeroPool (sizeof (REDFISH_RESPONSE)); > - if (NewResponse =3D=3D NULL) { > - return NULL; > - } > - > - Status =3D CopyRedfishResponse (Response, NewResponse); > - if (EFI_ERROR (Status)) { > - FreePool (NewResponse); > - return NULL; > - } > - > - return NewResponse; > -} > - > -/** > - > - Convert Unicode string to ASCII string. It's call responsibility to re= lease > 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 =3D StrLen (UnicodeStr) + 1; > - AsciiStr =3D AllocatePool (AsciiStrSize); > - if (AsciiStr =3D=3D NULL) { > - return NULL; > - } > - > - Status =3D 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 =3D=3D NULL) { > - return EFI_INVALID_PARAMETER; > - } > - > - if (Data->Uri !=3D NULL) { > - FreePool (Data->Uri); > - } > - > - if (Data->Response !=3D NULL) { > - if (Data->Response->Payload !=3D 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 =3D=3D NULL)) { > - return NULL; > - } > - > - NewData =3D AllocateZeroPool (sizeof (REDFISH_HTTP_CACHE_DATA)); > - if (NewData =3D=3D NULL) { > - return NULL; > - } > - > - Size =3D StrSize (Uri); > - NewData->Uri =3D AllocateCopyPool (Size, Uri); > - if (NewData->Uri =3D=3D NULL) { > - goto ON_ERROR; > - } > - > - NewData->Response =3D Response; > - NewData->HitCount =3D 1; > - > - return NewData; > - > -ON_ERROR: > - > - if (NewData !=3D 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 foun= d. > - > -**/ > -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 =3D NULL; > - List =3D GetFirstNode (ListHeader); > - while (!IsNull (ListHeader, List)) { > - Data =3D REDFISH_HTTP_CACHE_FROM_LIST (List); > - > - if (StrCmp (Data->Uri, Uri) =3D=3D 0) { > - return Data; > - } > - > - List =3D GetNextNode (ListHeader, List); > - } > - > - return NULL; > -} > - > -/** > - Search on given ListHeader and return cache data with minimum hit coun= t. > - > - @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 =3D NULL; > - UnusedData =3D NULL; > - HitCount =3D 0; > - > - List =3D GetFirstNode (ListHeader); > - Data =3D REDFISH_HTTP_CACHE_FROM_LIST (List); > - UnusedData =3D Data; > - HitCount =3D Data->HitCount; > - List =3D GetNextNode (ListHeader, List); > - > - while (!IsNull (ListHeader, List)) { > - Data =3D REDFISH_HTTP_CACHE_FROM_LIST (List); > - > - if (Data->HitCount < HitCount) { > - HitCount =3D Data->HitCount; > - UnusedData =3D Data; > - } > - > - List =3D 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 =3D=3D NULL) || (Data =3D=3D 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 =3D=3D NULL) || IS_EMPTY_STRING (Uri) || (Response =3D=3D NU= LL)) { > - return EFI_INVALID_PARAMETER; > - } > - > - // > - // If same cache data exist, replace it with latest one. > - // > - OldData =3D FindHttpCacheData (&List->Head, Uri); > - if (OldData !=3D NULL) { > - DeleteHttpCacheData (List, OldData); > - } > - > - // > - // Check capacity > - // > - if (List->Count >=3D List->Capacity) { > - DEBUG ((REDFISH_HTTP_CACHE_DEBUG, "%a: list is full and retire unuse= d > cache\n", __func__)); > - UnusedData =3D FindUnusedHttpCacheData (&List->Head); > - if (UnusedData =3D=3D NULL) { > - return EFI_OUT_OF_RESOURCES; > - } > - > - DeleteHttpCacheData (List, UnusedData); > - } > - > - // > - // Clone a local copy > - // > - NewResponse =3D CloneRedfishResponse (Response); > - if (NewResponse =3D=3D NULL) { > - return EFI_OUT_OF_RESOURCES; > - } > - > - NewData =3D NewHttpCacheData (Uri, NewResponse); > - if (NewData =3D=3D 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 =3D=3D NULL) { > - return EFI_INVALID_PARAMETER; > - } > - > - if (IsListEmpty (&CacheList->Head)) { > - return EFI_SUCCESS; > - } > - > - Data =3D NULL; > - Next =3D NULL; > - List =3D GetFirstNode (&CacheList->Head); > - while (!IsNull (&CacheList->Head, List)) { > - Data =3D REDFISH_HTTP_CACHE_FROM_LIST (List); > - Next =3D GetNextNode (&CacheList->Head, List); > - > - DeleteHttpCacheData (CacheList, Data); > - > - List =3D 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 =3D=3D 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 =3D NULL; > - Index =3D 0; > - List =3D GetFirstNode (&CacheList->Head); > - while (!IsNull (&CacheList->Head, List)) { > - Data =3D REDFISH_HTTP_CACHE_FROM_LIST (List); > - > - DEBUG ((ErrorLevel, "%d) Uri: %s Hit: %d\n", ++Index, Data->Uri, Dat= a- > >HitCount)); > - > - List =3D 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 =3D=3D NULL) || (Response =3D=3D NULL) || IS_EMPTY_STRING= (Uri)) { > - return EFI_INVALID_PARAMETER; > - } > - > - if (mRedfishHttpCachePrivate =3D=3D NULL) { > - return EFI_NOT_READY; > - } > - > - AsciiUri =3D NULL; > - CacheData =3D NULL; > - RetryCount =3D 0; > - > - // > - // Search for cache list. > - // > - if (UseCache) { > - CacheData =3D FindHttpCacheData (&mRedfishHttpCachePrivate- > >CacheList.Head, Uri); > - if (CacheData !=3D NULL) { > - DEBUG ((REDFISH_HTTP_CACHE_DEBUG, "%a: cache hit! %s\n", __func__, > Uri)); > - > - // > - // Copy cached response to caller's buffer. > - // > - Status =3D CopyRedfishResponse (CacheData->Response,= Response); > - CacheData->HitCount +=3D 1; > - return Status; > - } > - } > - > - AsciiUri =3D StringUnicodeToAscii (Uri); > - if (AsciiUri =3D=3D NULL) { > - return EFI_OUT_OF_RESOURCES; > - } > - > - // > - // Get resource from redfish service. > - // > - do { > - RetryCount +=3D 1; > - Status =3D RedfishGetByUri ( > - Service, > - AsciiUri, > - Response > - ); > - if (!EFI_ERROR (Status) || (RetryCount >=3D > REDFISH_HTTP_GET_RETRY_MAX)) { > - break; > - } > - > - // > - // Retry when Redfish service is not ready. > - // > - if ((Response->StatusCode !=3D NULL)) { > - DEBUG_CODE ( > - DumpRedfishResponse (NULL, DEBUG_ERROR, Response); > - ); > - > - if (*Response->StatusCode !=3D > HTTP_STATUS_500_INTERNAL_SERVER_ERROR) { > - break; > - } > - > - FreePool (Response->StatusCode); > - Response->StatusCode =3D 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 !=3D NULL) { > - RedfishFreeResponse ( > - NULL, > - 0, > - NULL, > - Response->Payload > - ); > - Response->Payload =3D NULL; > - } > - > - goto ON_RELEASE; > - } > - > - // > - // Keep response in cache list > - // > - Status =3D 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 !=3D 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 =3D=3D NULL) { > - return EFI_NOT_READY; > - } > - > - CacheData =3D FindHttpCacheData (&mRedfishHttpCachePrivate- > >CacheList.Head, Uri); > - if (CacheData =3D=3D 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 =3D AllocateZeroPool (sizeof > (REDFISH_HTTP_CACHE_PRIVATE)); > - if (mRedfishHttpCachePrivate =3D=3D NULL) { > - return EFI_OUT_OF_RESOURCES; > - } > - > - // > - // Initial cache list > - // > - mRedfishHttpCachePrivate->CacheList.Capacity =3D > REDFISH_HTTP_CACHE_LIST_SIZE; > - mRedfishHttpCachePrivate->CacheList.Count =3D 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 !=3D NULL) { > - if (!IsListEmpty (&mRedfishHttpCachePrivate->CacheList.Head)) { > - ReleaseCacheList (&mRedfishHttpCachePrivate->CacheList); > - } > - > - FreePool (mRedfishHttpCachePrivate); > - mRedfishHttpCachePrivate =3D NULL; > - } > - > - return EFI_SUCCESS; > -} > -- > 2.34.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- 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] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-