#pragma once #include #include #include #include namespace NYT { //////////////////////////////////////////////////////////////////////////////// class TPingableTransaction; // Don't want to include public.h to avoid polluting header with TIntrusivePtr template class TFuture; //////////////////////////////////////////////////////////////////////////////// // Each registered transaction must be removed from pinger // (using RemoveTransaction) before it is destroyed class ITransactionPinger : public TThrRefBase { public: virtual ~ITransactionPinger() = default; virtual ITransactionPingerPtr GetChildTxPinger() = 0; virtual void RegisterTransaction(const TPingableTransaction& pingableTx) = 0; virtual bool HasTransaction(const TPingableTransaction& pingableTx) = 0; virtual void RemoveTransaction(const TPingableTransaction& pingableTx) = 0; virtual TFuture AsyncAbortTransaction(const TTransactionId& transactionId) = 0; }; ITransactionPingerPtr CreateTransactionPinger(const TConfigPtr& config, IRawClientPtr rawClient); //////////////////////////////////////////////////////////////////////////////// } // namespace NYT