libthecore encoding conversion

This commit is contained in:
2024-04-06 10:20:42 +02:00
parent 341bef9aba
commit 8685b02fdc
5 changed files with 29 additions and 29 deletions

View File

@ -1,8 +1,8 @@
/* /*
* Filename: buffer.c * Filename: buffer.c
* Description: Buffer ó<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> * Description: Buffer 처리 모듈
* *
* Author: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (aka. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, Cronan) * Author: 김한주 (aka. 비엽, Cronan)
*/ */
#define __LIBTHECORE__ #define __LIBTHECORE__
#include "stdafx.h" #include "stdafx.h"
@ -32,7 +32,7 @@ static int buffer_get_exac_pool_index(int size) {
} }
return -1; // too big... not pooled return -1; // too big... not pooled
} }
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> buffer pool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. // 모든 buffer pool 해제.
static void buffer_pool_free () static void buffer_pool_free ()
{ {
for (int i = 31; i >= 0; i--) for (int i = 31; i >= 0; i--)
@ -50,7 +50,7 @@ static void buffer_pool_free ()
} }
} }
} }
// n<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ū buffer pool <EFBFBD>ϳ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. // n보다 큰 buffer pool 하나를 해제.
static bool buffer_larger_pool_free (int n) static bool buffer_larger_pool_free (int n)
{ {
for (int i = 31; i > n; i--) for (int i = 31; i > n; i--)
@ -102,13 +102,13 @@ LPBUFFER buffer_new(int size)
{ {
CREATE(buffer, BUFFER, 1); CREATE(buffer, BUFFER, 1);
buffer->mem_size = size; buffer->mem_size = size;
// buffer_new<EFBFBD><EFBFBD><EFBFBD><EFBFBD> calloc failed<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߻<EFBFBD><DFBB>Ͽ<EFBFBD>(<28><>Ű<EFBFBD><C5B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ӽſ<D3BD><C5BF><EFBFBD> <20>ַ<EFBFBD> <20>߻<EFBFBD>), // buffer_new에서 calloc failed가 자주 발생하여(터키의 빈약한 머신에서 주로 발생),
// calloc<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD>, buffer pool<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٽ<EFBFBD> <20>õ<EFBFBD><C3B5>Ѵ<EFBFBD>. // calloc이 실패하면, buffer pool을 비우고 다시 시도한다.
if (!safe_create(&buffer->mem_data, size)) if (!safe_create(&buffer->mem_data, size))
{ {
// <EFBFBD>ʿ<EFBFBD><EFBFBD><EFBFBD> buffer<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ū buffer pool<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϳ<EFBFBD><CFB3><EFBFBD> <20><><EFBFBD><EFBFBD>. // 필요한 buffer보다 큰 buffer pool에서 하나를 해제.
if (!buffer_larger_pool_free(pool_index)) if (!buffer_larger_pool_free(pool_index))
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> pool<6F><6C> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. // 실패하면 최후의 수단으로, 모든 pool을 해제한다.
buffer_pool_free(); buffer_pool_free();
CREATE(buffer->mem_data, char, size); CREATE(buffer->mem_data, char, size);
SPDLOG_ERROR("buffer pool free success."); SPDLOG_ERROR("buffer pool free success.");
@ -213,10 +213,10 @@ void buffer_read_proceed(LPBUFFER buffer, int length)
length = buffer->length; length = buffer->length;
} }
// ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̰<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD><CCBA><EFBFBD> <20>۴ٸ<DBB4>, <20><><EFBFBD>۸<EFBFBD> <20><><EFBFBD>ܵξ<DCB5><CEBE><EFBFBD> <20>Ѵ<EFBFBD>. // 처리할 길이가 버퍼 길이보다 작다면, 버퍼를 남겨두어야 한다.
if (length < buffer->length) if (length < buffer->length)
{ {
// write_point <EFBFBD><EFBFBD> pos <EFBFBD><EFBFBD> <20>״<EFBFBD><D7B4><EFBFBD> <20>ΰ<EFBFBD> read_point <20><> <20><><EFBFBD><EFBFBD> <20><>Ų<EFBFBD><C5B2>. // write_point pos 는 그대로 두고 read_point 만 증가 시킨다.
if (buffer->read_point + length - buffer->mem_data > buffer->mem_size) if (buffer->read_point + length - buffer->mem_data > buffer->mem_size)
{ {
SPDLOG_ERROR("buffer_read_proceed: buffer overflow! length {} read_point {}", length, buffer->read_point - buffer->mem_data); SPDLOG_ERROR("buffer_read_proceed: buffer overflow! length {} read_point {}", length, buffer->read_point - buffer->mem_data);
@ -268,8 +268,8 @@ void buffer_realloc(LPBUFFER& buffer, int length)
if (buffer->mem_size >= length) if (buffer->mem_size >= length)
return; return;
// i <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ҵ<EFBFBD><D2B4><EFBFBD> ũ<><C5A9><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ũ<EFBFBD><C5A9><EFBFBD><EFBFBD> <20><>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> // i 는 새로 할당된 크기와 이전크기의 차, 실제로 새로 생긴
// <EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><20><><EFBFBD>Ѵ<EFBFBD>. // 메모리의 크기를 뜻한다.
i = length - buffer->mem_size; i = length - buffer->mem_size;
if (i <= 0) if (i <= 0)
@ -281,7 +281,7 @@ void buffer_realloc(LPBUFFER& buffer, int length)
read_point_pos = buffer->read_point - buffer->mem_data; read_point_pos = buffer->read_point - buffer->mem_data;
// write_point <EFBFBD><EFBFBD> read_point <EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><>Ų<EFBFBD><C5B2>. // write_point read_point 를 재 연결 시킨다.
temp->write_point = temp->mem_data + buffer->write_point_pos; temp->write_point = temp->mem_data + buffer->write_point_pos;
temp->write_point_pos = buffer->write_point_pos; temp->write_point_pos = buffer->write_point_pos;
temp->read_point = temp->mem_data + read_point_pos; temp->read_point = temp->mem_data + read_point_pos;

View File

@ -1,8 +1,8 @@
/* /*
* Filename: heart.c * Filename: heart.c
* Description: fps <EFBFBD><EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> ȣ<><C8A3><EFBFBD>Ǵ<EFBFBD> "<22><><EFBFBD><EFBFBD>" <20>̴<EFBFBD>. * Description: fps 에 한번씩 호출되는 "심장" 이다.
* *
* Author: <EFBFBD><EFBFBD><EFBFBD><EFBFBD> aka. Cronan * Author: 비엽 aka. Cronan
*/ */
#define __LIBTHECORE__ #define __LIBTHECORE__
#include "stdafx.h" #include "stdafx.h"
@ -57,8 +57,8 @@ int heart_idle(LPHEART ht)
missed_pulse += process_time.tv_usec / ht->opt_time.tv_usec; missed_pulse += process_time.tv_usec / ht->opt_time.tv_usec;
} }
// <EFBFBD>ٺ<EFBFBD><EFBFBD><EFBFBD> pulse<EFBFBD><EFBFBD> <20><><EFBFBD>ƴµ<C6B4> <20><> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>... // 바빠서 pulse도 놓쳤는데 잘 시간이 어딨어...
// <EFBFBD>޽<EFBFBD> fps <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ʋ<><C6B2><EFBFBD><EFBFBD><EFBFBD>ִµ<D6B4>, <20><>Ȯ<EFBFBD><C8AE> <20><><EFBFBD>ߴ<EFBFBD> <20><> <20>߿<EFBFBD><DFBF><EFBFBD><EFBFBD><EFBFBD> <20>ʾ<EFBFBD>. // 펄스 fps 어차피 틀어져있는데, 정확히 맞추는 건 중요하지 않아.
if (missed_pulse > 0) if (missed_pulse > 0)
{ {
gettimeofday(&ht->last_time, (struct timezone *) 0); gettimeofday(&ht->last_time, (struct timezone *) 0);

View File

@ -1,8 +1,8 @@
/* /*
* Filename: main.c * Filename: main.c
* Description: <EFBFBD><EFBFBD><EFBFBD>̺귯<EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ/<2F><><EFBFBD><EFBFBD> <20><> * Description: 라이브러리 초기화/삭제 등
* *
* Author: <EFBFBD><EFBFBD><EFBFBD><EFBFBD> aka. Cronan * Author: 비엽 aka. Cronan
*/ */
#define __LIBTHECORE__ #define __LIBTHECORE__
#include "stdafx.h" #include "stdafx.h"

View File

@ -1,8 +1,8 @@
/* /*
* Filename: signal.c * Filename: signal.c
* Description: <EFBFBD>ñ׳<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD>. * Description: 시그널 관련 함수.
* *
* Author: <EFBFBD><EFBFBD><EFBFBD><EFBFBD> aka. Cronan * Author: 비엽 aka. Cronan
*/ */
#define __LIBTHECORE__ #define __LIBTHECORE__
#include "stdafx.h" #include "stdafx.h"

View File

@ -1,8 +1,8 @@
/* /*
* Filename: utils.c * Filename: utils.c
* Description: <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ƿ<EFBFBD><C6BF>Ƽ * Description: 각종 유틸리티
* *
* Author: <EFBFBD><EFBFBD><EFBFBD><EFBFBD> aka. Cronan * Author: 비엽 aka. Cronan
*/ */
#define __LIBTHECORE__ #define __LIBTHECORE__
#include "stdafx.h" #include "stdafx.h"
@ -85,7 +85,7 @@ void trim_and_lower(const char * src, char * dest, size_t dest_size)
return; return;
} }
// <EFBFBD>տ<EFBFBD> <20><>ĭ <20>dz<EFBFBD> <20>ٱ<EFBFBD> // 앞에 빈칸 건너 뛰기
while (*tmp) while (*tmp)
{ {
if (!isspace(*tmp)) if (!isspace(*tmp))
@ -94,12 +94,12 @@ void trim_and_lower(const char * src, char * dest, size_t dest_size)
tmp++; tmp++;
} }
// \0 Ȯ<EFBFBD><EFBFBD> // \0 확보
--dest_size; --dest_size;
while (*tmp && len < dest_size) while (*tmp && len < dest_size)
{ {
*(dest++) = LOWER(*tmp); // LOWER<EFBFBD><EFBFBD> <20><>ũ<EFBFBD>ζ<EFBFBD> ++ <20><><EFBFBD><EFBFBD> <20>ȵ<EFBFBD> *(dest++) = LOWER(*tmp); // LOWER는 매크로라 ++ 쓰면 안됨
++tmp; ++tmp;
++len; ++len;
} }
@ -108,7 +108,7 @@ void trim_and_lower(const char * src, char * dest, size_t dest_size)
if (len > 0) if (len > 0)
{ {
// <EFBFBD>ڿ<EFBFBD> <20><>ĭ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // 뒤에 빈칸 지우기
--dest; --dest;
while (*dest && isspace(*dest) && len--) while (*dest && isspace(*dest) && len--)
@ -116,8 +116,8 @@ void trim_and_lower(const char * src, char * dest, size_t dest_size)
} }
} }
/* "Name : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><> <20><><EFBFBD><EFBFBD> "<22>׸<EFBFBD> : <20><>" <20><><EFBFBD><EFBFBD> <20>̷<EFBFBD><CCB7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD> /* "Name : 비엽" 과 같이 "항목 : 값" 으로 이루어진 문자열에서
<EFBFBD>׸<EFBFBD><EFBFBD><EFBFBD> token <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> value <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>. */ 항목을 token 으로, 값을 value 로 복사하여 리턴한다. */
void parse_token(char *src, char *token, char *value) void parse_token(char *src, char *token, char *value)
{ {
char *tmp; char *tmp;