// Copyright 2015 rain1017. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or // implied. See the License for the specific language governing // permissions and limitations under the License. See the AUTHORS file // for names of contributors. 'use strict'; exports.hashDispatch = function(id, servers){ if(servers.length === 0){ return; } if(id === null || id === undefined){ return servers[0]; } if (typeof(id) !== 'string') { id = String(id); } var md5 = require('crypto').createHash('md5').update(id).digest('hex'); var hash = parseInt(md5.substr(0, 8), 16); return servers[hash % servers.length]; };