Download include/client/TransportClientUdp.h from mhussainahmad/kortex-api: direct link, hf CLI and curl.
- Browser
- Download file 4.4 kB
-
https://huggingface.co/mhussainahmad/kortex-api/resolve/main/include/client/TransportClientUdp.h
- Command line
-
hf download hf://mhussainahmad/kortex-api/include/client/TransportClientUdp.h
-
curl -L -o TransportClientUdp.h https://huggingface.co/mhussainahmad/kortex-api/resolve/main/include/client/TransportClientUdp.h
4.4 kB
| /* *************************************************************************** | |
| * Kinova inc. | |
| * Project : | |
| * | |
| * Copyright (c) 2006-2018 Kinova Incorporated. All rights reserved. | |
| ****************************************************************************/ | |
| // ---- win ---- | |
| // --- linux --- | |
| typedef int32_t socklen_t; | |
| namespace Kinova | |
| { | |
| namespace Api | |
| { | |
| const uint32_t kApiPort = 10000; | |
| class TransportClientUdp : public ITransportClient | |
| { | |
| // Configuration m_config; | |
| bool m_isInitialized; | |
| struct sockaddr_in m_socketAddr; | |
| socklen_t m_socketAddrSize; | |
| int32_t m_socketFd; | |
| WSADATA m_wsa; | |
| bool m_isUsingRcvThread; | |
| std::atomic<bool> m_isRunning { true }; | |
| std::mutex m_sendMutex; | |
| // ---- non-blocking ---- | |
| fd_set m_original_rx; | |
| fd_set m_readfds; | |
| int numfd; | |
| struct hostent *m_host; | |
| struct timeval m_tv; | |
| // ---------------------- | |
| // 65535 - 20 (ip header) - 8 (udp header) = 65507 bytes | |
| static constexpr uint32_t kMaxTxBufferSize = 65507; | |
| static constexpr uint32_t kMaxRxBufferSize = 65507; | |
| char m_txBuffer[kMaxTxBufferSize]; | |
| char m_rxBuffer[kMaxRxBufferSize]; | |
| std::function<void (const char*, uint32_t) > m_onMessageCallback; | |
| // int32_t m_countTx; | |
| // int32_t m_countRx; | |
| // ChronoClock m_start; | |
| // ChronoClock m_elapsed; | |
| public: | |
| TransportReadyStateEnum readyState; | |
| std::thread m_receiveThread; | |
| TransportClientUdp(bool isUsingRcvThread = true); | |
| virtual ~TransportClientUdp(); | |
| virtual bool connect(std::string host = "127.0.0.1", uint32_t port = Kinova::Api::kApiPort) override; | |
| virtual void disconnect() override; | |
| virtual void send(const char* txBuffer, uint32_t txSize) override; | |
| virtual void onMessage(std::function<void (const char*, uint32_t)> callback) override; | |
| // virtual void onClose(ConnectionClose eventClose)> callback) = 0; | |
| // virtual void onError(ConnectionError error)> callback) = 0; | |
| // virtual bool isClosed() = 0; | |
| // virtual bool isClosing() = 0; | |
| // virtual bool isConnecting() = 0; | |
| // virtual bool isOpen() = 0; | |
| // virtual bool isUninitialized() = 0; | |
| virtual char* getTxBuffer(uint32_t const& allocation_size) override { return m_txBuffer; } | |
| virtual size_t getMaxTxBufferSize() override { return kMaxTxBufferSize; } | |
| // double getTimeComm(); | |
| int processReceive(long rcvTimeout_usec); | |
| int processReceive(struct timeval rcvTimeout_tv); | |
| virtual void getHostAddress(std::string &host, uint32_t &port) override { | |
| host = mHostAddress; | |
| port = mHostPort; | |
| }; | |
| private: | |
| std::string mHostAddress; | |
| uint32_t mHostPort; | |
| void receiveThread(std::atomic<bool> &program_is_running); | |
| // return value: <0 means error (-errorCode); =0 means timeout nothing received; >0 means nbr of handles ready to recvFrom | |
| int callReceiveFrom(); | |
| }; | |
| } // namespace Api | |
| } // namespace Kinova | |