소스 검색

ft: 模板修改

master
SisMaker 4 년 전
부모
커밋
98da80f58b
3개의 변경된 파일180개의 추가작업 그리고 38개의 파일을 삭제
  1. +150
    -0
      c_src/ePort/ePort.c
  2. +27
    -37
      c_src/ePort/ePort.cpp
  3. +3
    -1
      c_src/ePort/rebar.config

+ 150
- 0
c_src/ePort/ePort.c 파일 보기

@ -0,0 +1,150 @@
#include <stdio.h>
#include <stdint.h>
#include <stdarg.h>
#include <time.h>
#include <unistd.h>
#include <ei.h>
#define BUFF_LEN 256
bool gIsBigEndian; //
char gCmdBuff[BUFF_LEN] = {};
int gIndex = 0;
uint64_t gReqId = 0;
void DebugLog(const char *ms, ...) {
char wzLog[360] = {0};
char buffer[380] = {0};
char filename[30] = {0};
va_list args;
va_start(args, ms);
vsprintf(wzLog, ms, args);
va_end(args);
time_t now;
time(&now);
struct tm *local;
local = localtime(&now);
sprintf(filename, "./log/%04d-%02d-%02d_i5_sdk.log", local->tm_year + 1900, local->tm_mon + 1, local->tm_mday);
sprintf(buffer, "%04d-%02d-%02d %02d:%02d:%02d %s\n", local->tm_year + 1900, local->tm_mon + 1, local->tm_mday,
local->tm_hour, local->tm_min, local->tm_sec, wzLog);
FILE *file = fopen(filename, "a+");
if (file != NULL) {
fwrite(buffer, 1, strlen(buffer), file);
fclose(file);
}
return;
}
int checkEndian(void) {
union {
uint16_t i;
char c[2];
} value = {0x0102};
return value.c[0] == 1;
}
uint16_t swapByteOrder(uint16_t ui) {
ui = ((ui & 0xff00) >> 8) | ((ui & 0x00ff) << 8);
return ui;
}
int readExact(char *buf, int len) {
int i, got = 0;
do {
if ((i = read(0, buf + got, len - got)) <= 0) {
return (i);
}
got += i;
} while (got < len);
return (len);
}
int writeExact(char *buf, int len) {
int i, wrote = 0;
do {
if ((i = write(1, buf + wrote, len - wrote)) <= 0)
return (i);
wrote += i;
} while (wrote < len);
return (len);
}
int readCmd(char *buf) {
uint16_t len;
if (readExact((char *) &len, sizeof(len)) != sizeof(len))
return (-1);
if (!gIsBigEndian)
len = swapByteOrder(len);
return readExact(buf, len);
}
int writeCmd(char *buf, int len) {
uint16_t wLen = uint16_t(gIndex);
if (!gIsBigEndian)
wLen = swapByteOrder(wLen);
writeExact((char *) (&wLen), sizeof(wLen));
return writeExact(buf, len);
}
int main(void) {
gIsBigEndian = checkEndian();
DebugLog("IMY*************main00000 %d\n", 11111);
while (readCmd(gCmdBuff) > 0) {
gIndex = 0;
int arity = 0;
int version = 0;
DebugLog("IMY*************while11111 %s\n", gCmdBuff);
ei_decode_version(gCmdBuff, &gIndex, &version);
ei_decode_tuple_header(gCmdBuff, &gIndex, &arity);
char cmdId;
ei_decode_char(gCmdBuff, &gIndex, &cmdId);
DebugLog("IMY*************while2222 %c\n", cmdId);
switch (cmdId) {
case 'i': { // sdk
// get the ip port reqId cmdid, cmd
unsigned long sdkCmdId;
unsigned long sdkCmd;
ei_decode_ulong(gCmdBuff, &gIndex, &sdkCmdId);
ei_decode_ulong(gCmdBuff, &gIndex, &sdkCmd);
DebugLog("IMY************init %d %d \n", sdkCmdId, sdkCmd);
int ret = 0;
gIndex = 0;
memset(gCmdBuff, 0, BUFF_LEN);
ei_encode_version(gCmdBuff, &gIndex);
ei_encode_tuple_header(gCmdBuff, &gIndex, 1);
ei_encode_long(gCmdBuff, &gIndex, ret);
writeCmd(gCmdBuff, gIndex);
}
break;
case 'g': { // Ip:port
// get the ip port reqId cmdid, cmd
unsigned long sdkCmdId;
unsigned long sdkCmd;
ei_decode_ulong(gCmdBuff, &gIndex, &sdkCmdId);
ei_decode_ulong(gCmdBuff, &gIndex, &sdkCmd);
DebugLog("IMY************getip %d %d \n", sdkCmdId, sdkCmd);
uint64_t reqId = 0;
gIndex = 0;
memset(gCmdBuff, 0, BUFF_LEN);
ei_encode_version(gCmdBuff, &gIndex);
ei_encode_tuple_header(gCmdBuff, &gIndex, 3);
ei_encode_ulong(gCmdBuff, &gIndex, reqId);
REQCACHE cache = reqCache[reqId];
ei_encode_string(gCmdBuff, &gIndex, cache.req._host_ip.c_str());
ei_encode_ulong(gCmdBuff, &gIndex, cache.req._host_port);
writeCmd(gCmdBuff, gIndex);
}
break;
default:
break;
}
}
return 0;
}

