Skip to content

feat: Add TCP protocol pipeline stages with mode switching#68

Merged
jisung-02 merged 1 commit into
mainfrom
12-tcp-stage
Dec 7, 2025
Merged

feat: Add TCP protocol pipeline stages with mode switching#68
jisung-02 merged 1 commit into
mainfrom
12-tcp-stage

Conversation

@jisung-02
Copy link
Copy Markdown
Owner

@jisung-02 jisung-02 commented Dec 7, 2025

.github/pull_request_template.md

🎯 변경 사항

📋 체크리스트

  • gleam format 실행 완료
  • gleam check 통과
  • 테스트 추가/수정 완료
  • 문서 업데이트 완료
  • CHANGELOG.md 업데이트 (필요시)

🧪 테스트 방법

🤖 CodeRabbit 리뷰 요청사항

  • 성능 최적화 검토
  • 에러 처리 검증
  • 타입 안전성 확인
  • API 설계 리뷰

📸 스크린샷/데모


참고: 댓글에 @coderabbitai 다시 리뷰해줘라고 작성하면 전체 재리뷰를 요청할 수 있습니다.

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • TCP 모드 시스템 추가: 운영체제 기본 TCP와 커스텀 TCP 처리 경로 중 선택 가능
    • TCP 프로토콜 스테이지 구현: 파이프라인에서 TCP 데이터 인코딩/디코딩 지원
    • 소켓 설정 옵션 제공: 버퍼 크기 및 읽기 타임아웃 커스터마이징 가능
    • 하이브리드 모드 및 검사 기능 지원
  • 테스트

    • TCP 스테이지 포괄적 테스트 스위트 추가 (인코딩, 디코딩, 라운드트립 테스트 포함)

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Dec 7, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

TCP 모드 선택 시스템(OsSocket vs CustomTcp), 소켓 설정 빌더, 그리고 인바운드/아웃바운드 파이프라인 스테이지 구성 함수를 도입합니다. TCP 프로토콜 스테이지에서 인코딩/디코딩 기능과 세그먼트 관리 헬퍼를 추가하며, 포괄적인 테스트 스위트로 모든 경로를 검증합니다.

Changes

집단 / 파일(들) 변경 요약
TCP 모드 및 스테이지 시스템
src/aether/protocol/tcp/mode.gleam, src/aether/protocol/tcp/stage.gleam
새로운 TcpMode 열거형(OsSocket, CustomTcp), SocketConfig 타입 및 빌더 함수(default_config, with_buffer_size, with_read_timeout) 추가. OS 소켓 스테이지(os_socket_read, os_socket_write)와 커스텀 TCP 스테이지(raw_socket_read, raw_socket_write)의 구성 헬퍼들을 제공. TcpSegment 타입, decode/encode 스테이지, 세그먼트 생성/접근 헬퍼 함수들 구현. 프로토콜 등록 및 설명 유틸리티 포함.
TCP 스테이지 테스트
test/aether/protocol/tcp/stage_test.gleam
decode/encode 스테이지, 라운드트립, 프로토콜 등록, 세그먼트 헬퍼 함수들에 대한 28개 테스트 추가. 페이로드 추출, 메타데이터 저장, 헤더 보존, 에러 처리, 빈 페이로드 처리 등을 검증.

예상 코드 검토 난이도

🎯 4 (복잡함) | ⏱️ ~45분

특별 검토 영역:

  • mode.gleam의 에러 처리: socket_error_to_string 함수와 ProcessingError 매핑이 모든 소켓 작업에서 일관되게 적용되는지 확인 필요
  • SocketConfig 빌더 체인: 함수형 접근법이 타입 안전성을 유지하는지, 모든 설정 경로가 유효한 상태를 보장하는지 검증
  • Stage 조합 로직: inbound_stages_for_mode, outbound_stages_for_mode에서 TcpMode 패턴 매칭이 모든 경우를 커버하는지, 기본값이 적절한지 확인
  • stage.gleam의 decode/encode 대칭성: decode 스테이지에서 추출한 세그먼트가 encode 스테이지에서 올바르게 재구성되는지, 메타데이터 접근이 안전한지 검증 (Option 처리)
  • 새로운 공개 API 범위: 18개 이상의 새로운 공개 함수들이 모두 문서화되었는지, 일관된 명명 규칙을 따르는지 확인

Poem

🔌 OS와 커스텀 TCP가 하나로
소켓은 설정되고 스테이지는 구성되네
패턴은 매칭되고 에러는 처리되고
인/아웃 바운드 흐름 순조롭게
테스트는 28개로 든든하게! 🎯


📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Free

📥 Commits

Reviewing files that changed from the base of the PR and between 483f885 and 1b73518.

📒 Files selected for processing (3)
  • src/aether/protocol/tcp/mode.gleam (1 hunks)
  • src/aether/protocol/tcp/stage.gleam (1 hunks)
  • test/aether/protocol/tcp/stage_test.gleam (1 hunks)

Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login.

Comment @coderabbitai help to get the list of available commands and usage tips.

@jisung-02 jisung-02 merged commit 93d701e into main Dec 7, 2025
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant