Skip to content

Commit

Permalink
Removed __defineGetter__ and __defineSetter__
Browse files Browse the repository at this point in the history
  • Loading branch information
christkv committed Jan 20, 2012
1 parent a17e938 commit 933adfc
Show file tree
Hide file tree
Showing 9 changed files with 302 additions and 193 deletions.
41 changes: 40 additions & 1 deletion docs/sphinx-docs/source/api-documentation.rst
Expand Up @@ -10,4 +10,43 @@ The Node.JS MongoDB Driver API
Get's called in case the request fails. And a lot of other
text so we need multiple lines
:throws SomeError: For whatever reason in that case.
:returns: Something
:returns: Something

.. code-block:: javascript
var ensureConnection = function(test, numberOfTries, callback) {
// Replica configuration
var replSet = new ReplSetServers( [
new Server( RS.host, RS.ports[1], { auto_reconnect: true } ),
new Server( RS.host, RS.ports[0], { auto_reconnect: true } ),
new Server( RS.host, RS.ports[2], { auto_reconnect: true } )
],
{rs_name:RS.name}
);
if(numberOfTries <= 0) return callback(new Error("could not connect correctly"), null);
var db = new Db('integration_test_', replSet);
// Print any errors
db.on("error", function(err) {
console.log("============================= ensureConnection caught error")
console.dir(err)
if(err != null && err.stack != null) console.log(err.stack)
db.close();
})
// Open the db
db.open(function(err, p_db) {
// Close connections
db.close();
// Process result
if(err != null) {
// Wait for a sec and retry
setTimeout(function() {
numberOfTries = numberOfTries - 1;
ensureConnection(test, numberOfTries, callback);
}, 1000);
} else {
return callback(null, p_db);
}
})
}
14 changes: 11 additions & 3 deletions lib/mongodb/bson/objectid.js
Expand Up @@ -27,6 +27,7 @@ var checkForHexRegExp = new RegExp("^[0-9a-fA-F]{24}$");

