Browse Source

update

master
zhaohe 2 years ago
parent
commit
c365021ed5
  1. 2
      libxsync
  2. 46
      mainwindow.cpp
  3. 7
      mainwindow.h
  4. 5
      src/logger.hpp
  5. 9
      src/main.cpp
  6. 56
      src/xsync_udp_factory_impl.cpp
  7. 4
      src/xsync_udp_factory_impl.hpp

2
libxsync

@ -1 +1 @@
Subproject commit 5e99b7c334eae1657ea128754db0d5cd04849c7d
Subproject commit 33e27f52d366381c5ef5647020a36b7cb2c5b190

46
mainwindow.cpp

@ -4,6 +4,7 @@
#include "./ui_mainwindow.h"
#include "src/logger.hpp"
#include "src/xsync_udp_factory_impl.hpp"
using namespace iflytop;
using namespace std;
@ -17,9 +18,7 @@ void MainWindow::log_output(QtMsgType type, const QMessageLogContext &context, c
m_mainWindow->append_log_signal(text);
}
void MainWindow::append_log_slot(QString text) {
ui->logbrowser->append(text);
}
void MainWindow::append_log_slot(QString text) { ui->logbrowser->append(text); }
void MainWindow::push_reg(QWidget *parent, int off, const char *regname, int32_t regadd, int32_t rwflag) {
DispalyRegIterm *regitem = new DispalyRegIterm();
@ -104,16 +103,39 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
connect(this, SIGNAL(append_log_signal(QString)), this, SLOT(append_log_slot(QString)));
qInstallMessageHandler(log_output);
m_thread.reset(new ZQThread("test", [this]() {
while (true) {
ZLOGI(TAG, "start1");
ZLOGI(TAG, "start2");
ZLOGI(TAG, "start3");
ZLOGI(TAG, "start4");
QThread::sleep(1);
}
}));
m_thread.reset(new ZQThread("test", [this]() { mainWindowsRun(); }));
m_thread->start();
}
MainWindow::~MainWindow() { delete ui; }
#define XS_ASSERT(exptr) \
{ \
auto ecode = exptr; \
while (!(ecode == kxs_ec_success)) { \
ZLOGE(TAG, "do: %s fail,ecode:%d", #exptr, ecode); \
ZQThread::sleep(1); \
} \
}
void MainWindow::mainWindowsRun() { //
XSyncUdpFactoryImpl::Ins()->initialize();
auto xsudp = XSyncUdpFactoryImpl::Ins()->createXSUDP();
XS_ASSERT(xsudp->initialize("0.0.0.0", 9999));
while (true) {
XS_ASSERT(xsudp->sendto(XsyncNetAdd("127.0.0.1", 9973), "hello\n", 5, NULL));
ZQThread::sleep(1);
XsyncNetAdd from;
char rxcache[1024] = {0};
int rxlength = 1024;
auto ecode = xsudp->receive(rxcache, rxlength, from, 5000);
if (ecode == kxs_ec_success) {
ZLOGI(TAG, "receive from %s:%d %s(%d)", from.ip.c_str(), from.port, rxcache, rxlength);
} else {
ZLOGE(TAG, "receive fail,ecode:%d,%d", ecode, rxlength);
}
}
}

7
mainwindow.h

@ -66,8 +66,13 @@ class MainWindow : public QMainWindow {
*******************************************************************************/
static void log_output(QtMsgType type, const QMessageLogContext &context, const QString &msg);
private slots:
void append_log_slot(QString );
void append_log_slot(QString);
signals:
void append_log_signal(QString str);
private:
void mainWindowsRun();
};
#endif // MAINWINDOW_H

5
src/logger.hpp

@ -9,3 +9,8 @@ int32_t zos_get_ticket();
#define ZLOGD(TAG, fmt, ...) zos_log("%08lu DEBU [%-10s] " fmt "", zos_get_ticket(), TAG, ##__VA_ARGS__);
#define ZLOGE(TAG, fmt, ...) zos_log("%08lu ERRO [%-10s] " fmt "", zos_get_ticket(), TAG, ##__VA_ARGS__);
#define ZLOGW(TAG, fmt, ...) zos_log("%08lu WARN [%-10s] " fmt "", zos_get_ticket(), TAG, ##__VA_ARGS__);
#define ZASSERT(cond) \
if (!(cond)) { \
ZLOGE("ASSERT", "condition: %s", #cond); \
exit(-1); \
}

9
src/main.cpp

@ -20,12 +20,19 @@
#include "logger.hpp"
#include "mainwindow.h"
//
#include <winsock2.h>
//
#include <Windows.h>
//
#define TAG "Main"
using namespace std;
QT_CHARTS_USE_NAMESPACE
int main(int argc, char *argv[]) {
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
QApplication a(argc, argv);
MainWindow w;
w.show();

56
src/xsync_udp_factory_impl.cpp

@ -14,10 +14,16 @@ class XSUDP : public I_XSUDP {
public:
virtual xs_error_code_t initialize(string ip, int localport) override;
virtual xs_error_code_t sendto(const XsyncNetAdd& to, const char* data, int32_t length) override;
virtual xs_error_code_t receive(const char* data, int32_t length, XsyncNetAdd& from, int overtimems) override;
virtual xs_error_code_t sendto(const XsyncNetAdd& to, const char* data, int32_t length, int32_t* sendlength) override;
virtual xs_error_code_t receive(char* data, int32_t& length, XsyncNetAdd& from, int overtimems) override;
};
const char* fmtip(uint32_t ip) {
static char ipstr[16];
sprintf(ipstr, "%d.%d.%d.%d", (ip >> 24) & 0xff, (ip >> 16) & 0xff, (ip >> 8) & 0xff, ip & 0xff);
return ipstr;
}
xs_error_code_t XSUDP::initialize(string ip, int localport) {
localadd.sin_family = AF_INET;
localadd.sin_addr.s_addr = inet_addr(ip.c_str());
@ -32,17 +38,20 @@ xs_error_code_t XSUDP::initialize(string ip, int localport) {
return kxs_ec_success;
}
xs_error_code_t XSUDP::sendto(const XsyncNetAdd& to, const char* data, int32_t length) {
xs_error_code_t XSUDP::sendto(const XsyncNetAdd& to, const char* data, int32_t length, int32_t* sendlength) {
struct sockaddr_in sockaddr;
sockaddr.sin_family = AF_INET;
sockaddr.sin_addr.s_addr = htonl(to.ip);
sockaddr.sin_addr.s_addr = inet_addr(to.ip.c_str());
sockaddr.sin_port = htons(to.port);
int ret = ::sendto(m_sock_fd, data, length, 0, (struct sockaddr*)&sockaddr, sizeof(sockaddr));
if (ret != length) return kxs_ec_send_fail;
if (sendlength) *sendlength = ret;
if (ret >= 0) {
return kxs_ec_success;
}
return kxs_ec_send_fail;
}
xs_error_code_t XSUDP::receive(const char* data, int32_t length, XsyncNetAdd& from, int overtimems) {
struct sockaddr_in sockaddr;
xs_error_code_t XSUDP::receive(char* data, int32_t& length, XsyncNetAdd& from, int overtimems) {
struct sockaddr_in sockaddr = {0};
timeval timeout;
timeout.tv_sec = overtimems;
@ -51,12 +60,25 @@ xs_error_code_t XSUDP::receive(const char* data, int32_t length, XsyncNetAdd& fr
return kxs_ec_setsockopt_rx_timeout_fail;
}
sockaddr.sin_family = AF_INET;
sockaddr.sin_addr.s_addr = htonl(from.ip);
sockaddr.sin_port = htons(from.port);
// sockaddr.sin_family = AF_INET;
// sockaddr.sin_addr.s_addr = inet_addr(from.ip.c_str());
// sockaddr.sin_port = htons(from.port);
int senderAddressLen = sizeof(sockaddr);
int ret = ::recvfrom(m_sock_fd, (char*)data, length, 0, (struct sockaddr*)&sockaddr, &senderAddressLen);
if (ret != length) return kxs_ec_receive_fail;
length = ret;
if (ret < 0) {
if (errno == EWOULDBLOCK || errno == EAGAIN) {
return kxs_ec_overtime;
} else {
return kxs_ec_receive_fail;
}
}
// inet_ntop(AF_INET, &(sockaddr.sin_addr), ip, INET_ADDRSTRLEN);
uint32_t ip = ntohl(sockaddr.sin_addr.s_addr);
from.ip = string(fmtip(ip));
from.port = ntohs(sockaddr.sin_port);
return kxs_ec_success;
}
@ -64,13 +86,11 @@ xs_error_code_t XSUDP::receive(const char* data, int32_t length, XsyncNetAdd& fr
* xSyncUdpFactoryImpl *
*******************************************************************************/
void XSyncUdpFactoryImpl::initialize() {
static bool isInit = false;
if (!isInit) {
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
isInit = true;
}
void XSyncUdpFactoryImpl::initialize() {}
XSyncUdpFactoryImpl* XSyncUdpFactoryImpl::Ins() {
static XSyncUdpFactoryImpl instance;
return &instance;
}
shared_ptr<I_XSUDPListener> XSyncUdpFactoryImpl::createXSUDPListener() { return nullptr; }

4
src/xsync_udp_factory_impl.hpp

@ -17,7 +17,11 @@ using namespace std;
class XSyncUdpFactoryImpl : public I_XSyncUDPFactory {
private:
/* data */
XSyncUdpFactoryImpl(){};
public:
static XSyncUdpFactoryImpl* Ins();
void initialize();
virtual shared_ptr<I_XSUDPListener> createXSUDPListener() override;
virtual shared_ptr<I_XSUDP> createXSUDP() override;

Loading…
Cancel
Save