From 6c5a22e7afd7530148f3eef6d4722cd725f28851 Mon Sep 17 00:00:00 2001 From: Adam Kocoloski Date: Sun, 30 Aug 2009 17:56:56 +0000 Subject: refactor CouchDB startup procedure, see COUCHDB-216 for details git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@809392 13f79535-47bb-0310-9956-ffa450edef68 --- src/couchdb/couch_app.erl | 53 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/couchdb/couch_app.erl (limited to 'src/couchdb/couch_app.erl') diff --git a/src/couchdb/couch_app.erl b/src/couchdb/couch_app.erl new file mode 100644 index 00000000..98615e50 --- /dev/null +++ b/src/couchdb/couch_app.erl @@ -0,0 +1,53 @@ +% 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. + +-module(couch_app). + +-behaviour(application). + +-include("couch_db.hrl"). + +-export([start/2, stop/1]). + +start(_Type, DefaultIniFiles) -> + IniFiles = get_ini_files(DefaultIniFiles), + case start_apps([crypto, sasl, inets, oauth, ibrowse, mochiweb]) of + ok -> + couch_server_sup:start_link(IniFiles); + {error, Reason} -> + {error, Reason} + end. + +stop(_) -> + ok. + +get_ini_files(Default) -> + case init:get_argument(couch_ini) of + error -> + Default; + {ok, [[]]} -> + Default; + {ok, [Values]} -> + Values + end. + +start_apps([]) -> + ok; +start_apps([App|Rest]) -> + case application:start(App) of + ok -> + start_apps(Rest); + {error, {already_started, App}} -> + start_apps(Rest); + {error, _Reason} -> + {error, {app_would_not_start, App}} + end. -- cgit v1.2.3