#ifndef THRIFT_SERVER_TNONBLOCKINGSERVEROBSERVER_H_ #define THRIFT_SERVER_TNONBLOCKINGSERVEROBSERVER_H_ 1 #include namespace apache { namespace thrift { namespace server { class TNonblockingServerObserver { public: virtual ~TNonblockingServerObserver() {} TNonblockingServerObserver() : sampleRate_(0) {} TNonblockingServerObserver(uint32_t sampleRate) : sampleRate_(sampleRate) {} class CallTimestamps { public: uint64_t readBegin; uint64_t readEnd; uint64_t processBegin; uint64_t processEnd; uint64_t writeBegin; uint64_t writeEnd; CallTimestamps() { init(); } void init() { readBegin = readEnd = 0; processBegin = processEnd = 0; writeBegin = writeEnd = 0; } }; // Notifications for various events on the TNonblockingServer virtual void connDropped() = 0; virtual void taskKilled() = 0; virtual void callCompleted(const CallTimestamps& runtimes) = 0; // The observer has to specify a sample rate for callCompleted notifications inline uint32_t getSampleRate() const { return sampleRate_; } protected: uint32_t sampleRate_; }; }}} // apache::thrift::server #endif