簡體   English   中英

將預先存在的套接字與 thrift 服務器一起使用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM