1/** @file 2 The function declaration that provided for Socket Interface. 3 4 Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR> 5 6 This program and the accompanying materials 7 are licensed and made available under the terms and conditions of the BSD License 8 which accompanies this distribution. The full text of the license may be found at 9 http://opensource.org/licenses/bsd-license.php. 10 11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 13 14**/ 15 16#ifndef _SOCK_IMPL_H_ 17#define _SOCK_IMPL_H_ 18 19#include "Socket.h" 20 21/** 22 Signal a event with the given status. 23 24 @param[in] Token The token's event is to be signaled. 25 @param[in] TokenStatus The status to be sent with the event. 26 27**/ 28#define SIGNAL_TOKEN(Token, TokenStatus) \ 29 do { \ 30 (Token)->Status = (TokenStatus); \ 31 gBS->SignalEvent ((Token)->Event); \ 32 } while (0) 33 34#define SOCK_HEADER_SPACE (60 + 60 + 72) 35 36/** 37 Process the TCP send data, buffer the tcp txdata and append 38 the buffer to socket send buffer, then try to send it. 39 40 @param[in] Sock Pointer to the socket. 41 @param[in] TcpTxData Pointer to the application provided send buffer. 42 43 @retval EFI_SUCCESS The operation completed successfully. 44 @retval EFI_OUT_OF_RESOURCES Failed due to resource limits. 45 46**/ 47EFI_STATUS 48SockProcessTcpSndData ( 49 IN SOCKET *Sock, 50 IN VOID *TcpTxData 51 ); 52 53/** 54 Get received data from the socket layer to the receive token. 55 56 @param[in, out] Sock Pointer to the socket. 57 @param[in, out] RcvToken Pointer to the application provided receive token. 58 59 @return The length of data received in this token. 60 61**/ 62UINT32 63SockProcessRcvToken ( 64 IN OUT SOCKET *Sock, 65 IN OUT SOCK_IO_TOKEN *RcvToken 66 ); 67 68/** 69 Flush the sndBuffer and rcvBuffer of socket. 70 71 @param[in, out] Sock Pointer to the socket. 72 73**/ 74VOID 75SockConnFlush ( 76 IN OUT SOCKET *Sock 77 ); 78 79/** 80 Cancel the tokens in the specific token list. 81 82 @param[in] Token Pointer to the Token. If NULL, all tokens 83 in SpecifiedTokenList will be canceled. 84 @param[in, out] SpecifiedTokenList Pointer to the token list to be checked. 85 86 @retval EFI_SUCCESS Cancel the tokens in the specific token listsuccessfully. 87 @retval EFI_NOT_FOUND The Token is not found in SpecifiedTokenList. 88 89**/ 90EFI_STATUS 91SockCancelToken ( 92 IN SOCK_COMPLETION_TOKEN *Token, 93 IN OUT LIST_ENTRY *SpecifiedTokenList 94 ); 95 96/** 97 Create a socket with initial data SockInitData. 98 99 @param[in] SockInitData Pointer to the initial data of the socket. 100 101 @return Pointer to the newly created socket, return NULL when exception occured. 102 103**/ 104SOCKET * 105SockCreate ( 106 IN SOCK_INIT_DATA *SockInitData 107 ); 108 109/** 110 Destroy a socket. 111 112 @param[in, out] Sock Pointer to the socket. 113 114**/ 115VOID 116SockDestroy ( 117 IN OUT SOCKET *Sock 118 ); 119 120#endif 121