summaryrefslogtreecommitdiff
path: root/util/message.h
diff options
context:
space:
mode:
authorAntonin Kral <a.kral@bobek.cz>2010-09-24 19:01:03 +0200
committerAntonin Kral <a.kral@bobek.cz>2010-09-24 19:01:03 +0200
commit0ad0c09511a04ebe837f2acb859d47f2aa4e038a (patch)
tree109babcb556f6c5884b77853120717f0617c7a1e /util/message.h
parent03e58f81cad8dd4cfcd1530f327116f0cff6ceb3 (diff)
downloadmongodb-0ad0c09511a04ebe837f2acb859d47f2aa4e038a.tar.gz
Imported Upstream version 1.6.3
Diffstat (limited to 'util/message.h')
-rw-r--r--util/message.h34
1 files changed, 32 insertions, 2 deletions
diff --git a/util/message.h b/util/message.h
index 13f31df..203ad83 100644
--- a/util/message.h
+++ b/util/message.h
@@ -30,7 +30,7 @@ namespace mongo {
class PiggyBackData;
typedef AtomicUInt MSGID;
- class Listener {
+ class Listener : boost::noncopyable {
public:
Listener(const string &ip, int p, bool logConnect=true ) : _port(p), _ip(ip), _logConnect(logConnect), _elapsedTime(0){ }
virtual ~Listener() {
@@ -74,7 +74,7 @@ namespace mongo {
static const Listener* _timeTracker;
};
- class AbstractMessagingPort {
+ class AbstractMessagingPort : boost::noncopyable {
public:
virtual ~AbstractMessagingPort() { }
virtual void reply(Message& received, Message& response, MSGID responseTo) = 0; // like the reply below, but doesn't rely on received.data still being available
@@ -86,6 +86,7 @@ namespace mongo {
virtual int getClientId(){
int x = remotePort();
x = x << 16;
+ x |= ( ( 0xFF0 & (long long)this ) >> 8 ); // lowest byte in pointer often meaningless
return x;
}
};
@@ -135,6 +136,11 @@ namespace mongo {
int _timeout;
int _logLevel; // passed to log() when logging errors
+ static void closeAllSockets(unsigned tagMask = 0xffffffff);
+
+ /* ports can be tagged with various classes. see closeAllSockets(tag). defaults to 0. */
+ unsigned tag;
+
friend class PiggyBackData;
};
@@ -169,6 +175,30 @@ namespace mongo {
return "";
}
}
+
+ inline bool opIsWrite( int op ){
+ switch ( op ){
+
+ case 0:
+ case opReply:
+ case dbMsg:
+ case dbQuery:
+ case dbGetMore:
+ case dbKillCursors:
+ return false;
+
+ case dbUpdate:
+ case dbInsert:
+ case dbDelete:
+ return false;
+
+ default:
+ PRINT(op);
+ assert(0);
+ return "";
+ }
+
+ }
#pragma pack(1)
/* see http://www.mongodb.org/display/DOCS/Mongo+Wire+Protocol