wangzhengquan
2020-11-26 aa515539d6b88d5270c7dd435e54471edb7d6749
udpate
1个文件已删除
1个文件已添加
1 文件已重命名
202 ■■■■ 已修改文件
src/socket/mod_socket.h 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/socket/shm_stream_mod_socket.c 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/socket/shm_stream_mod_socket.h 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/socket/mod_socket.h
File was deleted
src/socket/shm_stream_mod_socket.c
File was renamed from src/socket/mod_socket.c
@@ -1,5 +1,5 @@
#include "usg_common.h"
#include "mod_socket.h"
#include "shm_stream_mod_socket.h"
#include "shm_socket.h"
#include "shm_allocator.h"
#include "mem_pool.h"
@@ -16,7 +16,7 @@
    shm_socket_t *client_socket;
}mod_entry_t;
typedef struct mod_socket_t {
typedef struct shm_stream_mod_socket_t {
  socket_mod_t mod;
  shm_socket_t *shm_socket;
  shm_socket_t *client_socket;
@@ -26,13 +26,13 @@
  int items;
  
} mod_socket_t;
} shm_stream_mod_socket_t;
/**
 * 
 */
void *mod_open_socket(int mod) {
  mod_socket_t *socket = (mod_socket_t *)malloc(sizeof(mod_socket_t));
void *shm_stream_mod_socket_open(int mod) {
  shm_stream_mod_socket_t *socket = (shm_stream_mod_socket_t *)malloc(sizeof(shm_stream_mod_socket_t));
  socket->shm_socket=shm_open_socket(SHM_SOCKET_STREAM);
  socket->is_server = 0;
  socket->mod = (socket_mod_t)mod;
@@ -47,8 +47,8 @@
int mod_close_socket(void * _socket){
    mod_socket_t * socket = (mod_socket_t *) _socket;
int shm_stream_mod_socket_close(void * _socket){
    shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket;
    if (socket->mod == REQ_REP) {
        SemUtil::remove(socket->slots);
@@ -63,14 +63,14 @@
int mod_socket_bind(void * _socket, int port){
    mod_socket_t * socket = (mod_socket_t *) _socket;
int shm_stream_mod_socket_bind(void * _socket, int port){
    shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket;
    return  shm_socket_bind(socket->shm_socket, port);
}
void * run_server_recv_client_msg(void *_socket) {
    pthread_detach(pthread_self());
    mod_socket_t * socket = (mod_socket_t *) _socket;
    shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket;
    shm_socket_t * client_socket = socket->client_socket;
    mod_entry_t entry;
@@ -88,23 +88,23 @@
}
void *run_accept_connection(void * _socket) {
    mod_socket_t * socket = (mod_socket_t *) _socket;
    shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket;
    shm_socket_t *client_socket;
    pthread_t tid;
    while(socket->shm_socket->status == SHM_CONN_LISTEN) {
        //接受客户端的连接请求
        client_socket = shm_accept(socket->shm_socket);
        
        mod_socket_t *arg = (mod_socket_t *)malloc(sizeof(mod_socket_t));
        memcpy(arg, _socket, sizeof(mod_socket_t));
        shm_stream_mod_socket_t *arg = (shm_stream_mod_socket_t *)malloc(sizeof(shm_stream_mod_socket_t));
        memcpy(arg, _socket, sizeof(shm_stream_mod_socket_t));
        arg->client_socket = client_socket;
        pthread_create(&tid, NULL, run_server_recv_client_msg , (void *)arg);
    }
    return NULL;
}
int mod_listen(void * _socket) {
    mod_socket_t * socket = (mod_socket_t *) _socket;
int shm_stream_mod_socket_listen(void * _socket) {
    shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket;
    pthread_t tid;
    socket->is_server = 1;
    int rv = shm_listen(socket->shm_socket);
@@ -116,14 +116,14 @@
}
int mod_connect(void * _socket, int port) {
    mod_socket_t * socket = (mod_socket_t *) _socket;
int shm_stream_mod_socket_connect(void * _socket, int port) {
    shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket;
    return shm_connect(socket->shm_socket, port);
}
int mod_send(void * _socket, const void *buf, const int size) {
    mod_socket_t * socket = (mod_socket_t *) _socket;
int shm_stream_mod_socket_send(void * _socket, const void *buf, const int size) {
    shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket;
    std::map<int, shm_socket_t* > *clientSocketMap = socket->shm_socket->clientSocketMap;
    std::map<int, shm_socket_t* >::iterator iter;
    int rv;
@@ -154,8 +154,8 @@
    
}
int mod_recv(void * _socket, void **buf, int *size) {
    mod_socket_t * socket = (mod_socket_t *) _socket;
int shm_stream_mod_socket_recv(void * _socket, void **buf, int *size) {
    shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket;
    mod_entry_t entry;
    if(socket->is_server ) {
@@ -189,13 +189,13 @@
    return -1;
}
int mod_get_socket_port(void * _socket) {
    mod_socket_t * socket = (mod_socket_t *) _socket;
int shm_stream_mod_socket_get_port(void * _socket) {
    shm_stream_mod_socket_t * socket = (shm_stream_mod_socket_t *) _socket;
    return socket->shm_socket->port;
}
void mod_free(void *buf) {
void shm_stream_mod_socket_free(void *buf) {
    free(buf);
}
src/socket/shm_stream_mod_socket.h
New file
@@ -0,0 +1,77 @@
#ifndef __shm_stream_mod_socket_SOCKET_H__
#define __shm_stream_mod_socket_SOCKET_H__
#ifdef __cplusplus
extern "C" {
#endif
enum socket_mod_t
{
    PULL_PUSH = 1,
    REQ_REP = 2,
    PAIR = 3,
    PUB_SUB = 4,
    SURVEY = 5,
    BUS = 6
};
/**
 * 创建socket
 * @return socket地址
*/
void *shm_stream_mod_socket_open(int mod);
/**
 * 关闭socket
 * @return 0 成功, 其他值 失败的错误码
*/
int shm_stream_mod_socket_close(void * _socket);
/**
 * 绑定端口到socket, 如果不绑定则系统自动分配一个
 * @return 0 成功, 其他值 失败的错误码
*/
int shm_stream_mod_socket_bind(void * _socket, int port);
/**
 * 服务端开启连接监听
 * @return 0 成功, 其他值 失败的错误码
 */
int shm_stream_mod_socket_listen(void * _socket);
/**
 * 客户端发起连接请求
 */
int shm_stream_mod_socket_connect(void * _socket, int port);
/**
 * 发送信息
 * @return 0 成功, 其他值 失败的错误码
 */
int shm_stream_mod_socket_send(void * _socket, const void *buf, const int size);
/**
 * 接收信息
 * @return 0 成功, 其他值 失败的错误码
*/
int shm_stream_mod_socket_recv(void * _socket, void **buf, int *size) ;
/**
 * 释放存储接收信息的buf
 */
void shm_stream_mod_socket_free(void *buf);
/**
 * 获取soket端口号
 */
int shm_stream_mod_socket_get_port(void * _socket);
#ifdef __cplusplus
}
#endif
#endif