NCBI C++ ToolKit
supported_assemblies_client.cpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /* $Id: supported_assemblies_client.cpp 68818 2015-09-04 16:42:53Z meric $
2  * ===========================================================================
3  *
4  * PUBLIC DOMAIN NOTICE
5  * National Center for Biotechnology Information
6  *
7  * This software/database is a "United States Government Work" under the
8  * terms of the United States Copyright Act. It was written as part of
9  * the author's official duties as a United States Government employee and
10  * thus cannot be copyrighted. This software/database is freely available
11  * to the public for use. The National Library of Medicine and the U.S.
12  * Government have not placed any restriction on its use or reproduction.
13  *
14  * Although all reasonable efforts have been taken to ensure the accuracy
15  * and reliability of the software and data, the NLM and the U.S.
16  * Government do not and cannot warrant the performance or results that
17  * may be obtained by using this software or data. The NLM and the U.S.
18  * Government disclaim all warranties, express or implied, including
19  * warranties of performance, merchantability or fitness for any particular
20  * purpose.
21  *
22  * Please cite the author in any work or product based on this material.
23  *
24  * ===========================================================================
25  *
26  * Authors: Peter Meric
27  *
28  * File Description: NetSchedule grid client for TrackManager supported-assemblies request/reply
29  *
30  */
31 
32 #include <ncbi_pch.hpp>
35 
36 
39 
40 
42  const string& NS_service,
43  const string& NS_queue,
44  const string& client_name,
45  const string& NC_registry_section
46  )
47  : TBaseClient(NS_service, NS_queue, client_name, NC_registry_section)
48 {
49 }
50 
52  const string& NS_registry_section,
53  const string& NC_registry_section
54  )
55  : TBaseClient(NS_registry_section, NC_registry_section)
56 {
57 }
58 
60 {
61 }
62 
65 {
66  CRef<TReply> reply;
67  try {
68  reply.Reset(new TReply());
69  TBaseClient::Ask(request, *reply);
70  }
71  catch (const CException& e) {
72  NCBI_REPORT_EXCEPTION("Exception communicating with TMS-SupportedAssemblies service ", e);
73  reply.Reset();
74  }
75  return reply;
76 }
77 
78 bool
80 {
81  CRef<TRequest> req(new TRequest());
82  req->SetAssembly_acc(assm_acc);
83  CConstRef<TReply> reply = Fetch(*req);
84  if (reply.IsNull()) {
85  NCBI_THROW(CException, eUnknown, "Unable to determine support for assembly");
86  }
87  if (reply->IsSetMessages()) {
88  ITERATE (TReply::TMessages, it, reply->GetMessages()) {
90  switch (e->GetLevel()) {
92  ERR_POST(Warning << e->GetMessage());
93  break;
95  ERR_POST(Info << e->GetMessage());
96  break;
97  default:
98  ERR_POST(e->GetMessage());
99  }
100  }
101  }
102  if (!reply->IsSetReply()) {
103  NCBI_THROW(CException, eUnknown, "Unable to determine support for assembly");
104  }
105  return reply->GetReply().GetAssembly_acc();
106 }
107 
108 
CConstRef –.
Definition: ncbiobj.hpp:1266
CGridRPCBaseClient<typename TConnectTraits>
pair< CNetScheduleJob, bool > Ask(const TRequest &request, TReply &reply) const
Sends an ASN.1 request, waiting specified time.
CRef –.
Definition: ncbiobj.hpp:618
objects::CTMgr_SupportedAssembliesRequest TRequest
objects::CTMgr_SupportedAssembliesReply TReply
TReplyRef Fetch(const TRequest &request) const
CTMS_SupportedAssemblies_Client(const string &NS_service, const string &NS_queue, const string &client_name, const string &NC_registry_section)
bool IsAssemblySupported(const string &assm_acc) const
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
Definition: ncbimisc.hpp:815
#define ERR_POST(message)
Error posting with file, line number information but without error codes.
Definition: ncbidiag.hpp:186
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
Definition: ncbiexpt.hpp:704
void Warning(CExceptionArgs_Base &args)
Definition: ncbiexpt.hpp:1191
#define NCBI_REPORT_EXCEPTION(title, ex)
Generate a report on the exception.
Definition: ncbiexpt.hpp:755
void Info(CExceptionArgs_Base &args)
Definition: ncbiexpt.hpp:1185
bool IsNull(void) const THROWS_NONE
Check if pointer is null – same effect as Empty().
Definition: ncbiobj.hpp:1401
void Reset(void)
Reset reference object.
Definition: ncbiobj.hpp:773
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
@ eTMgr_MessageLevel_warning
@ eTMgr_MessageLevel_info
USING_SCOPE(objects)
NetSchedule grid client for TrackManager supported-assemblies request/reply.
Modified on Fri Dec 08 08:19:23 2023 by modify_doxy.py rev. 669887