저는 Cap'n Proto를 UDS를 통해 통신하는 클라이언트와 서버로 구성된 기존 프로젝트에 사용하려고합니다. 모든 클라이언트 - 서버 RPC를 재실행 할 수있는 자원이 없지만 받아 들일 수 있을지는 모르겠지만 Cap'n Proto 직렬화 메커니즘의 이점을 원했습니다. 불행히도 그것은 불가능한 것처럼 보입니다.부분적으로 Cap'n Proto 메시지 읽기/쓰기
가장 큰 문제는 단일 스레드 인 서버 측 (다중 스레드에 심각한 인수가없는 경우에도 그대로 유지됨)이며 자체 폴링 기반 루프를 사용합니다. 모든 이벤트는 부분적으로 읽혀지며, 서버는 모든 이벤트가 완전히 읽히기를 기다리는 것을 차단할 수 없습니다. 이것이 내가 멈추는 곳입니다. 우리는 우리 자신의 프로토콜과 메시지를 감쌀 수있는 클래스를 가지고 있습니다.이 프로토콜은 파일 디스크립터의 바이트를 소비하고 이벤트가 완전히 읽혀질 때이를 알려 서버가 처리 할 수 있도록합니다. 나는 Cap'n Proto 인터페이스 (직렬화, 비동기 직렬화)의 대부분을 분석 한 것으로 보이며 수정없이 같은 방식으로 사용할 수 없다고 생각합니다.
정말보고 싶었습니다. 내가 그랬어?
감사합니다. 스택 오버플로에 적극적으로 참여하는 코드 작성자에게 정말 감사드립니다. – zoska
packed 메시지에도 expectedSizeInWordsFromPrefix가 작동합니까? 나는 항상 거대한 숫자를 얻는다. – hunyadym
@hunyadym 아니, 포장 된 메시지에는 작동하지 않는다. 압축 된 메시지에 이와 같은 것을 구현하는 것은 실제로 다소 어려울 것입니다. 명시 적으로 길이 접 두부 작성하는 것이 더 나을 것입니다. :/나는이 문제를 제기했다 : https://github.com/capnproto/capnproto/issues/590 –