Chromium Code Reviews| Index: lib/src/appengine_internal.dart |
| diff --git a/lib/src/appengine_internal.dart b/lib/src/appengine_internal.dart |
| index 3ed2cd7494bdff3f68f93c5c15367f93d936891e..0f217b69fdf9dac220897fff4c6f7c219a882c75 100644 |
| --- a/lib/src/appengine_internal.dart |
| +++ b/lib/src/appengine_internal.dart |
| @@ -97,12 +97,17 @@ Future<ContextRegistry> initializeAppEngine() { |
| } |
| } |
| - var context = getDockerContext(); |
| - var rpcService = initializeRPC(); |
| - |
| - return getStorage(context).then((storage) { |
| - return new ContextRegistry(rpcService, storage, context); |
| - }); |
| + if (_contextRegistry != null) { |
| + return new Future.value(_contextRegistry); |
| + } else { |
| + var context = getDockerContext(); |
| + var rpcService = initializeRPC(); |
| + |
| + return getStorage(context).then((storage) { |
| + _contextRegistry = new ContextRegistry(rpcService, storage, context); |
| + return _contextRegistry; |
| + }); |
| + } |
| } |
| void initializeContext(Services services) { |
| @@ -127,14 +132,20 @@ void initializeRequestSpecificServices(Services services) { |
| users.registerUserService(services.users); |
| } |
| -Future runAppEngine(void handler(request, context), void onError(e, s)) { |
| +Future withAppEngineServices(Future callback()) { |
| return initializeAppEngine().then((ContextRegistry contextRegistry) { |
| - _contextRegistry = contextRegistry; |
| - var appengineServer = new AppEngineHttpServer(_contextRegistry); |
| - var backgroundServices = _contextRegistry.newBackgroundServices(); |
| - |
| - ss.fork(() { |
| + return ss.fork(() { |
| + var backgroundServices = _contextRegistry.newBackgroundServices(); |
| initializeContext(backgroundServices); |
| + return callback(); |
| + }); |
| + }); |
| +} |
| + |
| +Future runAppEngine(void handler(request, context), void onError(e, s)) { |
| + return initializeAppEngine().then((ContextRegistry contextRegistry) { |
|
wibling
2014/12/03 11:11:03
Why call initializeAppEngine here?
Isn't it enou
kustermann
2014/12/03 11:14:42
Sure. Forgot to remove that wrapper.
Done
|
| + return withAppEngineServices(() { |
| + var appengineServer = new AppEngineHttpServer(_contextRegistry); |
| appengineServer.run((request, context) { |
| ss.fork(() { |
| initializeRequestSpecificServices(context.services); |
| @@ -170,7 +181,5 @@ Future runAppEngine(void handler(request, context), void onError(e, s)) { |
| }); |
| return appengineServer.done; |
| }); |
| - |
| - return new Future.value(); |
| }); |
| } |