initial commit

This commit is contained in:
2025-08-05 15:53:44 +08:00
commit 09dc02ae52
553 changed files with 137665 additions and 0 deletions

2
mw/tcpserver/config.mk Executable file
View File

@@ -0,0 +1,2 @@
CORE_SRCDIRS += $(MW_DIR)/tcpserver
FUSION_HEADERS += $(MW_DIR)/tcpserver/*.h

64
mw/tcpserver/mw_tcpserver.c Executable file
View File

@@ -0,0 +1,64 @@
/*************************************************
File name : mw_tcpserver.h
Module :
Author : amir
Version : 0.1
Created on : 2024-10-10
Description :
Data structure and function definitions required by the socket interface
Modify History:
1. Date: Author: Modification:
*************************************************/
#include "hthread.h"
#include "mw_tcpserver.h"
#include "hlog.h"
#include "hbase.h"
#include "hsocket.h"
#include "hloop.h"
#include "hevent.h"
static void on_close(hio_t* io) {
hlogd("on_close fd=%d error=%d\n", hio_fd(io), hio_error(io));
}
static void on_recv(hio_t* io, void* buf, int readbytes) {
hlogd("on_recv fd=%d readbytes=%d\n", hio_fd(io), readbytes);
char localaddrstr[SOCKADDR_STRLEN] = {0};
char peeraddrstr[SOCKADDR_STRLEN] = {0};
hlogd("[%s] <=> [%s]\n",
SOCKADDR_STR(hio_localaddr(io), localaddrstr),
SOCKADDR_STR(hio_peeraddr(io), peeraddrstr));
hlogd("< %.*s", readbytes, (char*)buf);
// echo
hlogd("> %.*s", readbytes, (char*)buf);
hio_write(io, buf, readbytes);
}
static void on_accept(hio_t* io) {
hlogd("on_accept connfd=%d\n", hio_fd(io));
char localaddrstr[SOCKADDR_STRLEN] = {0};
char peeraddrstr[SOCKADDR_STRLEN] = {0};
hlogd("accept connfd=%d [%s] <= [%s]\n", hio_fd(io),
SOCKADDR_STR(hio_localaddr(io), localaddrstr),
SOCKADDR_STR(hio_peeraddr(io), peeraddrstr));
hio_setcb_close(io, on_close);
hio_setcb_read(io, on_recv);
hio_read_start(io);
}
void tcpserver_test(){
const char* host = "0.0.0.0";
int port = 8888;
hloop_t* loop = hloop_new(0);
hio_t* listenio = hloop_create_tcp_server(loop, host, port, on_accept);
hlogd("listenfd=%d\n", hio_fd(listenio));
hloop_run(loop);
hloop_free(&loop);
}

35
mw/tcpserver/mw_tcpserver.h Executable file
View File

@@ -0,0 +1,35 @@
#ifndef __MW_TCPSERVER__
#define __MW_TCPSERVER__
#include <stdint.h>
#include "list.h"
#include "kpacket.h"
#include "json_packet.h"
#include "hloop.h"
#include "hbase.h"
#include "hthread.h"
typedef struct tcpserver{
int8_t status;// 'I' idle(initial), 'R' running, 'E' exit
hloop_t *loop;
int16_t stack_size;
iobuffer read_iobuf;
hthread_t th;
hio_t *hio; /*连接的hio, 如果多个则自动选择, 最快那个*/
}tcpserver;
tcpserver *tcpserver_init(int stack_size);
/**
* 支持多个连接同时发起, 最快连接上的会close掉后面连接的
**/
int32_t tcpserver_deinit(tcpserver *tclient);
void tcpserver_test();
#endif /* __MW_TCPSERVER__ */