Пример #1
0
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>();
}