+ 27
- 37
c_src/ePort/ePort.cpp 파일 보기

@ -1,3 +1,4 @@
#include "qos_client.h"
#include <iostream>
#include <stdint.h>
#include <string.h>
@ -97,53 +98,42 @@ int main(void) {
ei_decode_char(gCmdBuff, &gIndex, &cmdId);
LOG("IMY*************11111 %c", cmdId);
switch (cmdId) {
case 'g':
LOG("IMY*************2222222 %s", gCmdBuff);
case 'i': { // 初始化sdk
// get the ip port reqId 先读取 cmdid, cmd
unsigned long sdkCmdId;
unsigned long sdkCmd;
ei_decode_ulong(gCmdBuff, &gIndex, &sdkCmdId);
ei_decode_ulong(gCmdBuff, &gIndex, &sdkCmd);
LOG("IMY************2222221111* %c %d %d ", cmdId, sdkCmdId, sdkCmd);
// 调用函数
// SKDAPI(xxxxx)
// 存储 map gReqId => cache
// 获取 reqId
// 编码结果
gReqId += 1;
DebugLog("IMY************init %d %d \n", sdkCmdId, sdkCmd);
int ret = 0;
gIndex = 0;
memset(gCmdBuff, 0, BUFF_LEN);
ei_encode_version(gCmdBuff, &gIndex);
ei_encode_tuple_header(gCmdBuff, &gIndex, 3);
ei_encode_ulong(gCmdBuff, &gIndex, gReqId);
ei_encode_ulong(gCmdBuff, &gIndex, 12369);
ei_encode_string(gCmdBuff, &gIndex, "127.0.0.1");
LOG("IMY************222222112222* %d", gIndex);
writeLen(std::cout, uint16_t(gIndex));
std::cout.write(gCmdBuff, gIndex);
std::cout.flush();
break;
case 'u':
LOG("IMY*************333333 %c", cmdId);
// 获取消耗时间 reqId
unsigned long useTime;
unsigned long reqId;
ei_decode_ulong(gCmdBuff, &gIndex, &useTime);
ei_decode_ulong(gCmdBuff, &gIndex, &reqId);
// 获取 map gReqId => cache
// 执行上报sdk
ei_encode_tuple_header(gCmdBuff, &gIndex, 1);
ei_encode_long(gCmdBuff, &gIndex, ret);
writeCmd(gCmdBuff, gIndex);
}
break;
case 't':
// 遍历map 删除过期的缓存
LOG("IMY*************444444 %c", cmdId);
case 'g': { // 获取Ip:port
// get the ip port reqId 先读取 cmdid, cmd
unsigned long sdkCmdId;
unsigned long sdkCmd;
ei_decode_ulong(gCmdBuff, &gIndex, &sdkCmdId);
ei_decode_ulong(gCmdBuff, &gIndex, &sdkCmd);
DebugLog("IMY************getip %d %d \n", sdkCmdId, sdkCmd);
uint64_t reqId = 0;
gIndex = 0;
memset(gCmdBuff, 0, BUFF_LEN);
ei_encode_version(gCmdBuff, &gIndex);
ei_encode_tuple_header(gCmdBuff, &gIndex, 3);
ei_encode_ulong(gCmdBuff, &gIndex, reqId);
REQCACHE cache = reqCache[reqId];
ei_encode_string(gCmdBuff, &gIndex, cache.req._host_ip.c_str());
ei_encode_ulong(gCmdBuff, &gIndex, cache.req._host_port);
writeCmd(gCmdBuff, gIndex);
}
break;
default :
LOG("IMY*************55555 %c", cmdId);
writeLen(std::cout, rLen);
std::cout.write(gCmdBuff, rLen);
std::cout.flush();
default:
break;
}
}

+ 3
- 1
c_src/ePort/rebar.config 파일 보기

@ -2,6 +2,8 @@
{"../../priv/ePort", ["*.cpp"]}
]}.
{port_env, [
{"(linux|solaris|darwin|freebsd)", "LDFLAGS", "$LDFLAGS -lpthread"}
]}.

불러오는 중...
취소
저장