NSUKit 1.4.0
板卡级统一交互接口
载入中...
搜索中...
未找到
tcp_interface.h
浏览该文件的文档.
1//
2// Created by 56585 on 2023/8/16.
3//
4
5#ifndef NSUKIT_TCP_INTERFACE_H
6#define NSUKIT_TCP_INTERFACE_H
7
8#include "base_itf.h"
9#include "base/c_socket.h"
10
11
12namespace nsukit {
14 protected:
16
17 float tcpTimeout = 0.;
18 std::string ipAddr = "127.0.0.1";
19 uint16_t tcpPort = 5001;
20
21 std::mutex opLock;
22
23 public:
24 TCPCmdUItf();
25
26 ~TCPCmdUItf() override;
27
32 nsukitStatus_t accept(nsuInitParam_t *param) override;
33
38 nsukitStatus_t close() override;
39
45 nsukitStatus_t set_timeout(float s) override;
46
53 nsukitStatus_t write(nsuRegAddr_t addr, nsuRegValue_t value) override;
54
61 nsukitStatus_t read(nsuRegAddr_t addr, nsuRegValue_t *buf) override;
62
68 nsukitStatus_t send_bytes(nsuBytes_t &bytes) override;
69
75 nsukitStatus_t send_bytes(nsuCharBuf_p bytes, nsuSize_t length) override;
76
83 nsukitStatus_t recv_bytes(nsuSize_t size, nsuCharBuf_p buf) override;
84 };
85
86
88 protected:
89 struct Memory {
91 bool self_alloc = true;
92 std::string error_msg{};
96 unsigned int idx;
98 std::mutex mtx;
99 };
100
101 SocketGenerator sockGen{5002, "127.0.0.1", false};
102
103 float tcpTimeout = 0.;
104 std::string ipAddr = "127.0.0.1";
105 uint16_t tcpPort = 5002;
106 uint32_t block_size = 4 * 1024 * 1024;
107
109 std::mutex opLock;
110 std::thread upload_thread;
111 std::thread download_thread;
112
113 std::map<unsigned int, Memory *> memory_dict{};
114 unsigned int memory_index = 0;
115
116 static void
117 _recv(SocketGenerator *sock, ThreadSafeEvent *stop_event, Memory *mem, uint32_t block, nsuStreamLen_t length,
118 nsuStreamLen_t offset = 0);
119
120 public:
121 TCPStreamUItf() = default;
122
123 ~TCPStreamUItf() override;
124
130 nsukitStatus_t accept(nsuInitParam_t *param) override;
131
136 nsukitStatus_t close() override;
137
143 nsukitStatus_t set_timeout(float s) override;
144
151 nsuMemory_p alloc_buffer(nsuStreamLen_t length, nsuVoidBuf_p buf = nullptr) override;
152
158 nsukitStatus_t free_buffer(nsuMemory_p fd) override;
159
166 nsuVoidBuf_p get_buffer(nsuMemory_p fd, nsuStreamLen_t length) override;
167
177 open_send(nsuChnlNum_t chnl, nsuMemory_p fd, nsuStreamLen_t length, nsuStreamLen_t offset = 0) override;
178
188 open_recv(nsuChnlNum_t chnl, nsuMemory_p fd, nsuStreamLen_t length, nsuStreamLen_t offset = 0) override;
189
196 nsukitStatus_t wait_stream(nsuMemory_p fd, float timeout = 1.) override;
197
203 nsukitStatus_t break_stream(nsuMemory_p fd) override;
204
217 stream_recv(nsuChnlNum_t chnl, nsuMemory_p fd, nsuStreamLen_t length, nsuStreamLen_t offset = 0,
218 bool(*stop_event)() = nullptr, float timeout = 5., int flag = 1) override;
219
232 stream_send(nsuChnlNum_t chnl, nsuMemory_p fd, nsuStreamLen_t length, nsuStreamLen_t offset = 0,
233 bool(*stop_event)() = nullptr, float timeout = 5., int flag = 1) override;
234 };
235}
236
237#endif //NSUKIT_TCP_INTERFACE_H
SocketGenerator sockGen
Definition: tcp_interface.h:15
std::thread download_thread
std::thread upload_thread
ThreadSafeEvent stop_event
DLLEXTERN typedef nsuSize_t nsuStreamLen_t
Definition: type.h:88
nsukitStatus_t
Definition: type.h:53
DLLEXTERN typedef size_t nsuSize_t
Definition: type.h:87
DLLEXTERN typedef void * nsuVoidBuf_p
Definition: type.h:83
#define NSU_DLLEXPORT
Definition: type.h:18
DLLEXTERN typedef void * nsuMemory_p
Definition: type.h:86
DLLEXTERN typedef char * nsuCharBuf_p
Definition: type.h:82
DLLEXTERN typedef std::vector< char > nsuBytes_t
Definition: type.h:81
DLLEXTERN typedef uint32_t nsuRegValue_t
Definition: type.h:90
DLLEXTERN typedef uint8_t nsuChnlNum_t
Definition: type.h:85
DLLEXTERN typedef uint32_t nsuRegAddr_t
Definition: type.h:89