Revision: 18259
          http://sourceforge.net/p/edk2/code/18259
Author:   jiaxinwu
Date:     2015-08-24 01:23:50 +0000 (Mon, 24 Aug 2015)
Log Message:
-----------
MdePkg: Add header file for HTTP utilities protocol

This patch is used to add header files for HTTP utilities protocol.

Cc: Ye Ting <[email protected]>
Cc: Siyuan Fu <[email protected]>
Cc: Liming Gao <[email protected]>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jiaxin Wu <[email protected]>
Reviewed-by: Ye Ting <[email protected]>
Reviewed-by: Samer El-Haj-Mahmoud <[email protected]>

Modified Paths:
--------------
    trunk/edk2/MdePkg/MdePkg.dec

Added Paths:
-----------
    trunk/edk2/MdePkg/Include/Protocol/HttpUtilities.h

Added: trunk/edk2/MdePkg/Include/Protocol/HttpUtilities.h
===================================================================
--- trunk/edk2/MdePkg/Include/Protocol/HttpUtilities.h                          
(rev 0)
+++ trunk/edk2/MdePkg/Include/Protocol/HttpUtilities.h  2015-08-24 01:23:50 UTC 
(rev 18259)
@@ -0,0 +1,124 @@
+/** @file
+  EFI HTTP Utilities protocol provides a platform independent abstraction for 
HTTP
+  message comprehension.
+
+  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
+  This program and the accompanying materials
+  are licensed and made available under the terms and conditions of the BSD 
License
+  which accompanies this distribution. The full text of the license may be 
found at
+  http://opensource.org/licenses/bsd-license.php
+
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+  @par Revision Reference:
+  This Protocol is introduced in UEFI Specification 2.5
+
+**/
+
+#ifndef __EFI_HTTP_UTILITIES_PROTOCOL_H__
+#define __EFI_HTTP_UTILITIES_PROTOCOL_H__
+
+#include <Protocol/Http.h>
+
+#define EFI_HTTP_UTILITIES_PROTOCOL_GUID  \
+  { \
+    0x3e35c163, 0x4074, 0x45dd, {0x43, 0x1e, 0x23, 0x98, 0x9d, 0xd8, 0x6b, 
0x32 } \
+  }
+
+typedef struct _EFI_HTTP_UTILITIES_PROTOCOL EFI_HTTP_UTILITIES_PROTOCOL;
+
+
+/**
+  Create HTTP header based on a combination of seed header, fields
+  to delete, and fields to append.
+
+  The Build() function is used to manage the headers portion of an
+  HTTP message by providing the ability to add, remove, or replace
+  HTTP headers.
+
+  @param[in]  This                Pointer to EFI_HTTP_UTILITIES_PROTOCOL 
instance.
+  @param[in]  SeedMessageSize     Size of the initial HTTP header. This can be 
zero.
+  @param[in]  SeedMessage         Initial HTTP header to be used as a base for
+                                  building a new HTTP header. If NULL,
+                                  SeedMessageSize is ignored.
+  @param[in]  DeleteCount         Number of null-terminated HTTP header field 
names
+                                  in DeleteList.
+  @param[in]  DeleteList          List of null-terminated HTTP header field 
names to
+                                  remove from SeedMessage. Only the field 
names are
+                                  in this list because the field values are 
irrelevant
+                                  to this operation.
+  @param[in]  AppendCount         Number of header fields in AppendList.
+  @param[in]  AppendList          List of HTTP headers to populate NewMessage 
with.
+                                  If SeedMessage is not NULL, AppendList will 
be
+                                  appended to the existing list from 
SeedMessage in
+                                  NewMessage.
+  @param[out] NewMessageSize      Pointer to number of header fields in 
NewMessage.
+  @param[out] NewMessage          Pointer to a new list of HTTP headers based 
on.
+
+  @retval EFI_SUCCESS             Add, remove, and replace operations 
succeeded.
+  @retval EFI_OUT_OF_RESOURCES    Could not allocate memory for NewMessage.
+  @retval EFI_INVALID_PARAMETER   One or more of the following conditions is 
TRUE:
+                                  This is NULL.
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_HTTP_UTILS_BUILD) (
+  IN  EFI_HTTP_UTILITIES_PROTOCOL  *This,
+  IN  UINTN                        SeedMessageSize,
+  IN  VOID                         *SeedMessage,   OPTIONAL
+  IN  UINTN                        DeleteCount,
+  IN  CHAR8                        *DeleteList[],  OPTIONAL
+  IN  UINTN                        AppendCount,
+  IN  EFI_HTTP_HEADER              *AppendList[],  OPTIONAL
+  OUT UINTN                        *NewMessageSize,
+  OUT VOID                         **NewMessage
+  );
+
+/**
+  Parses HTTP header and produces an array of key/value pairs.
+
+  The Parse() function is used to transform data stored in HttpHeader
+  into a list of fields paired with their corresponding values.
+
+  @param[in]  This                Pointer to EFI_HTTP_UTILITIES_PROTOCOL 
instance.
+  @param[in]  HttpMessage         Contains raw unformatted HTTP header string.
+  @param[in]  HttpMessageSize     Size of HTTP header.
+  @param[out] HeaderFields        Array of key/value header pairs.
+  @param[out] FieldCount          Number of headers in HeaderFields.
+
+  @retval EFI_SUCCESS             Allocation succeeded.
+  @retval EFI_NOT_STARTED         This EFI HTTP Protocol instance has not been
+                                  initialized.
+  @retval EFI_INVALID_PARAMETER   One or more of the following conditions is 
TRUE:
+                                  This is NULL.
+                                  HttpMessage is NULL.
+                                  HeaderFields is NULL.
+                                  FieldCount is NULL.
+**/
+typedef
+EFI_STATUS
+(EFIAPI *EFI_HTTP_UTILS_PARSE) (
+  IN  EFI_HTTP_UTILITIES_PROTOCOL  *This,
+  IN  CHAR8                        *HttpMessage,
+  IN  UINTN                        HttpMessageSize,
+  OUT EFI_HTTP_HEADER              **HeaderFields,
+  OUT UINTN                        *FieldCount
+  );
+
+
+///
+/// EFI_HTTP_UTILITIES_PROTOCOL
+/// designed to be used by EFI drivers and applications to parse HTTP
+/// headers from a byte stream. This driver is neither dependent on
+/// network connectivity, nor the existence of an underlying network
+/// infrastructure.
+///
+struct _EFI_HTTP_UTILITIES_PROTOCOL {
+  EFI_HTTP_UTILS_BUILD          Build;
+  EFI_HTTP_UTILS_PARSE          Parse;
+};
+
+extern EFI_GUID gEfiHttpUtilitiesProtocolGuid;
+
+#endif

Modified: trunk/edk2/MdePkg/MdePkg.dec
===================================================================
--- trunk/edk2/MdePkg/MdePkg.dec        2015-08-23 01:44:15 UTC (rev 18258)
+++ trunk/edk2/MdePkg/MdePkg.dec        2015-08-24 01:23:50 UTC (rev 18259)
@@ -1577,6 +1577,9 @@
   ## Include/Protocol/Http.h
   gEfiHttpProtocolGuid                 = { 0x7a59b29b, 0x910b, 0x4171, {0x82, 
0x42, 0xa8, 0x5a, 0x0d, 0xf2, 0x5b, 0x5b }}
 
+  ## Include/Protocol/HttpUtilities.h
+  gEfiHttpUtilitiesProtocolGuid        = { 0x3e35c163, 0x4074, 0x45dd, {0x43, 
0x1e, 0x23, 0x98, 0x9d, 0xd8, 0x6b, 0x32 }}
+
   ## Include/Protocol/Rest.h
   gEfiRestProtocolGuid                 =  { 0x0db48a36, 0x4e54, 0xea9c, {0x9b, 
0x09, 0x1e, 0xa5, 0xbe, 0x3a, 0x66, 0x0b }}
 


------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to