UNPKG

thinknode

Version:

A fast, flexible and all-in-one web framework for node.js.

203 lines (147 loc) 6.88 kB
'use strict'; exports.__esModule = true; var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _Cache = require('../Cache/Cache'); var _Cache2 = _interopRequireDefault(_Cache); var _MemcacheSocket = require('../Socket/MemcacheSocket'); var _MemcacheSocket2 = _interopRequireDefault(_MemcacheSocket); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * * @author richen * @copyright Copyright (c) 2015 - <richenlin(at)gmail.com> * @license MIT * @version 15/12/2 */ var _class = function (_cache) { (0, _inherits3.default)(_class, _cache); function _class() { (0, _classCallCheck3.default)(this, _class); return (0, _possibleConstructorReturn3.default)(this, _cache.apply(this, arguments)); } _class.prototype.init = function init(options) { this.keyName = options.cache_key_prefix; _cache.prototype.init.call(this, options); this.options.cache_key_prefix = (~THINK.config('cache_key_prefix').indexOf(':') ? THINK.config('cache_key_prefix') : THINK.config('cache_key_prefix') + ':') + 'Session:'; var key = THINK.hash(this.options.memcache_host + '_' + this.options.memcache_port); if (!(key in THINK_CACHES.INSTANCES.CACHE)) { THINK_CACHES.INSTANCES.CACHE[key] = new _MemcacheSocket2.default(this.options); } this.handle = THINK_CACHES.INSTANCES.CACHE[key]; }; /** * * @param name */ _class.prototype.get = function () { var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(name) { var data; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return this.handle.wrap('get', [this.options.cache_key_prefix + this.keyName]); case 2: data = _context.sent; if (data) { _context.next = 5; break; } return _context.abrupt('return', ''); case 5: _context.prev = 5; data = JSON.parse(data); if (!(data.expire && Date.now() > data.expire)) { _context.next = 12; break; } this.handle.wrap('del', [this.options.cache_key_prefix + this.keyName]); return _context.abrupt('return', ''); case 12: return _context.abrupt('return', data[name]); case 13: _context.next = 19; break; case 15: _context.prev = 15; _context.t0 = _context['catch'](5); this.handle.wrap('del', [this.options.cache_key_prefix + this.keyName]); return _context.abrupt('return', ''); case 19: case 'end': return _context.stop(); } } }, _callee, this, [[5, 15]]); })); function get(_x) { return _ref.apply(this, arguments); } return get; }(); /** * * @param name * @param value * @param timeout */ _class.prototype.set = function () { var _ref2 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(name, value) { var _content; var timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.options.cache_timeout; var rdata, content; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return this.handle.wrap('get', [this.options.cache_key_prefix + this.keyName]); case 2: rdata = _context2.sent; content = (_content = {}, _content[name] = value, _content.expire = Date.now() + timeout * 1000, _content.timeout = timeout, _content); _context2.prev = 4; if (!THINK.isEmpty(rdata)) { rdata = JSON.parse(rdata); content = THINK.extend(false, rdata, content); } return _context2.abrupt('return', this.handle.wrap('set', [this.options.cache_key_prefix + this.keyName, (0, _stringify2.default)(content), timeout])); case 9: _context2.prev = 9; _context2.t0 = _context2['catch'](4); return _context2.abrupt('return', _promise2.default.resolve()); case 12: case 'end': return _context2.stop(); } } }, _callee2, this, [[4, 9]]); })); function set(_x2, _x3) { return _ref2.apply(this, arguments); } return set; }(); /** * * @param */ _class.prototype.rm = function rm() { return this.handle.wrap('del', [this.options.cache_key_prefix + this.keyName]); }; return _class; }(_Cache2.default); exports.default = _class;