Socket: Add a 'facet<>()' member to access protocol-facets from generic socket handles
[senf.git] / Socket / SocketHandle.cti
index 39b3273..cbd9089 100644 (file)
@@ -187,6 +187,17 @@ prefix_ std::string senf::SocketHandle<SPolicy>::dumpState(unsigned lod)
     return detail::dumpState(map);
 }
 
+template <class SPolicy>
+template <class Facet>
+prefix_ Facet const & senf::SocketHandle<SPolicy>::facet()
+
+{
+    try {
+        return dynamic_cast<Facet const &>(protocol());
+    }
+    SENF_WRAP_EXC(std::bad_cast)
+}
+
 ///////////////////////////////////////////////////////////////////////////
 // senf::ProtocolSocketBody<SProtocol>