디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.09.27 18:50:14
조회 76 추천 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 - -
2892921 애새끼좀 더 번식해라 이기이기 ㅋㅋㅋㅋ 타이밍뒷.통수한방(1.213) 09.29 32 0
2892920 냥덩이 마누라 될 사람 발명도둑잡기(39.7) 09.29 50 1
2892919 성 착취자는 보상금을 챙겼고 성 피해자는 절규를 남겼다 발명도둑잡기(39.7) 09.29 36 0
2892918 점심 간식 발명도둑잡기(39.7) 09.29 33 0
2892917 근데 난 사실 질문글삭 [2] 루도그담당(118.235) 09.29 51 0
2892916 나처럼 질문글삭해도 남길 수 있게 댓글에 더해서 글로 해라 [2] ㅆㅇㅆ(124.216) 09.29 58 0
2892914 MCP 랭체인, RAG 해보면 다 재밌음. 왜냐하면 지금 LLM이 ㅆㅇㅆ(124.216) 09.29 69 0
2892913 요즘 ai 발전된거 개무섭노 [3] 프갤러(61.76) 09.29 125 0
2892912 이런 씨발 비주얼스튜디오 세팅다날라갔니 ㅇㅇ(223.38) 09.29 45 0
2892911 나님 통찰력 ㄱㅆㅅㅌㅊ !! ♥냥덩이♥갤로그로 이동합니다. 09.29 35 1
2892909 프로그래머 입장에서 짱개 입국을 막아야하는 이유 [1] 프갤러(218.154) 09.29 65 0
2892908 나님 조만간 퐁퐁영45티 글 하나 써봄 ♥냥덩이♥갤로그로 이동합니다. 09.29 43 0
2892907 대한민국 중국남자 무비자입국 절대적으로 막아야합니다 [2] ㅇㅇ갤로그로 이동합니다. 09.29 403 3
2892904 주가 떨어졌네 개떡 같은거 ㅎㅎ 나르시갤로그로 이동합니다. 09.29 44 0
2892903 블록체인으로 수익이 나는것자체가 세상이 모순덩어리인거지 [2] 타이밍뒷.통수한방(1.213) 09.29 63 0
2892897 MCP랑 랭체인은 재미없어보이네여 [4] PyTorch갤로그로 이동합니다. 09.29 79 0
2892896 애새끼좀 더 번식해라 이기이기 ㅋㅋㅋㅋ 타이밍뒷.통수한방(1.213) 09.29 33 0
2892895 [대한민국] 주한미군 사령관 중장 표기 프갤러(121.172) 09.29 42 0
2892894 카톡을 대체할 개쩌는 메신저 만들어봐라 ㅇㅇ갤로그로 이동합니다. 09.29 61 0
2892884 질문글삭뭐냐고 루도그담당(211.184) 09.29 51 0
2892880 개발자새끼들 뭐좀 더 안다고 깝치지좀 마라 ㅇㅇ; [6] 프갤러(118.33) 09.29 145 2
2892879 플러터 쓰는데 gradle 이거 세팅하기 존나 좆같다 프갤러(222.121) 09.29 57 0
2892878 자러간다~ ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 09.29 32 0
2892872 피곤하다 [2] 루도그담당(211.184) 09.29 55 0
2892865 수제 햄버거집 몰카 ㅇㅅㅇ [2] 헤르 미온느갤로그로 이동합니다. 09.29 70 0
2892864 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 09.29 36 0
2892863 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 09.29 59 0
2892861 3500억 $ -> imf -> 알짜기업 팔림 -> 망국 프갤러(175.197) 09.29 113 0
2892860 지드래곤 ♥냥덩이♥갤로그로 이동합니다. 09.29 64 0
2892859 귀염 ♥냥덩이♥갤로그로 이동합니다. 09.29 38 0
2892858 프랑스 사태 보면 나님 예지몽 ㄹㅇ 인듯 ♥냥덩이♥갤로그로 이동합니다. 09.29 58 1
2892857 프갤 켜니 화면주사율이 일정해짐. 다른거 하면 이상해지네.. DVI소프펌 넥도리아(220.74) 09.29 58 0
2892856 다카이치 사나에 - 닥터때바라 닮음 (둘다 빌런대장) ㅇㅇ(175.197) 09.29 42 0
2892855 앱히키 씨발년아 뒤져라 [1] ㅇㅇ(222.108) 09.29 62 0
2892854 인지과학조져라 손발이시립디다갤로그로 이동합니다. 09.29 63 0
2892853 자고 일어나서 빌드하면 드디어 타로 일일 운세까지는 완성하겠네 [2] ㅆㅇㅆ(124.216) 09.29 54 0
2892852 AMI를 vmdk로 추출 후 vmware에서 부팅해본사람 ㅇㅇ갤로그로 이동합니다. 09.29 40 0
2892849 스레드가 뭔지도 모르는 새끼가 왜 비동기로 개념싸움 거는거야 [2] ㅇㅇ(106.241) 09.29 81 1
2892843 밥버러지... 고기도 익고... 명절한상 1주 시작. 넥도리아(220.74) 09.29 78 0
2892842 파이썬 질문인데 sha256 체크섬이 일치하지 않는다고 뜨는데.. [1] 프갤러(125.249) 09.29 72 0
2892841 ㅅㅂ... 알콜중독인가 잠이안와서 갈비탕 한그릇에 맥주깠다 ㅇㅇ(223.38) 09.29 38 0
2892840 밥 언재끔 커피 뿌려주었는데... 넥도리아(220.74) 09.29 79 0
2892839 밥짓는중. 넥도리아(220.74) 09.29 38 0
2892834 운영체제 충 돼서, 운영체제 모르면 개발이 불가능하다 생각하는데 ㅇㅇ(106.241) 09.29 65 0
2892832 저희는 가짜 프로그래머입니다. [1] 프갤러(110.8) 09.29 94 0
2892830 여기서 좀 정상적인 글쓰면 저능아들 꼬이는 그게 문제긴함 [1] ㅆㅇㅆ(124.216) 09.29 74 0
2892829 님들 진짜 프로그래머 맞나요 [3] Fjeoeieie갤로그로 이동합니다. 09.28 125 0
2892828 드이어 야구 동영상 옮긴다. 외장 볼륨있게 넥도리아(220.74) 09.28 42 0
2892824 나님 월 마일리지 인증 [7] ♥냥덩이♥갤로그로 이동합니다. 09.28 133 0
2892823 나님 이민 전략 칼럼 하나 쓰긴 써야하는데 [3] ♥냥덩이♥갤로그로 이동합니다. 09.28 95 0
뉴스 ‘백번의 추억’ 외유내강의 의인화 김다미, 시청자도 반할 수밖에 없었던 순간 3 디시트렌드 10.02
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2