디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

프붕이들 깜놀랄 프로토콜 설계 ㅋㅋ

나르시갤로그로 이동합니다. 2025.09.27 18:50:14
조회 69 추천 0 댓글 5

전에 어떤 프붕이가..

프로코콜에 관한 질문했길레..


메시지

메시지 헤더

메시지 바디


올려본다. ㅋㅋ


/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
 * nimf-msg-priv.h
 * This file is part of Nimf.
 * Copyright (C) 2015-2025 Hodong Kim, All rights reserved.
 * Unauthorized copying of this software, via any medium is strictly prohibited.
 * Proprietary and confidential.
 * Written by Hodong Kim <hodong@nimfsoft.art>
 */

#ifndef __NIMF_MSG_H__
#define __NIMF_MSG_H__

#include <stdatomic.h>
#include "c-macros.h"
#include <stdint.h>
#include "c-types.h"

C_BEGIN_DECLS

typedef struct _NimfMsg       NimfMsg;
typedef struct _NimfMsgHeader NimfMsgHeader;

/* nimf message type */
#if (defined(__GNUC__) && (GCC_VERSION < 13)) || \
    (defined(__clang__) && (__clang_major__ < 16))
enum {
#else
enum : uint16_t {
#endif
  NIM_NONE = 0,
  NIM_ERROR,
  NIM_LAST_000_099
};

#if (defined(__GNUC__) && (GCC_VERSION < 13)) || \
    (defined(__clang__) && (__clang_major__ < 16))
enum {
#else
enum : uint16_t {
#endif
  /* input method context request: client ---> server */
  NIM_CREATE_CONTEXT = 100,
  NIM_CREATE_CONTEXT_REPLY,
  NIM_DESTROY_CONTEXT,
  NIM_DESTROY_CONTEXT_REPLY,
  NIM_FILTER_EVENT,
  NIM_FILTER_EVENT_REPLY,
  NIM_RESET,
  NIM_RESET_REPLY,
  NIM_FOCUS_IN,
  NIM_FOCUS_IN_REPLY,
  NIM_FOCUS_OUT,
  NIM_FOCUS_OUT_REPLY,
  NIM_SET_CURSOR_LOCATION,
  NIM_SET_CURSOR_LOCATION_REPLY,
  NIM_SET_CB_MASK,
  NIM_SET_CB_MASK_REPLY,
  NIM_ACTIVATE_CANDIDATE_ITEM,
  NIM_ACTIVATE_CANDIDATE_ITEM_REPLY,
  NIM_CHANGE_CANDIDATE_PAGE,
  NIM_CHANGE_CANDIDATE_PAGE_REPLY,
  NIM_LAST_100_199
};

#if (defined(__GNUC__) && (GCC_VERSION < 13)) || \
    (defined(__clang__) && (__clang_major__ < 16))
enum {
#else
enum : uint16_t {
#endif
/* callbacks: server ---> client */
  NIM_PREEDIT_START = 200,
  NIM_PREEDIT_START_REPLY,
  NIM_PREEDIT_END,
  NIM_PREEDIT_END_REPLY,
  NIM_PREEDIT_CHANGED,
  NIM_PREEDIT_CHANGED_REPLY,
  NIM_CANDIDATE_SHOW,
  NIM_CANDIDATE_SHOW_REPLY,
  NIM_CANDIDATE_HIDE,
  NIM_CANDIDATE_HIDE_REPLY,
  NIM_CANDIDATE_CHANGED,
  NIM_CANDIDATE_CHANGED_REPLY,
  NIM_CANDIDATE_SELECTED,
  NIM_CANDIDATE_SELECTED_REPLY,
  NIM_COMMIT,
  NIM_COMMIT_REPLY,
  NIM_GET_SURROUND,
  NIM_GET_SURROUND_REPLY,
  NIM_DELETE_SURROUND,
  NIM_DELETE_SURROUND_REPLY,
  NIM_LAST_200_299
};

#if (defined(__GNUC__) && (GCC_VERSION < 13)) || \
    (defined(__clang__) && (__clang_major__ < 16))
enum {
#else
enum : uint16_t {
#endif
/* misc: protocols that are not important */
  /* callbacks: server ---> client */
  NIM_NOTIFY = 300,
  NIM_NOTIFY_REPLY,
  /* methods: client ---> server */
  NIM_RESET_LAST_FOCUSED_SERVICE_IC,
  NIM_RESET_LAST_FOCUSED_SERVICE_IC_REPLY,
  NIM_RELOAD_CONFIG,
  NIM_RELOAD_CONFIG_REPLY,
  NIM_RETRY_SERVICES,
  NIM_RETRY_SERVICES_REPLY,
  NIM_LAST_300_399
};

struct _NimfMsgHeader
{
  uint16_t icid;
  uint16_t type;
  uint16_t data_len;
  uint16_t padding;
};

struct _NimfMsg
{
  NimfMsgHeader header;
  uint8_t*      data;
  CFreeFunc     data_free_func;
  unsigned      ref_count;
};

typedef struct _NimfResult NimfResult;

struct _NimfResult
{
  bool       is_dispatched;
  NimfMsg*   reply;
  atomic_int ref_count;
};

NimfMsg* nimf_msg_new      (void);
NimfMsg* nimf_msg_new_full (uint16_t  type,
                            uint16_t  im_id,
                            void*     data,
                            uint16_t  data_len,
                            CFreeFunc data_free_func);
NimfMsg* nimf_msg_ref   (NimfMsg* msg);
void     nimf_msg_unref (NimfMsg* msg);
const NimfMsgHeader* nimf_msg_get_header (NimfMsg* msg);
uint16_t nimf_msg_get_header_size ();
void     nimf_msg_set_body (NimfMsg*  msg,
                            uint8_t*  data,
                            uint16_t  data_len,
                            CFreeFunc data_free_func);
const uint8_t* nimf_msg_get_body (NimfMsg* msg);
uint16_t nimf_msg_get_body_size (NimfMsg* msg);
const char* nimf_msg_type_to_name (uint16_t type);

NimfResult* nimf_result_new   ();
NimfResult* nimf_result_ref   (NimfResult* result);
void        nimf_result_unref (NimfResult* result);
bool nimf_result_wait2 (NimfResult* result, uint16_t icid, uint16_t type);
bool nimf_send_message (int       sock_fd,
                        uint16_t  im_id,
                        uint16_t  type,
                        void*     data,
                        uint16_t  data_len,
                        CFreeFunc data_free_func);
NimfMsg* nimf_recv_message (int sock_fd);

C_END_DECLS

#endif /* __NIMF_MSG_H__ */


추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 우리나라를 대표해서 UN 연설자로 내보내고 싶은 스타는? 운영자 25/09/29 - -
AD 프로게이머가 될테야!! 운영자 25/10/01 - -
공지 프로그래밍 갤러리 이용 안내 [96] 운영자 20.09.28 47548 65
2893220 국민의힘 해체를 반드시 막는 철옹성 필수 요소 발명도둑잡기(118.216) 03:47 0 0
2893217 분석능력과 타인에 대한 공감능력은 트레이드오프관계 발명도둑잡기(118.216) 03:28 7 0
2893212 몽골서 우리 기술로 40년 만에 벼 재배 발명도둑잡기(118.216) 02:55 9 0
2893211 미국 트럼프 SNS 검열 소송 발명도둑잡기(118.216) 02:51 8 0
2893210 부모님이 파워 수리하는데 돈들이지 말고 수리하래요. 미친년, 넥도리아(220.74) 02:48 14 0
2893208 씨피유 전압 검사기 발명도둑잡기(118.216) 02:39 8 0
2893206 [단독] "윤석열 24시간 수발" 교도관 의혹 폭로‥근무일지도 안 남긴 발명도둑잡기(118.216) 02:38 10 0
2893204 번아웃 극복법 3가지 발명도둑잡기(118.216) 02:11 10 0
2893202 미국에게 한국은 우방이 아니라 민감국가가 팩트고, 통화스와프도 안해준다 발명도둑잡기(118.216) 02:03 10 0
2893201 미국이 관세협상에서 한국에 집착하는 이유 발명도둑잡기(118.216) 01:59 10 0
2893200 초전력·영하에도 '거뜬'...정류장·카페까지 전자종이로 발명도둑잡기(118.216) 01:53 9 0
2893199 베트남 잘 나갈 것이다 발명도둑잡기(118.216) 01:45 11 0
2893198 한때 잘나가던 EA, 사모펀드에 인수 발명도둑잡기(118.216) 01:30 14 0
2893193 ㅆㅇㅆ 지가 외주받느거 소스빼와서 [2] 프갤러(210.217) 01:18 37 1
2893191 오늘의 발명 실마리: 핵융합 대기권 드론과 위성 발명도둑잡기(118.216) 01:00 11 0
2893190 그래픽스가 어려움 ai 개발이 어려움 타이밍뒷.통수한방(1.213) 00:46 17 0
2893189 '한국은 전쟁터가 될 것인가' '팍스 아메리카나의 종말' 발명도둑잡기(118.216) 00:33 14 0
2893188 대입 연산자를 <- 로 바꾸면, 언어 도태됨? ㅇㅇ(106.241) 00:24 16 0
2893187 난 ai 보다 베트남 애들이 더 무서움 [1] 서우처어(211.178) 00:22 32 0
2893186 오늘 따라 엄마가 보고 싶다 러댣(211.234) 00:17 14 0
2893185 ㅆㅇㅆ아 홈페이지 깨진 이미지가 있는거임? [2] 프갤러(114.205) 00:02 33 0
2893184 해커톤 상금으로 쥬문한 seeker 배송중 ㅇㅅㅇ [1] 따당갤로그로 이동합니다. 09.30 25 0
2893183 ㅆㅇㅆ가 만든 타로 오늘의 운세 결과 정확하다 발명도둑잡기(118.216) 09.30 27 0
2893181 약 먹고 운덩하면 부상확률 올라감 [2] ♥냥덩이♥갤로그로 이동합니다. 09.30 28 0
2893180 연휴 때 애인과 밥 먹고 이야기하고 여행 다니고 그러면 발명도둑잡기(118.216) 09.30 13 0
2893179 Ada로 포팅 또는 재작성할 때에는 StringLen 타입을 만들던가 나르시갤로그로 이동합니다. 09.30 14 0
2893178 디씨 풍경 발명도둑잡기(118.216) 09.30 15 0
2893177 러우 전쟁, 선악 아닌 힘과 국익의 시각으로 다시 보기 / 조한범 박사 발명도둑잡기(118.216) 09.30 9 0
2893176 AI 떔에 프로그램이 공부하기 싫다 [3] 프갤러(220.70) 09.30 42 0
2893175 아카데미 애니 후보 <오페라> 에릭오 나왔대서 생각나는 예전 글 발명도둑잡기(118.216) 09.30 10 0
2893174 저장용 ♥냥덩이♥갤로그로 이동합니다. 09.30 17 0
2893173 나는조현병이야 나는내향적이야 손발이시립디다갤로그로 이동합니다. 09.30 24 0
2893172 배불러 뒤지겠는데 뭐가 이렇게 부족한것 같냐... 술마시니 배가 허하네 [1] ㅇㅇ(223.39) 09.30 18 0
2893171 야식 먹은 후에 한 10분 자려고 하는데..ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 09.30 10 0
2893170 반응형으로 만들어도 세로로 하면 일부 애니메이션이 깨지네 [1] ㅆㅇㅆ(124.216) 09.30 31 0
2893169 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 09.30 22 0
2893168 이화여대 동문 "김활란이 미군 장교 접대시켜" 발명도둑잡기(118.216) 09.30 15 0
2893166 일본 자민당 총재 선거 이제 없어진다고 한다. 왕정복고 발명도둑잡기(118.216) 09.30 16 0
2893164 일단 연간 운세까지 해야하는데 애니메이션은 다 준비했는데 [2] ㅆㅇㅆ(124.216) 09.30 46 0
2893161 오늘의 운세 [2] 루도그담당(58.239) 09.30 39 0
2893160 [대한민국] 정의의 소멸이라는, 어느 블로그의 생각 [1] 프갤러(121.172) 09.30 23 0
2893159 애들아 내 타로 홈페이지좀 봐다오 [23] ㅆㅇㅆ(124.216) 09.30 123 5
2893157 토스(프로토스 아님ㅋ)가 좀 2류의 발악 같은게 있는듯 [1] 프갤러(110.8) 09.30 27 0
2893156 코딩 적성안맞는데 성격좋은놈들은 기술영업 해봐라 ㅇㅇ(220.70) 09.30 29 0
2893155 오늘 빌드하면서 내가 잘못했던거 배움 ㅆㅇㅆ(124.216) 09.30 23 0
2893154 커널 안티치트 우회함 [5] 루도그담당(58.239) 09.30 64 0
2893152 AI 코딩해서 오류 안나게 하려면 결국 잘 명령 내려야지 ㅆㅇㅆ(124.216) 09.30 22 0
2893151 AI 한테 코딩 맡기면 원래 에러 투성이인가? [2] ㅇㅇ(118.235) 09.30 33 0
2893150 이런말하기 좀 그런데 토스 출신<<이거 지뢰출신 아님? ㅆㅇㅆ(124.216) 09.30 32 0
뉴스 김태호 PD, 광희 ‘고가 출연료’ 저격 “그 돈이면…” 디시트렌드 09.30
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2