text: //
  //  AppServiceLocator.cpp
  //  MyMonero
  //
  //  Copyright (c) 2014-2019, MyMonero.com
  //
  //  All rights reserved.
  //
  //  Redistribution and use in source and binary forms, with or without modification, are
  //  permitted provided that the following conditions are met:
  //
  //  1. Redistributions of source code must retain the above copyright notice, this list of
  //	conditions and the following disclaimer.
  //
  //  2. Redistributions in binary form must reproduce the above copyright notice, this list
  //	of conditions and the following disclaimer in the documentation and/or other
  //	materials provided with the distribution.
  //
  //  3. Neither the name of the copyright holder nor the names of its contributors may be
  //	used to endorse or promote products derived from this software without specific
  //	prior written permission.
  //
  //  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
  //  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  //  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
  //  THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  //  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  //  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  //  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  //  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
  //  THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  //
  //
  
  #include "AppServiceLocator.hpp"
  using namespace App;
  #include <boost/asio.hpp>
  using namespace boost::asio;
  #include "../Dispatch/Dispatch.asio.hpp"
  using namespace Dispatch;
  //
  //
  class App::ServiceLocator_SpecificImpl
  {
  public:
  	io_context io_ctx;
  	io_ctx_thread_holder ctx_thread_holder{io_ctx};
  	//
  	ServiceLocator_SpecificImpl() {}
  	~ServiceLocator_SpecificImpl() {}
  };
  //
  ServiceLocator::~ServiceLocator()
  {
  	delete _pImpl; // must free
  }
  //
  ServiceLocator &ServiceLocator::build(
  	std::shared_ptr<string> documentsPath,
  	network_type nettype,
  	std::shared_ptr<HTTPRequests::RequestFactory> httpRequestFactory
  ) {
  	_pImpl = new ServiceLocator_SpecificImpl();
  	auto dispatch_ptr = std::make_shared<Dispatch_asio>(_pImpl->ctx_thread_holder);
  	//
  	return _shared_build(
  		documentsPath,
  		nettype,
  		httpRequestFactory,
  		std::move(dispatch_ptr)
  	);
  }
  
  
  