function ObjectID (id) {
this._bsontype = 'ObjectID';

// Throw an error if it's not a valid setup
if(id != null && 'number' != typeof id && (id.length != 12 && id.length != 24)) throw new Error("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters in hex format");
// Generate id based on the input
Expand Down Expand Up @@ -142,9 +143,16 @@ ObjectID.prototype.equals = function equals (otherID) {
* @return {Number}
*/

ObjectID.prototype.__defineGetter__("generationTime", function() {
return Math.floor(BinaryParser.decodeInt(this.id.substring(0,4), 32, true, true));
});
Object.defineProperty(ObjectID.prototype, "generationTime", {
enumerable: true
, get: function () {
return Math.floor(BinaryParser.decodeInt(this.id.substring(0,4), 32, true, true));
}
, set: function (value) {
var value = BinaryParser.encodeInt(value, 32, true, true);
this.id = value + this.id.substr(4);
}
});

/**
* Returns the Date that his ID was generated.
Expand Down
20 changes: 10 additions & 10 deletions lib/mongodb/collection.js
Expand Up @@ -47,18 +47,18 @@ function Collection (db, collectionName, pkFactory, options) {
this.pkFactory = pkFactory == null
? ObjectID
: pkFactory;

Object.defineProperty(this, "hint", {
enumerable: true
, get: function () {
return this.internalHint;
}
, set: function (v) {
this.internalHint = this.normalizeHintField(v);
}
});
};

Object.defineProperty(Collection.prototype, "hint", {
enumerable: true
, get: function () {
return this.internalHint;
}
, set: function (v) {
this.internalHint = this.normalizeHintField(v);
}
});

/**
* Inserts `docs` into the db.
*
Expand Down
185 changes: 92 additions & 93 deletions lib/mongodb/connection/repl_set_servers.js
Expand Up @@ -115,111 +115,110 @@ var ReplSetServers = exports.ReplSetServers = function(servers, options) {
} else {
this.servers = servers;
}
}

// Auto Reconnect property
Object.defineProperty(this, "autoReconnect", { enumerable: true
, get: function () {
return true;
}
});

// Get Read Preference method
Object.defineProperty(this, "readPreference", { enumerable: true
, get: function () {
if(this._readPreference == null && this.readSecondary) {
return Server.READ_SECONDARY;
} else if(this._readPreference == null && !this.readSecondary) {
return Server.READ_PRIMARY;
} else {
return this._readPreference;
}
}
});
}
};

// Db Instances
Object.defineProperty(this, "dbInstances", {enumerable:true
, get: function() {
var servers = this.allServerInstances();
return servers[0].dbInstances;
}
})
inherits(ReplSetServers, SimpleEmitter);

// Auto Reconnect property
Object.defineProperty(this, "host", { enumerable: true
, get: function () {
if (this.primary != null) return this.primary.host;
// Auto Reconnect property
Object.defineProperty(ReplSetServers.prototype, "autoReconnect", { enumerable: true
, get: function () {
return true;
}
});

// Get Read Preference method
Object.defineProperty(ReplSetServers.prototype, "readPreference", { enumerable: true
, get: function () {
if(this._readPreference == null && this.readSecondary) {
return Server.READ_SECONDARY;
} else if(this._readPreference == null && !this.readSecondary) {
return Server.READ_PRIMARY;
} else {
return this._readPreference;
}
});
}
});

Object.defineProperty(this, "port", { enumerable: true
, get: function () {
if (this.primary != null) return this.primary.port;
}
});
// Db Instances
Object.defineProperty(ReplSetServers.prototype, "dbInstances", {enumerable:true
, get: function() {
var servers = this.allServerInstances();
return servers[0].dbInstances;
}
})

Object.defineProperty(this, "read", { enumerable: true
, get: function () {
return this.secondaries.length > 0 ? this.secondaries[0] : null;
}
});
// Auto Reconnect property
Object.defineProperty(ReplSetServers.prototype, "host", { enumerable: true
, get: function () {
if (this.primary != null) return this.primary.host;
}
});

Object.defineProperty(ReplSetServers.prototype, "port", { enumerable: true
, get: function () {
if (this.primary != null) return this.primary.port;
}
});

// Get list of secondaries
Object.defineProperty(this, "secondaries", {enumerable: true
, get: function() {
var keys = Object.keys(this._state.secondaries);
var array = new Array(keys.length);
// Convert secondaries to array
for(var i = 0; i < keys.length; i++) {
array[i] = this._state.secondaries[keys[i]];
}
return array;
}
});
Object.defineProperty(ReplSetServers.prototype, "read", { enumerable: true
, get: function () {
return this.secondaries.length > 0 ? this.secondaries[0] : null;
}
});

// Get list of all secondaries including passives
Object.defineProperty(this, "allSecondaries", {enumerable: true
, get: function() {
return this.secondaries.concat(this.passives);
}
});

// Get list of arbiters
Object.defineProperty(this, "arbiters", {enumerable: true
, get: function() {
var keys = Object.keys(this._state.arbiters);
var array = new Array(keys.length);
// Convert arbiters to array
for(var i = 0; i < keys.length; i++) {
array[i] = this._state.arbiters[keys[i]];
}
return array;
}
});

// Get list of passives
Object.defineProperty(this, "passives", {enumerable: true
, get: function() {
var keys = Object.keys(this._state.passives);
var array = new Array(keys.length);
// Convert arbiters to array
for(var i = 0; i < keys.length; i++) {
array[i] = this._state.passives[keys[i]];
}
return array;
// Get list of secondaries
Object.defineProperty(ReplSetServers.prototype, "secondaries", {enumerable: true
, get: function() {
var keys = Object.keys(this._state.secondaries);
var array = new Array(keys.length);
// Convert secondaries to array
for(var i = 0; i < keys.length; i++) {
array[i] = this._state.secondaries[keys[i]];
}
});
return array;
}
});

// Master connection property
Object.defineProperty(this, "primary", { enumerable: true
, get: function () {
return this._state != null ? this._state.master : null;
// Get list of all secondaries including passives
Object.defineProperty(ReplSetServers.prototype, "allSecondaries", {enumerable: true
, get: function() {
return this.secondaries.concat(this.passives);
}
});

// Get list of arbiters
Object.defineProperty(ReplSetServers.prototype, "arbiters", {enumerable: true
, get: function() {
var keys = Object.keys(this._state.arbiters);
var array = new Array(keys.length);
// Convert arbiters to array
for(var i = 0; i < keys.length; i++) {
array[i] = this._state.arbiters[keys[i]];
}
});
};
return array;
}
});

// Get list of passives
Object.defineProperty(ReplSetServers.prototype, "passives", {enumerable: true
, get: function() {
var keys = Object.keys(this._state.passives);
var array = new Array(keys.length);
// Convert arbiters to array
for(var i = 0; i < keys.length; i++) {
array[i] = this._state.passives[keys[i]];
}
return array;
}
});

inherits(ReplSetServers, SimpleEmitter);
// Master connection property
Object.defineProperty(ReplSetServers.prototype, "primary", { enumerable: true
, get: function () {
return this._state != null ? this._state.master : null;
}
});

// Allow setting the read preference at the replicaset level
ReplSetServers.prototype.setReadPreference = function(preference) {
Expand Down

0 comments on commit 933adfc

Please sign in to comment.