CRef<CTMgr_DisplayTrackReply> CTrackMgrClient::s_Ask(const CTMgr_DisplayTrackRequest& request) { static const CNcbiApplication* app = CNcbiApplication::Instance(); const CNcbiRegistry& cfg = app->GetConfig(); const string type = cfg.GetString("TrackMgr", "type", "service"); const string name = cfg.GetString("TrackMgr", "name", "TrackMgr"); const string port_str = cfg.GetString("TrackMgr", "port", "47228"); const unsigned int port(NStr::StringToInt(port_str)); CRef<CTrackMgrClient> client; if (NStr::EqualNocase(type, "service")) { client.Reset(new CTrackMgrClient(name)); } else if (!NStr::EqualNocase(type, "sock")) { NCBI_THROW(CException, eUnknown, "Invalid connection type"); } else { client.Reset(new CTrackMgrClient(name, port)); } return client.NotNull() ? client->AskDefault_display_tracks(request) : CRef<CTMgr_DisplayTrackReply>(); }