libthecore encoding conversion
This commit is contained in:
parent
341bef9aba
commit
8685b02fdc
|
@ -1,8 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Filename: buffer.c
|
* Filename: buffer.c
|
||||||
* Description: Buffer 처리 모듈
|
* Description: Buffer 처리 모듈
|
||||||
*
|
*
|
||||||
* Author: 김한주 (aka. 비엽, 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
|
||||||
}
|
}
|
||||||
// 모든 buffer pool 해제.
|
// 모든 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보다 큰 buffer pool 하나를 해제.
|
// 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에서 calloc failed가 자주 발생하여(터키의 빈약한 머신에서 주로 발생),
|
// buffer_new에서 calloc failed가 자주 발생하여(터키의 빈약한 머신에서 주로 발생),
|
||||||
// calloc이 실패하면, buffer pool을 비우고 다시 시도한다.
|
// calloc이 실패하면, buffer pool을 비우고 다시 시도한다.
|
||||||
if (!safe_create(&buffer->mem_data, size))
|
if (!safe_create(&buffer->mem_data, size))
|
||||||
{
|
{
|
||||||
// 필요한 buffer보다 큰 buffer pool에서 하나를 해제.
|
// 필요한 buffer보다 큰 buffer pool에서 하나를 해제.
|
||||||
if (!buffer_larger_pool_free(pool_index))
|
if (!buffer_larger_pool_free(pool_index))
|
||||||
// 실패하면 최후의 수단으로, 모든 pool을 해제한다.
|
// 실패하면 최후의 수단으로, 모든 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 처리할 길이가 버퍼 길이보다 작다면, 버퍼를 남겨두어야 한다.
|
// 처리할 길이가 버퍼 길이보다 작다면, 버퍼를 남겨두어야 한다.
|
||||||
if (length < buffer->length)
|
if (length < buffer->length)
|
||||||
{
|
{
|
||||||
// write_point 와 pos 는 그대로 두고 read_point 만 증가 시킨다.
|
// 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 는 새로 할당된 크기와 이전크기의 차, 실제로 새로 생긴
|
// i 는 새로 할당된 크기와 이전크기의 차, 실제로 새로 생긴
|
||||||
// 메모리의 크기를 뜻한다.
|
// 메모리의 크기를 뜻한다.
|
||||||
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 와 read_point 를 재 연결 시킨다.
|
// 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;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Filename: heart.c
|
* Filename: heart.c
|
||||||
* Description: fps 에 한번씩 호출되는 "심장" 이다.
|
* Description: fps 에 한번씩 호출되는 "심장" 이다.
|
||||||
*
|
*
|
||||||
* Author: 비엽 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 바빠서 pulse도 놓쳤는데 잘 시간이 어딨어...
|
// 바빠서 pulse도 놓쳤는데 잘 시간이 어딨어...
|
||||||
// 펄스 fps 어차피 틀어져있는데, 정확히 맞추는 건 중요하지 않아.
|
// 펄스 fps 어차피 틀어져있는데, 정확히 맞추는 건 중요하지 않아.
|
||||||
if (missed_pulse > 0)
|
if (missed_pulse > 0)
|
||||||
{
|
{
|
||||||
gettimeofday(&ht->last_time, (struct timezone *) 0);
|
gettimeofday(&ht->last_time, (struct timezone *) 0);
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Filename: main.c
|
* Filename: main.c
|
||||||
* Description: 라이브러리 초기화/삭제 등
|
* Description: 라이브러리 초기화/삭제 등
|
||||||
*
|
*
|
||||||
* Author: 비엽 aka. Cronan
|
* Author: 비엽 aka. Cronan
|
||||||
*/
|
*/
|
||||||
#define __LIBTHECORE__
|
#define __LIBTHECORE__
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Filename: signal.c
|
* Filename: signal.c
|
||||||
* Description: 시그널 관련 함수.
|
* Description: 시그널 관련 함수.
|
||||||
*
|
*
|
||||||
* Author: 비엽 aka. Cronan
|
* Author: 비엽 aka. Cronan
|
||||||
*/
|
*/
|
||||||
#define __LIBTHECORE__
|
#define __LIBTHECORE__
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Filename: utils.c
|
* Filename: utils.c
|
||||||
* Description: 각종 유틸리티
|
* Description: 각종 유틸리티
|
||||||
*
|
*
|
||||||
* Author: 비엽 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 앞에 빈칸 건너 뛰기
|
// 앞에 빈칸 건너 뛰기
|
||||||
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 확보
|
// \0 확보
|
||||||
--dest_size;
|
--dest_size;
|
||||||
|
|
||||||
while (*tmp && len < dest_size)
|
while (*tmp && len < dest_size)
|
||||||
{
|
{
|
||||||
*(dest++) = LOWER(*tmp); // LOWER는 매크로라 ++ 쓰면 안됨
|
*(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)
|
||||||
{
|
{
|
||||||
// 뒤에 빈칸 지우기
|
// 뒤에 빈칸 지우기
|
||||||
--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 : 비엽" 과 같이 "항목 : 값" 으로 이루어진 문자열에서
|
/* "Name : 비엽" 과 같이 "항목 : 값" 으로 이루어진 문자열에서
|
||||||
항목을 token 으로, 값을 value 로 복사하여 리턴한다. */
|
항목을 token 으로, 값을 value 로 복사하여 리턴한다. */
|
||||||
void parse_token(char *src, char *token, char *value)
|
void parse_token(char *src, char *token, char *value)
|
||||||
{
|
{
|
||||||
char *tmp;
|
char *tmp;
|
||||||
|
|
Loading…
Reference in New Issue