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