71 #define NCBI_USE_ERRCODE_X Objtools_Rd_Id2Base
79 {
"", objects::CSeq_id::eSNPScaleLimit_Default},
80 {
"Unit", objects::CSeq_id::eSNPScaleLimit_Unit},
81 {
"Contig", objects::CSeq_id::eSNPScaleLimit_Contig},
82 {
"Supercontig", objects::CSeq_id::eSNPScaleLimit_Supercontig},
83 {
"Chromosome", objects::CSeq_id::eSNPScaleLimit_Chromosome},
87 objects::CSeq_id::eSNPScaleLimit_Default,
103 # define DEFAULT_DEBUG_LEVEL CId2ReaderBase::eTraceError
105 # define DEFAULT_DEBUG_LEVEL 0
136 return TGenbankVdbSnpParam::GetDefault();
142 return TGenbankVdbSnpParam::SetDefault(enabled);
148 return TGenbankVdbWgsParam::GetDefault();
154 return TGenbankVdbWgsParam::SetDefault(enabled);
160 return TGenbankVdbCddParam::GetDefault();
166 return TGenbankVdbCddParam::SetDefault(enabled);
172 return TID2SNP_Scale_Limit::GetDefault();
178 TID2SNP_Scale_Limit::SetDefault(
value);
210 return max_request_size == 1;
218 return max_request_size > 0;
249 : m_RequestSerialNumber(1),
252 vector<string> proc_list;
253 string proc_param =
NCBI_PARAM_TYPE(GENBANK, ID2_PROCESSOR)::GetDefault();
255 ITERATE ( vector<string>, it, proc_list ) {
256 const string& proc_name = *it;
260 CreateInstance(proc_name);
264 "cannot load ID2 processor "<<proc_name<<
": "<<exc);
266 if (
info.processor ) {
267 info.context =
info.processor->CreateContext();
273 packet.
Set().push_back(
Ref(&req));
275 info.processor->ProcessPacket(
info.context, packet, replies);
293 #define MConnFormat MSerial_AsnBinary
300 get_blob_id.
SetSeq_id().SetSeq_id().SetSeq_id().Assign(seq_id);
321 result.GetLoadedBlob_ids(idh, loaded_blob_ids);
322 if ( loaded_blob_ids.empty() ) {
325 CID2_Request_Get_Blob_Info::C_Blob_id::C_Resolve::TExclude_blobs&
327 get_blob_info.
SetBlob_id().SetResolve().SetExclude_blobs();
331 exclude_blobs.push_back(blob_id);
360 if ( ids.IsLoaded() ) {
367 get_id.SetSeq_id().SetSeq_id().Assign(*seq_id.
GetSeqId());
384 get_id.SetSeq_id().SetSeq_id().Assign(*seq_id.
GetSeqId());
406 get_id.SetSeq_id().SetSeq_id().Assign(*seq_id.
GetSeqId());
432 get_id.SetSeq_id().SetSeq_id().Assign(*seq_id.
GetSeqId());
459 get_id.SetSeq_id().SetSeq_id().Assign(*seq_id.
GetSeqId());
486 get_id.SetSeq_id().SetSeq_id().Assign(*seq_id.
GetSeqId());
513 get_id.SetSeq_id().SetSeq_id().Assign(*seq_id.
GetSeqId());
541 get_id.SetSeq_id().SetSeq_id().Assign(*seq_id.
GetSeqId());
559 if ( max_request_size <= 1 ) {
563 size_t count = ids.size();
565 size_t packet_start = 0;
567 for (
size_t i = 0;
i < count; ++
i ) {
572 if ( lock.IsLoaded() ) {
574 if (
data.IsFound() ) {
584 get_id.SetSeq_id().SetSeq_id().Assign(*ids[
i].
GetSeqId());
586 if ( packet.
Set().empty() ) {
589 packet.
Set().push_back(req);
590 if ( packet.
Set().size() == max_request_size ) {
593 for (
size_t i = packet_start;
i < count; ++
i ) {
598 if ( lock.IsLoaded() ) {
600 if (
data.IsFound() ) {
607 packet.
Set().clear();
611 if ( !packet.
Set().empty() ) {
614 for (
size_t i = packet_start;
i < count; ++
i ) {
619 if ( lock.IsLoaded() ) {
621 if (
data.IsFound() ) {
638 if ( max_request_size <= 1 ) {
642 size_t count = ids.size();
644 size_t packet_start = 0;
646 for (
size_t i = 0;
i < count; ++
i ) {
663 get_id.SetSeq_id().SetSeq_id().Assign(*ids[
i].
GetSeqId());
665 if ( packet.
Set().empty() ) {
668 packet.
Set().push_back(req);
669 if ( packet.
Set().size() == max_request_size ) {
672 for (
size_t i = packet_start;
i < count; ++
i ) {
686 packet.
Set().clear();
690 if ( !packet.
Set().empty() ) {
693 for (
size_t i = packet_start;
i < count; ++
i ) {
717 if ( max_request_size <= 1 ) {
721 size_t count = ids.size();
723 size_t packet_start = 0;
725 for (
size_t i = 0;
i < count; ++
i ) {
742 get_id.SetSeq_id().SetSeq_id().Assign(*ids[
i].
GetSeqId());
744 if ( packet.
Set().empty() ) {
747 packet.
Set().push_back(req);
748 if ( packet.
Set().size() == max_request_size ) {
751 for (
size_t i = packet_start;
i < count; ++
i ) {
765 packet.
Set().clear();
769 if ( !packet.
Set().empty() ) {
772 for (
size_t i = packet_start;
i < count; ++
i ) {
796 if ( max_request_size <= 1 ) {
800 size_t count = ids.size();
802 size_t packet_start = 0;
804 for (
size_t i = 0;
i < count; ++
i ) {
818 get_id.SetSeq_id().SetSeq_id().Assign(*ids[
i].
GetSeqId());
825 if ( packet.
Set().empty() ) {
828 packet.
Set().push_back(req);
829 if ( packet.
Set().size() == max_request_size ) {
832 for (
size_t i = packet_start;
i < count; ++
i ) {
845 if ( ids_lock.IsLoaded() ) {
848 ids_lock.GetExpirationTime());
854 packet.
Set().clear();
858 if ( !packet.
Set().empty() ) {
861 for (
size_t i = packet_start;
i < count; ++
i ) {
874 if ( ids_lock.IsLoaded() ) {
877 ids_lock.GetExpirationTime());
893 if ( max_request_size <= 1 ||
898 size_t count = ids.size();
900 size_t packet_start = 0;
902 for (
size_t i = 0;
i < count; ++
i ) {
919 get_id.SetSeq_id().SetSeq_id().Assign(*ids[
i].
GetSeqId());
921 if ( packet.
Set().empty() ) {
924 packet.
Set().push_back(req);
925 if ( packet.
Set().size() == max_request_size ) {
928 for (
size_t i = packet_start;
i < count; ++
i ) {
942 packet.
Set().clear();
946 if ( !packet.
Set().empty() ) {
949 for (
size_t i = packet_start;
i < count; ++
i ) {
974 if ( max_request_size <= 1 ||
979 size_t count = ids.size();
981 size_t packet_start = 0;
983 for (
size_t i = 0;
i < count; ++
i ) {
993 if (
hash.hash_known ) {
999 else if ( !
hash.sequence_found ) {
1008 get_id.SetSeq_id().SetSeq_id().Assign(*ids[
i].
GetSeqId());
1010 if ( packet.
Set().empty() ) {
1013 packet.
Set().push_back(req);
1014 if ( packet.
Set().size() == max_request_size ) {
1017 for (
size_t i = packet_start;
i < count; ++
i ) {
1024 if (
hash.hash_known ) {
1030 else if ( !
hash.sequence_found ) {
1039 packet.
Set().clear();
1043 if ( !packet.
Set().empty() ) {
1046 for (
size_t i = packet_start;
i < count; ++
i ) {
1052 if (
hash.hash_known ) {
1058 else if ( !
hash.sequence_found ) {
1076 if ( max_request_size <= 1 ||
1081 size_t count = ids.size();
1083 size_t packet_start = 0;
1085 for (
size_t i = 0;
i < count; ++
i ) {
1102 get_id.SetSeq_id().SetSeq_id().Assign(*ids[
i].
GetSeqId());
1105 if ( packet.
Set().empty() ) {
1108 packet.
Set().push_back(req);
1109 if ( packet.
Set().size() == max_request_size ) {
1112 for (
size_t i = packet_start;
i < count; ++
i ) {
1126 packet.
Set().clear();
1130 if ( !packet.
Set().empty() ) {
1133 for (
size_t i = packet_start;
i < count; ++
i ) {
1157 if ( max_request_size <= 1 ||
1162 size_t count = ids.size();
1164 size_t packet_start = 0;
1166 for (
size_t i = 0;
i < count; ++
i ) {
1186 get_id.SetSeq_id().SetSeq_id().Assign(*ids[
i].
GetSeqId());
1189 if ( packet.
Set().empty() ) {
1192 packet.
Set().push_back(req);
1193 if ( packet.
Set().size() == max_request_size ) {
1196 for (
size_t i = packet_start;
i < count; ++
i ) {
1213 packet.
Set().clear();
1217 if ( !packet.
Set().empty() ) {
1220 for (
size_t i = packet_start;
i < count; ++
i ) {
1247 if ( max_request_size <= 1 ) {
1251 size_t count = ids.size();
1253 size_t packet_start = 0;
1255 for (
size_t i = 0;
i < count; ++
i ) {
1262 if ( packet.
Set().empty() ) {
1265 packet.
Set().push_back(req);
1266 if ( packet.
Set().size() == max_request_size ) {
1269 for (
size_t i = packet_start;
i < count; ++
i ) {
1272 packet.
Set().clear();
1276 if ( !packet.
Set().empty() ) {
1279 for (
size_t i = packet_start;
i < count; ++
i ) {
1293 if ( ids.IsLoaded() ) {
1303 srcs.push_back(it->first);
1304 if (it->first ==
"SNP") {
1311 param->SetName(
"snp:scale-limit");
1338 ERR_POST_X(5,
"ExtAnnot blob state is not loaded: "<<blob_id);
1339 result.SetLoadedBlobState(blob_id, 0);
1361 ERR_POST_X(9,
"ExtAnnot blob version is not loaded: "<<blob_id);
1362 result.SetLoadedBlobVersion(blob_id, 0);
1375 if ( !ids.IsLoaded() ) {
1383 if ( ids.IsLoaded() ) {
1398 return ids.IsLoaded();
1422 if (
info.IsSetAnnotInfo() ) {
1437 packet.
Set().push_back(req);
1443 packet.
Get().size() >= max_request_size ) {
1445 packet.
Set().clear();
1448 if ( !packet.
Get().empty() ) {
1498 ERR_POST_X(2,
"ExtAnnot chunk is not loaded: "<<blob_id);
1520 vector<TChunkId>& chunks,
1529 ERR_POST_X(3,
"ExtAnnot chunk is not loaded: " << blob_id);
1534 packet.
Set().clear();
1543 for (
auto& blob_chunks : chunk_ids ) {
1546 packet.
Set().clear();
1555 if ( chunk_ids.size() == 1 ) {
1578 vector<TChunkId> ext_chunks;
1590 packet.
Set().push_back(ext_req);
1591 ext_chunks.push_back(*
id);
1593 packet.
Get().size() >= max_request_size ) {
1602 chunks.size() >= max_request_size ) {
1609 if ( !chunks.empty() ) {
1611 packet.
Get().size() + chunks.size() > max_request_size ) {
1617 packet.
Set().push_back(chunks_req);
1620 if ( !packet.
Get().empty() ) {
1637 size_t requested_count = 0;
1638 for (
auto& blob_chunks : chunk_ids ) {
1639 const CBlob_id& blob_id = blob_chunks.first;
1644 for (
auto chunk_id : blob_chunks.second ) {
1656 packet.
Set().push_back(req);
1657 requested_chunks.push_back(make_pair(blob_id,
TChunkIds()));
1661 if ( !chunks_list ) {
1670 packet.
Set().push_back(req);
1672 requested_chunks.push_back(make_pair(blob_id,
TChunkIds()));
1677 requested_chunks.back().second.push_back(chunk_id);
1680 requested_count >= max_request_size ) {
1684 requested_count = 0;
1690 if ( requested_count ) {
1693 requested_count = 0;
1704 for (
auto&
info : blob_infos ) {
1711 if (
info.IsSetAnnotInfo() ) {
1726 packet.
Set().push_back(req);
1731 packet.
Get().size() >= max_request_size ) {
1733 packet.
Set().clear();
1737 if ( !packet.
Get().empty() ) {
1757 if ( ids.IsLoaded() ) {
1763 packet.
Set().push_back(req);
1765 packet.
Get().size() >= max_request_size ) {
1768 packet.
Set().clear();
1771 if ( !packet.
Get().empty() ) {
1786 bool loaded_blob_ids =
false;
1787 size_t processed_requests = 0;
1792 loaded_blob_ids =
true;
1798 if ( !loaded_blob_ids &&
1803 loaded_blob_ids =
true;
1806 if ( ids && ids.IsLoaded() ) {
1819 if ( !load_blob_ids.
insert(blob_id).second ) {
1827 packet.
Set().push_back(req);
1829 packet.
Get().size() >= max_request_size ) {
1830 processed_requests += packet.
Set().size();
1832 packet.
Set().clear();
1844 packet.
Set().push_back(req);
1846 packet.
Get().size() >= max_request_size ) {
1847 processed_requests += packet.
Set().size();
1849 packet.
Set().clear();
1853 if ( !packet.
Get().empty() ) {
1854 processed_requests += packet.
Get().size();
1857 if ( !processed_requests && !loaded_blob_ids ) {
1869 packet.
Set().push_back(
Ref(&req));
1899 unique_ptr<CReaderAllocatedConnection>
conn;
1925 param->SetName(
"log:client_name");
1927 request.
SetParams().Set().push_back(param);
1930 param->SetName(
"id2:allow");
1932 param->SetValue().push_back(
"*.blob-state");
1935 param->SetValue().push_back(
"vdb-wgs");
1939 param->SetValue().push_back(
"vdb-snp");
1943 param->SetValue().push_back(
"vdb-cdd");
1945 request.
SetParams().Set().push_back(param);
1950 param->SetName(
"snp:scale-limit");
1952 request.
SetParams().Set().push_back(param);
1958 param->SetName(
"session_id");
1960 request.
SetParams().Set().push_back(param);
1964 param->SetName(
"log:ncbi_phid");
1966 request.
SetParams().Set().push_back(param);
1970 param->SetName(
"log:client_ip");
1972 request.
SetParams().Set().push_back(param);
1977 #define x_GetReaderName(conn) \
1978 (x_ConnDescription((conn)).empty()? "CPubseq2Reader": "CId2Reader")
1992 s <<
" ID2-Request-Packet";
2012 if ( iter && iter->IsSetData() ) {
2014 save.swap(iter->SetData());
2015 size_t size = 0, count = 0, max_chunk = 0;
2018 size_t chunk = (*i)->size();
2020 max_chunk =
max(max_chunk, chunk);
2023 "Data: " <<
size <<
" bytes in " <<
2024 count <<
" chunks with " <<
2025 max_chunk <<
" bytes in chunk max";
2026 save.swap(iter->SetData());
2040 if ( it->IsSetData() ) {
2045 ERR_POST_X(1,
"Exception while dumping data: "
2064 "failed to send request: "+
2069 s <<
"Sent ID2-Request-Packet.";
2078 s <<
"Receiving ID2-Reply...";
2086 "reply deserialization failed: "+
2102 state.stages.reserve(proc_count);
2103 for (
size_t i = 0;
i < proc_count; ++
i ) {
2104 if ( packet.
Get().empty() ) {
2107 state.stages.resize(
i+1);
2114 for (
auto& it : stage.
replies ) {
2120 if ( packet.
Get().empty() ) {
2128 s <<
"Sending ID2-Request-Packet...";
2133 s <<
"Sent ID2-Request-Packet.";
2138 "failed to send request: "+
2146 if ( pos <
state.stages.size() ) {
2149 while ( stage.
replies.empty() ) {
2155 for (
auto& it : stage.
replies ) {
2171 s <<
"Receiving ID2-Reply...";
2179 "reply deserialization failed: "+
2183 if ( reply->IsSetDiscard() ) {
2204 if ( !packet.
Get().empty() ) {
2209 for (
auto&
i : packet.
Get() ) {
2210 info.requests.push_back(
i.GetPointer());
2212 info.request_count =
static_cast<int>(
info.requests.size());
2213 info.remaining_count =
info.request_count;
2214 int end_serial_num =
2216 while ( end_serial_num <=
info.request_count ) {
2222 if ( num <=
info.request_count ) {
2229 info.start_serial_num = end_serial_num -
info.request_count;
2231 int cur_serial_num =
info.start_serial_num;
2233 (*it)->SetSerial_number(cur_serial_num++);
2256 descr =
" (processor)";
2264 "CId2ReaderBase: connection timed out"<<descr);
2268 "CId2ReaderBase: connection failed"<<descr);
2272 "CId2ReaderBase: failed command"<<descr);
2276 ERR_POST_X(8,
"CId2ReaderBase: bad reply serial number: "<<descr);
2280 "CId2ReaderBase: bad reply serial number: "<<descr);
2291 info.requests[num] = 0;
2292 --
info.remaining_count;
2306 vector<SId2LoadedSet> loaded_sets(packet_info.
request_count);
2327 "CId2ReaderBase: failed to process reply: "+
2340 catch ( exception& ) {
2345 (reply->IsSetSerial_number() ||
2346 reply->IsSetParams() ||
2347 reply->IsSetError() ||
2348 reply->IsSetEnd_of_reply() ||
2349 reply->IsSetReply()) ) {
2353 catch ( exception& ) {
2360 state.conn->Release();
2390 data.m_Seq_ids.clear();
2393 if ( ids.IsLoaded() ) {
2396 int state = it->second.first;
2400 CBlob_Info blob_info(blob_id, it2->second.m_ContentMask);
2405 if ( !blob_annot_info ) {
2410 blob_annot_info->AddNamedAnnotName(annot_info.
GetName());
2413 annot_info.
IsSetGraph() && ainfos.size() == 1 &&
2418 s <<
"Adding zoom tracks for "
2421 for (
int zoom = 10; zoom < 1000000; zoom *= 10 ) {
2424 zoom_info->ResetFeat();
2425 zoom_info->ResetAlign();
2427 blob_annot_info->AddAnnotInfo(*zoom_info);
2439 blob_annot_info->AddAnnotInfo(annot_info);
2442 if ( blob_annot_info &&
2443 !(blob_annot_info->GetAnnotInfo().empty() &&
2444 blob_annot_info->GetNamedAnnotNames().empty()) ) {
2447 blob_ids.push_back(blob_info);
2459 const char* marker1,
2460 const char* marker2)
2462 if ( !
error.IsSetMessage() ) {
2466 if ( error_flags & test_flag ) {
2480 error_flags |= test_flag;
2489 switch (
error.GetSeverity() ) {
2492 if (
error.IsSetMessage() ) {
2493 const string& msg =
error.GetMessage();
2494 if ( msg.find(
"PTIS_FAILURE") !=
NPOS ) {
2510 if (
error.IsSetMessage() ) {
2532 if (
error.IsSetRetry_delay() ) {
2543 switch (
error.GetSeverity() ) {
2546 if (
error.IsSetMessage() ) {
2559 "Unknown satellite number 20 for bioseq info");
2579 if (
error.IsSetMessage() ) {
2674 *errors_ptr = errors;
2706 "CId2ReaderBase: connection failed");
2709 ERR_POST_X(17,
"CId2ReaderBase: failed command reply: "<<
2713 "CId2ReaderBase: failed command");
2716 auto& reply = main_reply.
GetReply();
2717 switch ( reply.Which() ) {
2720 reply.GetGet_seq_id().GetRequest(),
2721 &reply.GetGet_seq_id());
2725 reply.GetGet_blob_id());
2729 reply.GetGet_blob_seq_ids());
2733 reply.GetGet_blob());
2737 reply.GetGet_split_info());
2741 reply.GetGet_chunk());
2760 switch ( request.Which() ) {
2765 if ( request.GetGet_blob_id().IsSetSeq_id() ) {
2766 auto& req_id = request.GetGet_blob_id().GetSeq_id().GetSeq_id();
2767 if ( req_id.IsSeq_id() ) {
2774 if ( request.GetGet_blob_info().GetBlob_id().IsResolve() ) {
2775 auto& req_id = request.GetGet_blob_info().GetBlob_id().GetResolve().GetRequest().GetSeq_id().GetSeq_id();
2776 if ( req_id.IsSeq_id() ) {
2797 switch ( req_id.
Which() ) {
2812 if ( !
id.IsGeneral() ) {
2815 const string& db =
id.GetGeneral().GetDb();
2866 bool got_no_ids =
false;
2877 got_no_ids = seq_ids.empty();
2891 if ( (**it).IsGi() ) {
2892 ret.
gi = (**it).GetGi();
2902 if ( (**it).GetTextseq_Id() ) {
2913 if (
id.IsGeneral() ) {
2914 const CDbtag& dbtag =
id.GetGeneral();
2927 if (
id.IsGeneral() ) {
2928 const CDbtag& dbtag =
id.GetGeneral();
2944 if (
id.IsGeneral() ) {
2945 const CDbtag& dbtag =
id.GetGeneral();
2949 hash.sequence_found =
true;
2950 hash.hash_known =
true;
2961 if (
id.IsGeneral() ) {
2962 const CDbtag& dbtag =
id.GetGeneral();
2978 if (
id.IsGeneral() ) {
2979 const CDbtag& dbtag =
id.GetGeneral();
2983 type.sequence_found =
true;
2988 if (
type.sequence_found || got_no_ids ) {
3012 blob_state =
x_GetBlobState(blob_id, loaded_set, main_reply, &errors);
3023 ids.first |= blob_state;
3037 if ( obj_id.
IsId() &&
3057 if (
info.IsSetFeat() ) {
3060 if (
info.IsSetGraph() ) {
3063 if (
info.IsSetAlign() ) {
3126 if ( !blob_version ) {
3145 if (
data.GetData().empty() ) {
3147 data.GetData_type() ==
data.eData_type_seq_entry ) {
3150 "no data in reply: "<<blob_id);
3153 ERR_POST_X(7,
"CId2ReaderBase: ID2-Reply-Get-Blob: "
3154 "no data in reply: "<<blob_id);
3175 "blob already loaded: "<<blob_id);
3181 result.SetAndSaveBlobState(blob_id, blob_state);
3191 .ProcessData(
result, blob_id, blob_state, chunk_id,
data);
3212 ERR_POST_X(11,
"CId2ReaderBase: ID2S-Reply-Get-Split-Info: "
3213 "no data in reply: "<<blob_id);
3217 if ( !blob_version ) {
3235 ERR_POST_X(10,
Info<<
"CId2ReaderBase: ID2S-Reply-Get-Split-Info: "
3236 "blob already loaded: " << blob_id);
3259 skel = iter->second;
3264 result.SetAndSaveBlobState(blob_id, blob_state);
3269 .ProcessData(
result, blob_id, blob_state, chunk_id,
3285 ERR_POST_X(14,
"CId2ReaderBase: ID2S-Reply-Get-Chunk: "
3286 "no data in reply: "<<blob_id);
3291 ERR_POST_X(13,
"CId2ReaderBase: ID2S-Reply-Get-Chunk: "
3292 "blob is not loaded yet: " << blob_id);
void SetAnnotInfo(CRef< CBlob_Annot_Info > &annot_info)
void SetSubSat(TSubSat v)
TSatKey GetSatKey() const
void SetSatKey(TSatKey v)
TSubSat GetSubSat() const
vector< CRef< CID2_Reply > > TReplies
CID2S_Reply_Get_Split_Info –.
CID2S_Request_Get_Chunks –.
CID2_Reply_Get_Blob_Id –.
CID2_Reply_Get_Blob_Seq_ids –.
CID2_Request_Get_Blob_Id –.
CID2_Request_Get_Blob_Info –.
CID2_Request_Get_Seq_id –.
virtual void x_ReceiveReply(TConn conn, CID2_Reply &reply)=0
TBlobState x_GetBlobStateFromID2(const CBlob_id &blob_id, SId2LoadedSet &loaded_set, int id2_state)
bool LoadLabels(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, TLabels &ret)
void x_SetResolve(CID2_Request_Get_Blob_Id &get_blob_id, const CSeq_id &seq_id)
void x_SendID2Packet(CReaderRequestResult &result, SId2ProcessingState &state, CID2_Request_Packet &packet)
static void SetVDB_CDD_Enabled(bool enabled=true)
bool LoadHashes(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, THashes &ret, TKnown &known)
bool LoadSeq_idLabel(CReaderRequestResult &result, const CSeq_id_Handle &seq_id)
static bool GetVDB_SNP_Enabled()
bool LoadSeq_idTaxId(CReaderRequestResult &result, const CSeq_id_Handle &seq_id)
bool LoadChunk(CReaderRequestResult &result, const TBlobId &blob_id, TChunkId chunk_id)
void x_AssignSerialNumbers(SId2PacketInfo &info, CID2_Request_Packet &packet)
bool LoadBulkIds(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, TBulkIds &ret)
bool LoadTaxIds(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, TTaxIds &ret)
bool LoadChunks(CReaderRequestResult &result, const TBlobId &blob_id, const TChunkIds &chunk_ids)
bool x_LoadSeq_idBlob_idsSet(CReaderRequestResult &result, const TSeqIds &seq_ids)
static TBlobId GetBlobId(const CID2_Blob_Id &blob_id)
bool LoadSequenceHash(CReaderRequestResult &result, const CSeq_id_Handle &seq_id)
bool LoadLengths(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, TLengths &ret)
void x_ProcessGetBlobSeqIds(CReaderRequestResult &result, SId2LoadedSet &loaded_set, const CID2_Reply &main_reply, const CID2_Reply_Get_Blob_Seq_ids &reply)
virtual void x_SendPacket(TConn conn, const CID2_Request_Packet &packet)=0
TErrorFlags x_GetMessageError(const CID2_Error &error)
void x_SetContextData(CID2_Request &request)
TErrorFlags x_GetError(CReaderRequestResult &result, const CID2_Error &error)
void x_DisableProcessors()
void x_ProcessGetChunk(CReaderRequestResult &result, SId2LoadedSet &loaded_set, const CID2_Reply &main_reply, const CID2S_Reply_Get_Chunk &reply)
bool LoadAccVers(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, TIds &ret)
bool LoadTypes(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, TTypes &ret)
bool LoadBlobs(CReaderRequestResult &result, const CSeq_id_Handle &seq_id, TContentsMask mask, const SAnnotSelector *sel)
bool x_DoneReply(SId2PacketInfo &info, int num, const CID2_Reply &reply)
atomic< TAvoidRequests > m_AvoidRequest
void x_ProcessGetSplitInfo(CReaderRequestResult &result, SId2LoadedSet &loaded_set, const CID2_Reply &main_reply, const CID2S_Reply_Get_Split_Info &reply)
static bool GetVDB_CDD_Enabled()
bool LoadBlobVersion(CReaderRequestResult &result, const TBlobId &blob_id)
static int GetDebugLevel(void)
TBlobState x_GetBlobState(const CBlob_id &blob_id, SId2LoadedSet &loaded_set, const CID2_Reply &reply, TErrorFlags *errors_ptr=0)
void x_DumpPacket(TConn conn, const CID2_Request_Packet &packet, const char *msg="Sending")
void x_ProcessGetBlob(CReaderRequestResult &result, SId2LoadedSet &loaded_set, const CID2_Reply &main_reply, const CID2_Reply_Get_Blob &reply)
static void SetSNP_Scale_Limit(CSeq_id::ESNPScaleLimit value)
void x_ProcessGetSeqId(CReaderRequestResult &result, SId2LoadedSet &loaded_set, const CID2_Reply &main_reply, const CID2_Request_Get_Seq_id &request, const CID2_Reply_Get_Seq_id *reply)
static void SetVDB_SNP_Enabled(bool enabled=true)
void x_SetExclude_blobs(CID2_Request_Get_Blob_Info &get_blob_info, const CSeq_id_Handle &idh, CReaderRequestResult &result)
void x_UpdateLoadedSet(CReaderRequestResult &result, SId2LoadedSet &data, const SAnnotSelector *sel)
void x_SetDetails(CID2_Get_Blob_Details &details, TContentsMask mask)
bool LoadBlobSet(CReaderRequestResult &result, const TSeqIds &seq_ids)
CRef< CID2_Reply > x_ReceiveID2ReplyStage(SId2ProcessingState &state, size_t pos)
void x_ProcessRequest(CReaderRequestResult &result, CID2_Request &req, const SAnnotSelector *sel)
virtual void SetParams(const CReaderParams ¶ms)
void x_ProcessEmptyReply(CReaderRequestResult &result, SId2LoadedSet &loaded_set, const CID2_Reply &main_reply, const CID2_Request &main_request)
void x_DumpReply(TConn conn, CID2_Reply &reply, const char *msg="Received")
bool LoadBlobState(CReaderRequestResult &result, const TBlobId &blob_id)
virtual string x_ConnDescription(TConn conn) const =0
bool LoadSequenceType(CReaderRequestResult &result, const CSeq_id_Handle &seq_id)
bool LoadSeq_idSeq_ids(CReaderRequestResult &result, const CSeq_id_Handle &seq_id)
CRef< CID2_Reply > x_ReceiveFromConnection(TConn conn)
virtual void x_EndOfPacket(TConn conn)
static void sx_CheckErrorFlag(const CID2_Error &error, TErrorFlags &error_flags, EErrorFlags test_flag, const char *marker1, const char *marker2=0)
CRef< CID2_Reply > x_ReceiveID2Reply(SId2ProcessingState &state)
CAtomicCounter_WithAutoInit m_RequestSerialNumber
static void SetVDB_WGS_Enabled(bool enabled=true)
bool LoadSequenceLength(CReaderRequestResult &result, const CSeq_id_Handle &seq_id)
static bool GetVDB_WGS_Enabled()
void x_ProcessGetBlobId(CReaderRequestResult &result, SId2LoadedSet &loaded_set, const CID2_Reply &main_reply, const CID2_Reply_Get_Blob_Id &reply)
void x_ProcessReply(CReaderRequestResult &result, SId2LoadedSet &loaded_set, const CID2_Reply &main_reply, const CID2_Request &main_request)
bool LoadGis(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, TGis &ret)
void x_ProcessPacket(CReaderRequestResult &result, CID2_Request_Packet &packet, const SAnnotSelector *sel)
void x_ProcessGetSeqIdSeqId(CReaderRequestResult &result, SId2LoadedSet &loaded_set, const CID2_Reply &main_reply, const CSeq_id_Handle &seq_id, const CID2_Request_Get_Seq_id &request, const CID2_Reply_Get_Seq_id *reply)
@ fAvoidRequest_for_Seq_id_type
@ fAvoidRequest_nested_get_blob_info
@ fAvoidRequest_for_Seq_id_taxid
@ fAvoidRequest_for_Seq_id_length
@ fAvoidRequest_for_Seq_id_label
@ fAvoidRequest_for_Seq_id_hash
@ fError_inactivity_timeout
int x_GetReplyIndex(CReaderRequestResult &result, CConn *conn, SId2PacketInfo &packet, const CID2_Reply &reply)
bool LoadSeq_idBlob_ids(CReaderRequestResult &result, const CSeq_id_Handle &seq_id, const SAnnotSelector *sel)
All LoadXxx() methods should return false if there is no requested data in the reader.
bool LoadStates(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, TStates &ret)
bool LoadSeq_idAccVer(CReaderRequestResult &result, const CSeq_id_Handle &seq_id)
bool LoadSeq_idGi(CReaderRequestResult &result, const CSeq_id_Handle &seq_id)
static CSeq_id::ESNPScaleLimit GetSNP_Scale_Limit(void)
bool LoadBlob(CReaderRequestResult &result, const TBlobId &blob_id)
void x_SendToConnection(TConn conn, CID2_Request_Packet &packet)
static bool IsFound(const TData &data)
TData GetAccVer(void) const
static const CSeq_id_Handle & GetAcc(const TData &data)
bool IsLoadedAccVer(void) const
TData GetBlob_ids(void) const
bool IsLoadedBlobState(void) const
bool IsLoadedBlobVersion(void) const
void SelectChunk(TChunkId chunk_id)
bool NeedsDelayedMainChunk(void) const
bool IsLoadedChunk(void) const
const CTSE_Split_Info & GetSplitInfo(void) const
bool IsLoadedBlob(void) const
TBlobVersion GetKnownBlobVersion(void) const
bool IsLoadedGi(void) const
static bool IsFound(const TData &data)
static TGi GetGi(const TData &data)
bool IsLoadedHash(void) const
static int GetHash(const TData &data)
bool IsLoadedLabel(void) const
bool SetLoadedLabel(const TData &data)
TData GetLabel(void) const
TData GetLength(void) const
bool IsLoadedLength(void) const
TData GetSeq_ids(void) const
bool IsLoaded(void) const
bool IsLoadedTaxId(void) const
TData GetTaxId(void) const
static bool IsFound(const TData &data)
static CSeq_inst::TMol GetType(const TData &data)
bool IsLoadedType(void) const
Data loader exceptions, used by GenBank loader.
static TPluginManager * Get(void)
static void LoadBlob(CReaderRequestResult &result, const CBlob_Info &blob_info)
static bool IsExtAnnot(const TBlobId &blob_id)
static void DumpDataAsText(const CID2_Reply_Data &data, CNcbiOstream &out)
static void OffsetAllGisToOM(CBeginInfo obj, CTSE_SetObjectInfo *set_info=0)
void ProcessBlobFromID2Data(CReaderRequestResult &result, const TBlobId &blob_id, TChunkId chunk_id, const CID2_Reply_Data &data) const
static void OffsetAllGisFromOM(CBeginInfo obj)
const CProcessor & GetProcessor(CProcessor::EType type) const
static bool SetBlobState(size_t i, CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, TStates &ret)
CWriter * GetWriter(const CReaderRequestResult &result, CWriter::EType type) const
static bool CannotProcess(const CSeq_id_Handle &sih)
bool GetEnableSNP(void) const
bool GetEnableCDD(void) const
bool GetEnableWGS(void) const
bool IsSetEnableCDD(void) const
bool IsSetEnableSNP(void) const
bool IsSetEnableWGS(void) const
vector< CBlob_id > TLoadedBlob_ids
CDataLoader::STypeFound TSequenceType
vector< CSeq_id_Handle > TSeqIds
virtual bool LoadBlobSet(CReaderRequestResult &result, const TSeqIds &seq_ids)
virtual bool LoadHashes(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, THashes &ret, TKnown &known)
CReadDispatcher * m_Dispatcher
void SetAndSaveSeq_idAccVer(CReaderRequestResult &result, const CSeq_id_Handle &seq_id, const TSequenceAcc &acc_id) const
virtual bool LoadStates(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, TStates &ret)
virtual bool LoadSequenceHash(CReaderRequestResult &result, const CSeq_id_Handle &seq_id)
virtual bool LoadSeq_idTaxId(CReaderRequestResult &result, const CSeq_id_Handle &seq_id)
CReaderAllocatedConnection CConn
void SetAndSaveNoSeq_idBlob_ids(CReaderRequestResult &result, const CSeq_id_Handle &seq_id, const SAnnotSelector *sel, const CLoadLockGi &gi_lock) const
virtual bool LoadLabels(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, TLabels &ret)
void SetAndSaveSequenceType(CReaderRequestResult &result, const CSeq_id_Handle &seq_id, const TSequenceType &type) const
virtual bool LoadTypes(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, TTypes &ret)
void SetAndSaveSeq_idGi(CReaderRequestResult &result, const CSeq_id_Handle &seq_id, const TSequenceGi &gi) const
void SetAndSaveBlobVersion(CReaderRequestResult &result, const TBlobId &blob_id, TBlobVersion version) const
vector< CBlob_Info > TBlobIds
virtual bool LoadTaxIds(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, TTaxIds &ret)
void SetAndSaveNoBlob(CReaderRequestResult &result, const TBlobId &blob_id, TChunkId chunk_id, TBlobState blob_state)
virtual bool LoadSequenceType(CReaderRequestResult &result, const CSeq_id_Handle &seq_id)
void SetAndSaveSeq_idSeq_ids(CReaderRequestResult &result, const CSeq_id_Handle &seq_id, const CFixedSeq_ids &seq_ids) const
virtual bool LoadBulkIds(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, TBulkIds &ret)
virtual bool LoadSequenceLength(CReaderRequestResult &result, const CSeq_id_Handle &seq_id)
virtual bool LoadChunks(CReaderRequestResult &result, const TBlobId &blob_id, const TChunkIds &chunk_ids)
void SetAndSaveSequenceLength(CReaderRequestResult &result, const CSeq_id_Handle &seq_id, TSeqPos length) const
void SetAndSaveSeq_idTaxId(CReaderRequestResult &result, const CSeq_id_Handle &seq_id, TTaxId taxid) const
vector< TSeqPos > TLengths
vector< pair< TBlobId, TChunkIds > > TBlobChunkIds
virtual bool LoadGis(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, TGis &ret)
void SetAndSaveSeq_idLabel(CReaderRequestResult &result, const CSeq_id_Handle &seq_id, const string &label) const
virtual bool LoadAccVers(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, TIds &ret)
vector< CSeq_inst::EMol > TTypes
virtual bool LoadSeq_idGi(CReaderRequestResult &result, const CSeq_id_Handle &seq_id)
vector< CSeq_id_Handle > TIds
CDataLoader::SAccVerFound TSequenceAcc
virtual bool LoadSeq_idAccVer(CReaderRequestResult &result, const CSeq_id_Handle &seq_id)
CDataLoader::SHashFound TSequenceHash
void SetAndSaveSeq_idBlob_ids(CReaderRequestResult &result, const CSeq_id_Handle &seq_id, const SAnnotSelector *sel, CLoadLockBlobIds &lock, const CLoadLockBlobIds &blob_ids) const
void SetAndSaveSequenceHash(CReaderRequestResult &result, const CSeq_id_Handle &seq_id, const TSequenceHash &hash) const
vector< TChunkId > TChunkIds
virtual bool LoadLengths(CReaderRequestResult &result, const TIds &ids, TLoaded &loaded, TLengths &ret)
virtual bool LoadBlobs(CReaderRequestResult &result, const CSeq_id_Handle &seq_id, TContentsMask mask, const SAnnotSelector *sel)
void SetAndSaveNoSeq_idSeq_ids(CReaderRequestResult &result, const CSeq_id_Handle &seq_id, TState state) const
virtual bool LoadSeq_idLabel(CReaderRequestResult &result, const CSeq_id_Handle &seq_id)
CDataLoader::SGiFound TSequenceGi
TSplitVersion GetSplitVersion(void) const
Template class for iteration on objects of class C (non-medifiable version)
Template class for iteration on objects of class C.
container_type::const_iterator const_iterator
container_type::iterator iterator
const_iterator end() const
const_iterator find(const key_type &key) const
iterator_bool insert(const value_type &val)
static CS_CONNECTION * conn
unsigned int TSeqPos
Type for sequence locations and lengths.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
SStrictId_Tax::TId TTaxId
Taxon id type.
const TSeqPos kInvalidSeqPos
Define special value for invalid sequence position.
#define TAX_ID_FROM(T, value)
@ eTakeOwnership
An object can take ownership of another.
void Set(TValue new_value) THROWS_NONE
Set atomic counter value.
TValue Add(int delta) THROWS_NONE
Atomically add value (=delta), and return new counter value.
TValue Get(void) const THROWS_NONE
Get atomic counter value.
CDiagContext & GetDiagContext(void)
Get diag context instance.
string GetSessionID(void) const
Session ID.
const string & GetNextSubHitID(CTempString prefix=CTempString())
Get current hit id appended with auto-incremented sub-hit id.
bool IsSetSessionID(void) const
static CRequestContext & GetRequestContext(void)
Shortcut to CDiagContextThreadData::GetThreadData().GetRequestContext()
string GetClientIP(void) const
Client IP/hostname.
bool IsSetHitID(EHitIDSource src=eHitID_Any) const
Check if there's an explicit hit id or the default one.
#define ERR_POST_X(err_subcode, message)
Error posting with default error code and given error subcode.
bool IsSetClientIP(void) const
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
void Warning(CExceptionArgs_Base &args)
#define NCBI_THROW_FMT(exception_class, err_code, message)
The same as NCBI_THROW but with message processed as output to ostream.
#define NCBI_RETHROW(prev_exception, exception_class, err_code, message)
Generic macro to re-throw an exception.
void Info(CExceptionArgs_Base &args)
C * SerialClone(const C &src)
Create on heap a clone of the source object.
#define MSerial_AsnText
I/O stream manipulators –.
CConstRef< CSeq_id > GetSeqId(void) const
static const char * GetSNPScaleLimit_Name(ESNPScaleLimit value)
static CSeq_id_Handle GetHandle(const CSeq_id &id)
Normal way of getting a handle, works for any seq-id.
ESNPScaleLimit
SNP annotation scale limits.
CBeginInfo Begin(C &obj)
Get starting point of object hierarchy.
bool IsIncludedAnyNamedAnnotAccession(void) const
check if any named annot accession is included in the search
string CombineWithZoomLevel(const string &acc, int zoom_level)
Combine accession string and zoom level into a string with separator.
TSNPScaleLimit GetSNPScaleLimit(void) const
bool ExtractZoomLevel(const string &full_name, string *acc_ptr, int *zoom_level_ptr)
Extract optional zoom level suffix from named annotation string.
const TNamedAnnotAccessions & GetNamedAnnotAccessions(void) const
CRef< C > Ref(C *object)
Helper functions to get CRef<> and CConstRef<> objects.
void Reset(void)
Reset reference object.
@ eParam_NoThread
Do not use per-thread values.
uint32_t Uint4
4-byte (32-bit) unsigned integer
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
#define BEGIN_SCOPE(ns)
Define a new scope.
NCBI_NS_STD::string::size_type SIZE_TYPE
static list< string > & Split(const CTempString str, const CTempString delim, list< string > &arr, TSplitFlags flags=0, vector< SIZE_TYPE > *token_pos=NULL)
Split a string using specified delimiters.
static SIZE_TYPE FindNoCase(const CTempString str, const CTempString pattern, SIZE_TYPE start, SIZE_TYPE end, EOccurrence which=eFirst)
Find the pattern in the specified range of a string using a case insensitive search.
static bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
virtual void Process(SOCK sock)=0
Runs asynchronously (from a separate thread) for each request.
#define DEFINE_STATIC_FAST_MUTEX(id)
Define static fast mutex and initialize it.
static const char label[]
bool IsStr(void) const
Check if variant Str is selected.
const TTag & GetTag(void) const
Get the Tag member data.
bool IsId(void) const
Check if variant Id is selected.
const TDb & GetDb(void) const
Get the Db member data.
const TStr & GetStr(void) const
Get the variant data.
TId GetId(void) const
Get the variant data.
bool IsSetAnnot_info(void) const
annotation types in this blob annotation are unknown if this field is omitted Check if a value has be...
TVersion GetVersion(void) const
Get the Version member data.
TSat_key GetSat_key(void) const
Get the Sat_key member data.
const TError & GetError(void) const
Get the Error member data.
void SetBlob_id(TBlob_id &value)
Assign a value to Blob_id data member.
bool IsSetBlob_state(void) const
state bits of the blob, 0 or missing means regular live data Check if a value has been assigned to Bl...
void SetSplit_version(TSplit_version value)
Assign a value to Split_version data member.
bool IsSetBlob_state(void) const
state bits of the blob, 0 or missing means regular live data Check if a value has been assigned to Bl...
TSeq_id_type GetSeq_id_type(void) const
Get the Seq_id_type member data.
TChunks & SetChunks(void)
Assign a value to Chunks data member.
const TSeq_id & GetSeq_id(void) const
Get the Seq_id member data.
const TSeq_id & GetSeq_id(void) const
Get the Seq_id member data.
list< CRef< CID2_Error > > TError
const TBlob_id & GetBlob_id(void) const
Get the Blob_id member data.
void SetGet_data(TGet_data &value)
Assign a value to Get_data data member.
bool IsSetDiscard(void) const
Check if a value has been assigned to Discard data member.
bool IsSetBlob_state(void) const
state bits of the blob, 0 or missing means regular live data Check if a value has been assigned to Bl...
TSources & SetSources(void)
Assign a value to Sources data member.
bool IsEmpty(void) const
Check if variant Empty is selected.
bool IsSetVersion(void) const
version of blob, optional in some requests Check if a value has been assigned to Version data member.
const TAnnot_info & GetAnnot_info(void) const
Get the Annot_info member data.
void SetParams(TParams &value)
Assign a value to Params data member.
TBlob_state GetBlob_state(void) const
Get the Blob_state member data.
const TBlob_id & GetBlob_id(void) const
Get the Blob_id member data.
const TSeq_id & GetSeq_id(void) const
Get the variant data.
bool IsSetData(void) const
chunk data not set if error occurred Check if a value has been assigned to Data data member.
const TChunk_id & GetChunk_id(void) const
Get the Chunk_id member data.
void SetSat_key(TSat_key value)
Assign a value to Sat_key data member.
TBlob_state GetBlob_state(void) const
Get the Blob_state member data.
list< vector< char > * > TData
TBlob_state GetBlob_state(void) const
Get the Blob_state member data.
const TReply & GetReply(void) const
Get the Reply member data.
E_Choice Which(void) const
Which variant is currently selected.
const TBlob_id & GetBlob_id(void) const
Get the Blob_id member data.
TSplit_version GetSplit_version(void) const
Get the Split_version member data.
const TSeq_id & GetSeq_id(void) const
Get the Seq_id member data.
list< CID2S_Chunk_Id > TChunks
CID2_Request_Get_Seq_id TGet_seq_id
Tdata & Set(void)
Assign a value to data member.
TSub_sat GetSub_sat(void) const
Get the Sub_sat member data.
TSerial_number GetSerial_number(void) const
Get the Serial_number member data.
bool IsSetEnd_of_reply(void) const
this Seq-id is the last one in the request Check if a value has been assigned to End_of_reply data me...
const TSeq_id & GetSeq_id(void) const
Get the Seq_id member data.
const TData & GetData(void) const
Get the Data member data.
list< CRef< CID2_Request > > Tdata
bool IsSetSerial_number(void) const
request's serial number, copy from request Check if a value has been assigned to Serial_number data m...
bool IsSetError(void) const
Check if a value has been assigned to Error data member.
void SetSat(TSat value)
Assign a value to Sat data member.
const TRequest & GetRequest(void) const
Get the Request member data.
const TData & GetData(void) const
Get the Data member data.
bool IsInit(void) const
Check if variant Init is selected.
void SetRequest(TRequest &value)
Assign a value to Request data member.
bool IsSetData(void) const
blob split info not set if error occurred Check if a value has been assigned to Data data member.
void SetBlob_id(TBlob_id &value)
Assign a value to Blob_id data member.
TSat GetSat(void) const
Get the Sat member data.
void SetSub_sat(TSub_sat value)
Assign a value to Sub_sat data member.
const TBlob_id & GetBlob_id(void) const
Get the Blob_id member data.
list< CRef< CSeq_id > > TSeq_id
bool IsSetEnd_of_reply(void) const
true if this reply is the last one for the request false if more replies will follow Check if a value...
void SetSeq_id(TSeq_id &value)
Assign a value to Seq_id data member.
void SetExternal(void)
Set NULL data member (assign 'NULL' value to External data member).
TSplit_version GetSplit_version(void) const
Get the Split_version member data.
bool IsSetData(void) const
whole blob or blob skeleton not set if error occurred Check if a value has been assigned to Data data...
const TData & GetData(void) const
Get the Data member data.
const Tdata & Get(void) const
Get the member data.
@ eSeq_id_type_hash
return a sequence hash as integer in general id with db "HASH"
@ eSeq_id_type_any
return any qualified Seq-id
@ eSeq_id_type_taxid
return a sequence taxonomy ID as integer in general id with db "TAXID"
@ eSeq_id_type_seq_length
return a sequence Seq-inst.length as int in general id with db "Seq-inst.length"
@ eSeq_id_type_seq_mol
return a sequence Seq-inst.mol as int in general id with db "Seq-inst.mol"
@ eSeq_id_type_text
text Seq-id (accession etc) is preferred
@ eSeq_id_type_gi
gi is preferred
@ eSeq_id_type_label
return a sequence string label as string in general id with db "LABEL"
@ eSeq_id_type_all
return all qualified Seq-ids of the sequence
@ eSeverity_no_data
resolve request gives no data probably temporarily (see retry-delay field)
@ eSeverity_restricted_data
data exists but client doesn't have permission to get it
@ eSeverity_failed_command
command cannot be completed this time
@ eSeverity_failed_server
server cannot be used for a while
@ eSeverity_warning
nothing harmful happened
@ eSeverity_unsupported_command
this request type is not supported by server
@ eSeverity_invalid_arguments
error in request packet, cannot retry
@ eSeverity_failed_connection
connection cannot be reused, reconnect is required
@ eID2_Blob_State_suppressed
@ eID2_Blob_State_protected
@ eID2_Blob_State_suppressed_temp
@ eID2_Blob_State_withdrawn
bool IsSetSeq_loc(void) const
Check if a value has been assigned to Seq_loc data member.
bool IsSetName(void) const
name is set if this is named annot name may be empty which differ from unnamed annot Check if a value...
bool IsSetGraph(void) const
Check if a value has been assigned to Graph data member.
bool IsSetAlign(void) const
Check if a value has been assigned to Align data member.
const TName & GetName(void) const
Get the Name member data.
bool IsSetFeat(void) const
Check if a value has been assigned to Feat data member.
void ResetGraph(void)
Reset Graph data member.
bool IsGeneral(void) const
Check if variant General is selected.
E_Choice Which(void) const
Which variant is currently selected.
const TGeneral & GetGeneral(void) const
Get the variant data.
@ e_not_set
No variant selected.
EMol
molecule class in living organism
const struct ncbi::grid::netcache::search::fields::SIZE size
string s_Value(TValue value)
const GenericPointer< typename T::ValueType > T2 value
Static variables safety - create on demand, destroy on application termination.
Multi-threading – mutexes; rw-locks; semaphore.
Helper classes and templates to implement plugins.
#define DEFAULT_DEBUG_LEVEL
static const char kSpecialId_type[]
static void LoadedChunksPacket(CReaderRequestResult &result, CID2_Request_Packet &packet, vector< TChunkId > &chunks, const CBlob_id &blob_id)
NCBI_PARAM_ENUM_DEF_EX(objects::CSeq_id::ESNPScaleLimit, GENBANK, ID2SNP_SCALE_LIMIT, objects::CSeq_id::eSNPScaleLimit_Default, eParam_NoThread, GENBANK_ID2SNP_SCALE_LIMIT)
static const char kSpecialId_taxid[]
#define x_GetReaderName(conn)
static size_t GetMaxIdsRequestSize(void)
static size_t GetMaxChunksRequestSize(void)
typedef NCBI_PARAM_TYPE(GENBANK, ID2SNP_SCALE_LIMIT) TID2SNP_Scale_Limit
static const char kSpecialId_length[]
static const char kSpecialId_label[]
NCBI_PARAM_DECL(int, GENBANK, ID2_DEBUG)
static bool sx_IsSpecialId(const CSeq_id &id)
static bool LimitChunksRequests(size_t max_request_size=GetMaxChunksRequestSize())
NCBI_PARAM_ENUM_DECL(objects::CSeq_id::ESNPScaleLimit, GENBANK, ID2SNP_SCALE_LIMIT)
NCBI_DEFINE_ERR_SUBCODE_X(17)
NCBI_PARAM_ENUM_ARRAY(objects::CSeq_id::ESNPScaleLimit, GENBANK, ID2SNP_SCALE_LIMIT)
static bool SeparateChunksRequests(size_t max_request_size=GetMaxChunksRequestSize())
static const char kSpecialId_hash[]
NCBI_PARAM_DEF_EX(int, GENBANK, ID2_DEBUG, CId2ReaderBase::eTraceError, eParam_NoThread, GENBANK_ID2_DEBUG)
static bool GetSeqId(const T &d, set< string > &labels, const string name="", bool detect=false, bool found=false)
Defines CRequestContext class for NCBI C++ diagnostic API.
Better replacement of GetAccVer(), this method should be defined in data loaders, GetAccVer() is left...
Better replacement of GetGi(), this method should be defined in data loaders, GetGi() is left for com...
Better replacement of GetSequenceHash(), this method should be defined in data loaders,...
Better replacement of GetSequenceType(), this method should be defined in data loaders,...
CId2ReaderBase::TContentsMask m_ContentMask
list< CRef< CID2S_Seq_annot_Info > > TAnnotInfo
map< CSeq_id_Handle, TSeq_idsInfo > TSeq_idSeq_idsSet
pair< int, CReader::TSeqIds > TSeq_idsInfo
map< CBlob_id, CConstRef< CID2_Reply_Data > > TSkeletons
TSeq_idSeq_idsSet m_Seq_ids
map< string, TSeq_idsInfo > TStringSeq_idsSet
pair< int, TBlob_ids > TBlob_idsInfo
map< CSeq_id_Handle, TBlob_idsInfo > TBlob_idSet
map< CBlob_id, SId2BlobInfo > TBlob_ids
map< CBlob_id, int > TBlobStates
vector< const CID2_Request * > requests
CID2Processor::TReplies TRequestReplies
vector< TRequestReplies > replies
CReader::TConn GetConn() const
vector< SId2ProcessorStage > stages
unique_ptr< CReaderAllocatedConnection > conn
CRef< CID2ProcessorPacketContext > packet_context
CID2Processor::TReplies replies