diff options
Diffstat (limited to 's/writeback_listener.h')
-rw-r--r-- | s/writeback_listener.h | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/s/writeback_listener.h b/s/writeback_listener.h index 7335999..0125073 100644 --- a/s/writeback_listener.h +++ b/s/writeback_listener.h @@ -35,10 +35,30 @@ namespace mongo { */ class WriteBackListener : public BackgroundJob { public: + + class ConnectionIdent { + public: + ConnectionIdent( const string& ii , ConnectionId id ) + : instanceIdent( ii ) , connectionId( id ) { + } + + bool operator<(const ConnectionIdent& other) const { + if ( instanceIdent == other.instanceIdent ) + return connectionId < other.connectionId; + + return instanceIdent < other.instanceIdent; + } + + string toString() const { return str::stream() << instanceIdent << ":" << connectionId; } + + string instanceIdent; + ConnectionId connectionId; + }; + static void init( DBClientBase& conn ); static void init( const string& host ); - static BSONObj waitFor( ConnectionId connectionId, const OID& oid ); + static BSONObj waitFor( const ConnectionIdent& ident, const OID& oid ); protected: WriteBackListener( const string& addr ); @@ -59,7 +79,7 @@ namespace mongo { }; static mongo::mutex _seenWritebacksLock; // protects _seenWritbacks - static map<ConnectionId,WBStatus> _seenWritebacks; // connectionId -> last write back GLE + static map<ConnectionIdent,WBStatus> _seenWritebacks; // connectionId -> last write back GLE }; void waitForWriteback( const OID& oid ); |