디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.09.27 18:50:14
조회 83 추천 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
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 공개연애가 득보다 실인 것 같은 스타는? 운영자 25/10/06 - -
AD 프로게이머가 될테야!! 운영자 25/10/01 - -
2893048 짱깨들은 17억인구로 만든게 qwen 이 끝임?? 타이밍뒷.통수한방(1.213) 09.29 93 0
2893037 토발즈도 짱개편인 세상에 살고있다ㅋㅋ번식 더 해줘 ㅋㅋㅋ 타이밍뒷.통수한방(1.213) 09.29 52 0
2893036 와.. 근방 50m 내에 접근만해도 썩은내 날거 같음 ♥냥덩이♥갤로그로 이동합니다. 09.29 66 0
2893032 유명재한테 사기당했다ㅋㅋ [1] 프갤러(211.45) 09.29 68 0
2893029 현시대는 토발즈도 1찍인 무서운 세상이다 이기이기 [1] 타이밍뒷.통수한방(1.213) 09.29 99 0
2893014 29살 지잡대 신입(10개월 일함) 중소 si 개발 취업 프갤러(118.220) 09.29 228 0
2893011 회사가 어려워서 연봉동결이네 [3] ㅇㅇ(175.197) 09.29 132 0
2893010 나님 끙야 기운.. ♥냥덩이♥갤로그로 이동합니다. 09.29 97 1
2893009 홀짝홀짝 ♥냥덩이♥갤로그로 이동합니다. 09.29 100 0
2893005 레제 ♥냥덩이♥갤로그로 이동합니다. 09.29 50 0
2893003 '장관급' 박진영, 이재명 대통령과 함께한다…"밝은 미래 기대" 발명도둑잡기(39.7) 09.29 89 0
2893000 저장용 ♥냥덩이♥갤로그로 이동합니다. 09.29 81 0
2892997 짱깨 llm은 어떻게 쓸만한 게 1개도 없냐ㄹㅇ 타이밍뒷.통수한방(1.213) 09.29 64 0
2892994 좋은냄새❤+ ♥냥덩이♥갤로그로 이동합니다. 09.29 51 0
2892992 스피드냥덩 ♥냥덩이♥갤로그로 이동합니다. 09.29 53 0
2892990 9월 26일 지하철서 카드 분실했는데 발명도둑잡기(39.7) 09.29 61 0
2892989 타로 도메인 샀는데 아스트랄덱이라는 이름을 삼 [3] ㅆㅇㅆ찡갤로그로 이동합니다. 09.29 93 0
2892987 맞춤법 신경쓰는 사람 있음? ㅇㅇ(106.241) 09.29 48 0
2892985 안드 카카오톡 평점 2점되셨더라 헬마스터갤로그로 이동합니다. 09.29 52 0
2892983 즐거운 목요일 저녁입니다~ 가연아갤로그로 이동합니다. 09.29 47 0
2892979 게임은 아트가 존나 중요함 ㅆㅇㅆ(124.216) 09.29 57 0
2892975 냥덩이 살아있어양❤ [1] ♥냥덩이♥갤로그로 이동합니다. 09.29 75 0
2892974 허점게임과제 해서 그런가 스프라이트 24개정도썻는데 ㅇㅇ(223.38) 09.29 68 0
2892962 걍 free sprite 받아서 쓰면 안되냐 ㅆㅇㅆ야 [4] 프갤러(223.38) 09.29 71 1
2892961 시발 그냥 무제한을 쓰던지 오프라인 게임을 해야되는거네 프갤러(211.235) 09.29 62 0
2892960 나 같은 케이스 있냐? [2] 루도그담당(58.239) 09.29 86 0
2892959 공부 그냥 남는시간에 계속 하는거뿐인가 ㅇㅅㅇ [1] ㅇㅇ(223.39) 09.29 60 0
2892958 나님 빠르면 올해말에 이민 칼럼 하나 쓸수 있을듯 [1] ♥냥덩이♥갤로그로 이동합니다. 09.29 68 0
2892957 나님이 27년 얘기한게 현실화 되어가는중.. ♥냥덩이♥갤로그로 이동합니다. 09.29 67 0
2892956 흠.. 빨라야 11월 초중순인가 [1] ♥냥덩이♥갤로그로 이동합니다. 09.29 105 0
2892953 한국 정보들 대다수는 거의 쓸모 없지 않냐 고급 정보는 ㅆㅇㅆ(124.216) 09.29 56 0
2892951 현업이 전화해서 왜 오래걸리냐고 물어볼때 ㅇㅇ갤로그로 이동합니다. 09.29 59 0
2892948 5호선 혜자라인이란 말은 취소다. 프갤러(223.39) 09.29 56 0
2892946 C언어 입문자인데 기계과면 주로 어디로 취업함? [2] 프갤러(211.234) 09.29 108 0
2892945 서울 지하철 5호선 ㄹㅇ 혜자 라인이네 [1] 프갤러(223.63) 09.29 96 0
2892944 동작대교 빗물 받이에 비닐봉지랑 종이 같이 코팅된거 같은거있어요ㅇ.ㅇ 넥도리아(220.74) 09.29 58 0
2892942 피쳐폰 기부 후기 넥도리아(220.74) 09.29 55 0
2892941 애널의달성 12/1// ♥냥덩이♥갤로그로 이동합니다. 09.29 69 0
2892940 나는 중국어를 못함. 일 넣어주는 중국 친구가 있는거지 [4] ㅆㅇㅆ(124.216) 09.29 62 0
2892937 서비스 기획에서 제일 중요하게 고려하는 요소가 머임? [8] 뉴진파갤로그로 이동합니다. 09.29 73 0
2892935 짱개들의 유일한 단점 프갤러(218.154) 09.29 50 0
2892934 중국정보를 봐라. 한국정보는 볼게없다 [6] ㅆㅇㅆ(124.216) 09.29 507 0
2892933 나님은 유행을 쫓지 않는당 By 나님 ♥냥덩이♥갤로그로 이동합니다. 09.29 52 0
2892932 나님 피궁.. ♥냥덩이♥갤로그로 이동합니다. 09.29 48 0
2892931 카카오톡 11에서 갑자기 25로 버전 바꿧네 헬마스터갤로그로 이동합니다. 09.29 60 0
2892930 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 09.29 33 0
2892929 중국 형님들 걍 존나 잘침 루도그담당(118.235) 09.29 53 0
2892928 supabase<<이거 RLS 설정 존나 귀찮네 진짜 ㅆㅇㅆ(124.216) 09.29 64 0
2892927 ai 이거 로컬에서 쓴다는게 말이 안되는데 현시대에서?? 타이밍뒷.통수한방(1.213) 09.29 96 0
2892925 아직도 짱개가 기술적으로 한국보다 밑이라는 착각은 마시기 바랍니다. 프갤러(218.154) 09.29 61 0
뉴스 글로벌 인플루언서 엑스포, '케이팝 데몬헌터스 챌린지' 열린다. 디시트렌드 10.05
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2