[英]Use pre-existing socket with thrift server?
如果我有一個預先存在的打開文件描述符,指的是一個已經綁定和監聽的套接字,我如何使用它來初始化一個 thrift 服務器對象(最好是非阻塞服務器)並開始接受 RPC 請求? 我見過的各種 ThriftSocket 對象只接受地址/端口(或只是端口)參數來自己創建套接字。
對於客戶端,您有一個構造函數來從文件描述符構造套接字:
/**
* Constructor to create socket from file descriptor.
*/
TSocket(THRIFT_SOCKET socket, std::shared_ptr<TConfiguration> config = nullptr);
在 Unix 系統上,您可以發現THRIFT_SOCKET
是一個int
,只需在此處輸入您的描述符即可!
不幸的是,服務器端的情況並非如此。 繼承TServerSocket
不會解決您的問題,因為內部套接字成員是私有的。
但是,thrift 服務器都以TServerTransport
作為參數。 因此,想法是繼承TServerTransport
來創建自定義TServerSocket
。 原始的TServerSocket
可以在這里提供幫助。
但是,事實上他們沒有添加此功能的可能性可能意味着這樣做是不安全的。 除了檢查TServerSocket.cpp
以檢查內部實現TServerSocket.cpp
,您別無選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.