]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdePkg: Add EFI REST Protocol definitions
authorHao Wu <hao.a.wu@intel.com>
Wed, 10 Jun 2015 02:52:42 +0000 (02:52 +0000)
committerhwu1225 <hwu1225@Edk2>
Wed, 10 Jun 2015 02:52:42 +0000 (02:52 +0000)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17605 6f19259b-4bc3-4df7-8a09-765794883524

MdePkg/Include/Protocol/Rest.h [new file with mode: 0644]
MdePkg/MdePkg.dec

diff --git a/MdePkg/Include/Protocol/Rest.h b/MdePkg/Include/Protocol/Rest.h
new file mode 100644 (file)
index 0000000..f3bee6c
--- /dev/null
@@ -0,0 +1,94 @@
+/** @file\r
+  This file defines the EFI REST Protocol interface.\r
+\r
+  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
+  This program and the accompanying materials\r
+  are licensed and made available under the terms and conditions of the BSD License\r
+  which accompanies this distribution. The full text of the license may be found at\r
+  http://opensource.org/licenses/bsd-license.php\r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+  @par Revision Reference:\r
+  This Protocol is introduced in UEFI Specification 2.5\r
+\r
+**/\r
+\r
+#ifndef __EFI_REST_PROTOCOL_H__\r
+#define __EFI_REST_PROTOCOL_H__\r
+\r
+#include <Protocol/Http.h>\r
+\r
+#define EFI_REST_PROTOCOL_GUID \\r
+  { \\r
+    0x0db48a36, 0x4e54, 0xea9c, {0x9b, 0x09, 0x1e, 0xa5, 0xbe, 0x3a, 0x66, 0x0b } \\r
+  }\r
+\r
+typedef struct _EFI_REST_PROTOCOL EFI_REST_PROTOCOL;\r
+\r
+/**\r
+  Provides a simple HTTP-like interface to send and receive resources from a REST\r
+  service.\r
+\r
+  The SendReceive() function sends an HTTP request to this REST service, and returns a\r
+  response when the data is retrieved from the service. RequestMessage contains the HTTP\r
+  request to the REST resource identified by RequestMessage.Request.Url. The\r
+  ResponseMessage is the returned HTTP response for that request, including any HTTP\r
+  status.\r
+\r
+  @param[in]  This                Pointer to EFI_REST_PROTOCOL instance for a particular\r
+                                  REST service.\r
+  @param[in]  RequestMessage      Pointer to the HTTP request data for this resource.\r
+  @param[out] ResponseMessage     Pointer to the HTTP response data obtained for this\r
+                                  requested.\r
+\r
+  @retval EFI_SUCCESS             Operation succeeded.\r
+  @retval EFI_INVALID_PARAMETER   This, RequestMessage, or ResponseMessage are NULL.\r
+  @retval EFI_DEVICE_ERROR        An unexpected system or network error occurred.\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_REST_SEND_RECEIVE) (\r
+  IN  EFI_REST_PROTOCOL         *This,\r
+  IN  EFI_HTTP_MESSAGE          *RequestMessage,\r
+  OUT EFI_HTTP_MESSAGE          *ResponseMessage\r
+  );\r
+\r
+/**\r
+  The GetServiceTime() function is an optional interface to obtain the current time from\r
+  this REST service instance. If this REST service does not support retrieving the time,\r
+  this function returns EFI_UNSUPPORTED.\r
+\r
+  @param[in]  This                Pointer to EFI_REST_PROTOCOL instance.\r
+  @param[out] Time                A pointer to storage to receive a snapshot of the\r
+                                  current time of the REST service.\r
+\r
+  @retval EFI_SUCCESS             Operation succeeded\r
+  @retval EFI_INVALID_PARAMETER   This or Time are NULL.\r
+  @retval EFI_UNSUPPORTED         The RESTful service does not support returning the\r
+                                  time.\r
+  @retval EFI_DEVICE_ERROR        An unexpected system or network error occurred.\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_REST_GET_TIME) (\r
+  IN  EFI_REST_PROTOCOL         *This,\r
+  OUT EFI_TIME                  *Time\r
+  );\r
+\r
+///\r
+/// The EFI REST protocol is designed to be used by EFI drivers and applications to send\r
+/// and receive resources from a RESTful service. This protocol abstracts REST\r
+/// (Representational State Transfer) client functionality. This EFI protocol could be\r
+/// implemented to use an underlying EFI HTTP protocol, or it could rely on other\r
+/// interfaces that abstract HTTP access to the resources.\r
+///\r
+struct _EFI_REST_PROTOCOL {\r
+  EFI_REST_SEND_RECEIVE         SendReceive;\r
+  EFI_REST_GET_TIME             GetServiceTime;\r
+};\r
+\r
+extern EFI_GUID gEfiRestProtocolGuid;\r
+\r
+#endif\r
index 16b522d93a2022c49df5ccde518873ce2e661566..29d7e1126aebfd7fb2c34693dc38e93090c52634 100644 (file)
   ## Include/Protocol/Http.h\r
   gEfiHttpProtocolGuid                 = { 0x7a59b29b, 0x910b, 0x4171, {0x82, 0x42, 0xa8, 0x5a, 0x0d, 0xf2, 0x5b, 0x5b }}\r
 \r
+  ## Include/Protocol/Rest.h\r
+  gEfiRestProtocolGuid                 =  { 0x0db48a36, 0x4e54, 0xea9c, {0x9b, 0x09, 0x1e, 0xa5, 0xbe, 0x3a, 0x66, 0x0b }}\r
+\r
 #\r
 # [Error.gEfiMdePkgTokenSpaceGuid]\r
 #   0x80000001 | Invalid value provided.\r