1 #pragma once
2 
3 #include <cstdint>
4 #include <string>
5 
6 namespace pldm
7 {
8 namespace responder
9 {
10 namespace utils
11 {
12 
13 /** @brief Setup UNIX socket
14  *  This function creates listening socket in non-blocking mode and allows only
15  *  one socket connection. returns accepted socket after accepting connection
16  *  from peer.
17  *
18  *  @param[in] socketInterface - unix socket path
19  *  @return   on success returns accepted socket fd
20  *            on failure returns -1
21  */
22 int setupUnixSocket(const std::string& socketInterface);
23 
24 /** @brief Write data on UNIX socket
25  *  This function writes given data to a non-blocking socket.
26  *  Irrespective of block size, this function make sure of writing given data
27  *  on unix socket.
28  *
29  *  @param[in] sock - unix socket
30  *  @param[in] buf -  data buffer
31  *  @param[in] blockSize - size of data to write
32  *  @return   on success retruns  0
33  *            on failure returns -1
34 
35  */
36 int writeToUnixSocket(const int sock, const char* buf,
37                       const uint64_t blockSize);
38 
39 /** @brief checks if given FRU is IBM specific
40  *
41  *  @param[in] objPath - FRU object path
42  *
43  *  @return bool - true if IBM specific FRU
44  */
45 bool checkIfIBMFru(const std::string& objPath);
46 
47 } // namespace utils
48 } // namespace responder
49 } // namespace pldm
50