UNPKG

msful

Version:

Web API server for micro service.

205 lines (174 loc) 5.29 kB
// システムパラメータ. // // 起動引数で渡されるもの. // システムが発行するもの. // これらの情報と、環境変数から取得されるものなど. // // 他必要な情報を保持します. // // module.exports.create = function(users, conf, port, timeout, env, serverId, contentCache, contentClose, notCache, closeFlag, systemNanoTime, debugMode) { 'use strict'; // 定義. var constants = require("./constants"); // スタートアップ定義. var _USERS = users; // confが文字列の場合は、コンフィグフォルダとして、コンフィグ情報をロード. // それ以外はconfオブジェクトとして、利用. if(typeof(conf) == "string") { conf = require("./conf")(conf); } // バインドポート. var _PORT = port; var _ENV_PORT = constants.ENV_BIND_PORT; // 通信タイムアウト. var _TIMEOUT = timeout; var _ENV_TIMEOUT = constants.ENV_TIMEOUT; // 実行環境. var _ENV = env; var _ENV_ENV = constants.ENV_ENV; // コンテンツキャッシュ. var _CONTENT_CACHE = contentCache; var _ENV_CONTENT_CACHE = constants.ENV_CONTENT_CACHE; // コンテンツクローズモード. var _CONTENT_CLOSE = contentClose; var _ENV_CONTENT_CLOSE = constants.ENV_CONTENT_CLOSE; // 通信キャッシュ. var _NOT_CACHE = notCache; var _ENV_NOT_CACHE = constants.ENV_NOT_CACHE; // 通信クローズ. var _CLOSE_FLAG = closeFlag; var _ENV_CLOSE_FLAG = constants.ENV_CLOSE_FLAG; // サーバ固有ID. var _SERVER_ID = serverId; // SystemNanoTime. var _SYSTEM_NANO_TIME = systemNanoTime; // デバッグモード. var _ENV_DEBUG = constants.ENV_DEBUG; var _DEBUG_MODE = debugMode; var o = {}; // スタートアップ定義オブジェクト. o.getUsers = function() { return _USERS; } // 現状の動作条件を取得. o.getEnvironment = function() { if(_ENV == null) { _ENV = process.env[_ENV_ENV]; if(_ENV == null) { // 何も設定されていない場合のデフォルト値. _ENV = constants.DEFAULT_ENV; } } return _ENV; } // バインドポートを取得. o.getPort = function() { if(_PORT == null) { _PORT = process.env[_ENV_PORT]; if(_PORT == null) { // 何も設定されていない場合のデフォルト値. _PORT = constants.PORT; } } return _PORT; } // 通信タイムアウトを取得. o.getTimeout = function() { if(_TIMEOUT == null) { _TIMEOUT = process.env[_ENV_TIMEOUT]; if(_TIMEOUT == null) { // 何も設定されていない場合のデフォルト値. _TIMEOUT = constants.TIMEOUT; } } return _TIMEOUT; } // コンテンツキャッシュ条件を取得. o.isContentCache = function() { if(_CONTENT_CACHE == null) { _CONTENT_CACHE = process.env[_ENV_CONTENT_CACHE]; if(_CONTENT_CACHE == null) { // 何も設定されていない場合のデフォルト値. _CONTENT_CACHE = constants.CONTENT_CACHE; } } return _CONTENT_CACHE; } // コンテンツクローズ条件を取得. o.isContentClose = function() { if(_CONTENT_CLOSE == null) { _CONTENT_CLOSE = process.env[_ENV_CONTENT_CLOSE]; if(_CONTENT_CLOSE == null) { // 何も設定されていない場合のデフォルト値. _CONTENT_CLOSE = constants.CONTENT_CLOSE; } } return _CONTENT_CLOSE; } // 通信キャッシュOffを取得. o.isNotCache = function() { if(_NOT_CACHE == null) { _NOT_CACHE = process.env[_ENV_NOT_CACHE]; if(_NOT_CACHE == null) { // 何も設定されていない場合のデフォルト値. _NOT_CACHE = constants.NOT_CACHE; } } return _NOT_CACHE; } // 通信Close条件を取得. o.isCloseFlag = function() { if(_CLOSE_FLAG == null) { _CLOSE_FLAG = process.env[_ENV_CLOSE_FLAG]; if(_CLOSE_FLAG == null) { // 何も設定されていない場合のデフォルト値. _CLOSE_FLAG = constants.CLOSE_FLAG; } } return _CLOSE_FLAG; } // デバッグモードを取得. o.getDebugMode = function() { if(_DEBUG_MODE == null) { _DEBUG_MODE = process.env[_ENV_DEBUG]; if(_DEBUG_MODE == null) { // 何も設定されていない場合のデフォルト値. _DEBUG_MODE = constants.DEBUG_MODE; } } return _DEBUG_MODE; } // serverId固有IDを取得. o.getServerId = function() { return _SERVER_ID; } // systemNanoTimeを取得. o.getSystemNanoTime = function() { return _SYSTEM_NANO_TIME; } // コンフィグ情報を取得. o.getConfig = function() { return conf.getConfig(); } // 現状の動作環境のコンフィグを取得. o.getConfigEnv = function() { var env = this.getEnvironment(); var target = conf.getConfig(); if(target[env]) { return target[env]; } return conf; } // コンフィグデータを再読込. o.reloadConfig = function() { conf.reload(); return conf.getConfig(); } // コンフィグデータ最終読み込み時間. o.loadConfigTime = function() { return conf.getLoadTime(); } return o; }