ferencd@0: ferencd@0: /** Tracer used to demonstrate logging communication between client and server. ferencd@0: */ ferencd@0: ferencd@0: class myTracer : public vmime::net::tracer ferencd@0: { ferencd@0: public: ferencd@0: ferencd@0: myTracer(vmime::shared_ptr stream, ferencd@0: vmime::shared_ptr serv, const int connectionId) ferencd@0: : m_stream(stream), m_service(serv), m_connectionId(connectionId) ferencd@0: { ferencd@0: } ferencd@0: ferencd@0: void traceSend(const vmime::string& line) ferencd@0: { ferencd@0: *m_stream << "[" << m_service->getProtocolName() << ":" << m_connectionId ferencd@0: << "] C: " << line << std::endl; ferencd@0: } ferencd@0: ferencd@0: void traceReceive(const vmime::string& line) ferencd@0: { ferencd@0: *m_stream << "[" << m_service->getProtocolName() << ":" << m_connectionId ferencd@0: << "] S: " << line << std::endl; ferencd@0: } ferencd@0: ferencd@0: private: ferencd@0: ferencd@0: vmime::shared_ptr m_stream; ferencd@0: vmime::shared_ptr m_service; ferencd@0: const int m_connectionId; ferencd@0: }; ferencd@0: ferencd@0: class myTracerFactory : public vmime::net::tracerFactory ferencd@0: { ferencd@0: public: ferencd@0: ferencd@0: myTracerFactory(vmime::shared_ptr stream) ferencd@0: : m_stream(stream) ferencd@0: { ferencd@0: } ferencd@0: ferencd@0: vmime::shared_ptr create ferencd@0: (vmime::shared_ptr serv, const int connectionId) ferencd@0: { ferencd@0: return vmime::make_shared (m_stream, serv, connectionId); ferencd@0: } ferencd@0: ferencd@0: private: ferencd@0: ferencd@0: vmime::shared_ptr m_stream; ferencd@0: }; ferencd@0: