디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.09.27 18:50:14
조회 85 추천 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 - -
2893581 자고 일어났는데 구글 애드센스 떨어짐 [2] ㅆㅇㅆ(124.216) 10.02 73 1
2893579 다들 즐거운 명절 보내세요 [8] 개멍청한유라갤로그로 이동합니다. 10.02 79 0
2893577 사람이 결혼하거나 나이먹으면 창의성이 없어지는듯 [2] ♥냥덩이♥갤로그로 이동합니다. 10.02 58 0
2893573 사람이 할줄아는게 많아지면 참 좋아...살기 편해. [1] ㅇㅇ(223.39) 10.02 49 0
2893571 한국은 정치가 4류 기업은 444류 ㅇㅇ(121.168) 10.02 49 0
2893570 내가 관심있는 여성들 추석 잘 보내고 있겠지 발명도둑잡기(118.235) 10.02 44 0
2893569 냥❤+ ♥냥덩이♥갤로그로 이동합니다. 10.02 47 0
2893563 무능극좌 폭동배급견 4050 범죄자세대 ♥냥덩이♥갤로그로 이동합니다. 10.02 37 0
2893562 아이유갤러리가 부끄럽냐 [1] 발명도둑잡기(118.235) 10.02 61 0
2893561 페미니즘이 애국적인 면도 있다 ㅇㅇ(121.168) 10.02 41 0
2893560 40대 중반부터 50대 중반까지 싹 도려내야 할듯 [1] ♥냥덩이♥갤로그로 이동합니다. 10.02 70 1
2893559 ㄹㅇ 40대 극초반 빼고는 40대가 50대 보다 씹빨갱이 간첩이었넹 [4] ♥냥덩이♥갤로그로 이동합니다. 10.02 72 0
2893557 깃헙 그만 괴롭히고 젠킨스나 쓰십시오 [2] 프갤러(211.234) 10.02 71 0
2893556 웃음 가득한 추석 보내세요 발명도둑잡기(118.235) 10.02 43 0
2893555 NL:한국이 미국식민지 간첩 PD:계급폭동 간첩 [1] ♥냥덩이♥갤로그로 이동합니다. 10.02 55 0
2893554 NL: 주체사상(북괴마르크스) PD:레닌,마오주의 [1] ♥냥덩이♥갤로그로 이동합니다. 10.02 53 0
2893553 깃헙 액션은 컴퓨터다. 프갤러(49.165) 10.02 45 0
2893552 알면 알수록 연속성 ♥냥덩이♥갤로그로 이동합니다. 10.02 53 0
2893551 흠.. [2] ♥냥덩이♥갤로그로 이동합니다. 10.02 59 0
2893550 ❤+ ♥냥덩이♥갤로그로 이동합니다. 10.02 40 0
2893549 확실히 이공계는 씹좆피티 <<< 제미나이 이다. [2] 프갤러(220.86) 10.02 81 0
2893548 Little Boy, Big Shadow 발명도둑잡기(118.235) 10.02 42 0
2893547 밤낮이 바뀌니 심장이 아프다 [1] ㅆㅇㅆ찡갤로그로 이동합니다. 10.02 50 0
2893546 기 모으는 모습 발명도둑잡기(118.235) 10.02 31 0
2893545 토쿄 가면 볼 수 있는 바이브 코더 [1] 발명도둑잡기(118.235) 10.02 55 0
2893544 입 안 헐어서 발명도둑잡기(39.7) 10.02 43 0
2893543 촘스키좌 논문 읽어보고 느낀거 [1] 3기견치코갤로그로 이동합니다. 10.02 67 1
2893542 bcachefs 발명도둑잡기(39.7) 10.02 38 0
2893540 힘들다... 진짜... 프갤러(27.179) 10.02 42 1
2893538 2023년 취업할땐 대충 게시판 포폴 베껴서 내도 취업되던데 [4] ㅇㅇ(223.38) 10.02 112 0
2893537 석사과정에서 코드퀄리티 구리다는 말 듣고 [2] ㅇㅇ(211.234) 10.02 104 4
2893536 현시대는 토발즈도 1찍 짱깨편인 무서운 시대이다ㅋㅋ번식 더 해줘라 이기 타이밍뒷.통수한방(1.213) 10.02 40 0
2893535 트럼프 관세 K팝 가수 겨냥 가능성 발명도둑잡기(118.216) 10.02 33 0
2893534 카카오 코테 요청 왔는데 원래 다 오는거임? [2] ㅇㅇ(58.140) 10.02 308 0
2893533 3d 프린터로 타자기 발명도둑잡기(118.216) 10.02 30 0
2893531 아줌마들 개새끼랑 대화하는 능력 줫되느 타이밍뒷.통수한방(1.213) 10.02 47 0
2893530 블랙핑크는 ㅇㅇ(121.168) 10.02 47 0
2893529 개 무서운 로보트 발명도둑잡기(118.216) 10.02 53 0
2893528 한글 자모 도장 [1] 발명도둑잡기(118.216) 10.02 64 0
2893527 오늘의 발명 실마리: 기념용 점토판 발명도둑잡기(118.216) 10.02 52 0
2893526 금융권 가지마라 ㅇㅇ(121.168) 10.02 453 0
2893525 지하 유물 자동 탐색 로보트 발명도둑잡기(118.216) 10.02 33 0
2893524 축하합니다. 프갤러(49.165) 10.02 42 0
2893523 친구간에도 서열을 나누려한다 ㅇㅇ(121.168) 10.02 55 0
2893520 여러분은 연휴때 무엇을 하고 지내실 예정인가요? [6] 루도그담당(58.239) 10.02 71 0
2893519 짱깨 한국서 난동 치안 불안 급증 ♥냥덩이♥갤로그로 이동합니다. 10.02 42 0
2893518 감사의 기적 발명도둑잡기(118.216) 10.02 54 0
2893517 이 개씨발일좆도못하는새끼야 [7] 개멍청한유라갤로그로 이동합니다. 10.02 105 0
2893515 야 원래 중국인 무비자였다가 싸드 배치해서 잠정중단했고 발명도둑잡기(118.216) 10.02 44 0
2893514 중복 ♥냥덩이♥갤로그로 이동합니다. 10.02 47 0
뉴스 '마이 유스' 이주명X서지훈, 만화방부터 성당까지 극과 극 데이트 포착 디시트렌드 10.09
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2