場合によってはFTPサーバーとして機能するgRPCサーバー(c++)を書きたいです。詳細には、クライアントはその名前でファイルを要求しますが、サーバーはファイルの内容が存在する場合はそれを返します。sendfile
従来のソケット プログラミングでは、Linux システムを利用してゼロコピーを実装できます。これは、ファイルの内容がユーザー空間に転送されることなく、ディスクから直接ソケット バッファーに移動することを意味します。しかし、gRPC の世界では、ソケットの詳細は隠されています。つまり、ソケットの背後にあるファイル記述子にアクセスできない可能性がありますsendfile
。
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);
したがって、最初にファイル バイトをメモリに読み込み、その後 gRPC 応答で返す必要があります。それは不必要なパフォーマンスの低下です。APIまたは回避策があるかどうか疑問に思っています。