मैं लाइब्रेरी को बूस्ट में बदलने की प्रक्रिया में हूं। एसीओ (जिसने अब तक बहुत अच्छा काम किया है), लेकिन मैंने डिज़ाइन निर्णय के संबंध में एक ठोकर खाई मार दी है।Boost.Asio में एक साथ एसएसएल सॉकेट और गैर-एसएसएल सॉकेट का उपयोग करना?
Boost.Asio SSL के लिए समर्थन प्रदान करता है, लेकिन boost::asio::ssl::stream<boost::asio::ip::tcp::socket>
प्रकार सॉकेट के लिए उपयोग किया जाना चाहिए। मेरे पुस्तकालय एसएसएल सर्वर से कनेक्ट या सामान्य रूप से जोड़ने का विकल्प है, तो मैं दो सॉकेट इस तरह के साथ एक वर्ग बनाया है:
class client : public boost::enable_shared_from_this<client>
{
public:
client(boost::asio::io_service & io_service, boost::asio::ssl::context & context) : socket_(io_service), secureSocket_(io_service, context) {}
private:
boost::asio::ip::tcp::socket socket_;
boost::asio::ssl::stream<boost::asio::ip::tcp::socket> secureSocket_;
};
और उस संदर्भ socket_
संचालकों का एक समूह देखते हैं के भीतर। (उदाहरण के लिए, मेरे पास कई स्थानों पर socket_.is_open()
है, जो अन्य सॉकेट के लिए secureSocket_.lowest_layer().is_open()
बनने की आवश्यकता होगी।)
क्या कोई इस बारे में जाने का सबसे अच्छा तरीका सुझा सकता है? मैं इस उद्देश्य के लिए सिर्फ एक अलग वर्ग नहीं बनाना चाहता, क्योंकि इसका मतलब बहुत सारे कोड को डुप्लिकेट करना होगा।
संपादित करें: मैंने अपना मूल प्रश्न दोहराया क्योंकि मैंने ओपनएसएसएल फ़ंक्शन के उद्देश्य को गलत समझा।
पहले दृष्टिकोण मैं क्या कर समाप्त हो गया है, लेकिन मैं सार वर्ग विचार की तरह है। मैं इसे देख लूंगा - धन्यवाद। – DSB