我正在實現一個Ruby中的小型節儉(0.6.0)服務器,以便向具有多個連接(多個客戶端)的另一個協議的代理角色發送到單個服務器。我希望能夠在服務器端保持每個客戶端的數據,並跟蹤處理函數的多個調用中的「會話」參數。在節儉處理程序函數中獲取對等地址
我目前使用Thrift::NonblockingServer
作爲SimpleServer
似乎不允許併發連接。
我知道如何使用TCPSocket::peeraddr
但Thrift::NonblockingServer::IOManager::Worker::run
它讀取幀創建一個臨時MemoryBufferTransport
並傳遞作爲輸入/輸出協議下到處理器,使得它似乎是信息不從那裏傳下來的。
有沒有一個乾淨的方法來做到這一點? 我正在考慮重新定義上面提到的Thrift::NonblockingServer::IOManager::Worker::run
以在其他參數中包含fd或其他ID以處理或增強原始實例,但是因爲我還必須擔心生成的一個紅寶石代碼層(process_*
方法class Processor
)似乎有點沉重。
我不知道以前是否有人做過這樣的事情。
謝謝!
p.s.這是類似的問題this C++ thrift question