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 ) {
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 ) {
607 packet.
Set().clear();
611 if ( !packet.
Set().empty() ) {
614 for (
size_t i = packet_start;
i < count; ++
i ) {
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 ) {
654 ret[
i] = lock.
GetGi(data);
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 ) {
680 ret[
i] = lock.
GetGi(data);
686 packet.
Set().clear();
690 if ( !packet.
Set().empty() ) {
693 for (
size_t i = packet_start;
i < count; ++
i ) {
701 ret[
i] = lock.
GetGi(data);
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 ) {
739 get_id.SetSeq_id().SetSeq_id().Assign(*ids[
i].
GetSeqId());
746 if ( packet.
Set().empty() ) {
749 packet.
Set().push_back(req);
750 if ( packet.
Set().size() == max_request_size ) {
753 for (
size_t i = packet_start;
i < count; ++
i ) {
766 if ( ids_lock.IsLoaded() ) {
769 ids_lock.GetExpirationTime());
775 packet.
Set().clear();
779 if ( !packet.
Set().empty() ) {
782 for (
size_t i = packet_start;
i < count; ++
i ) {
795 if ( ids_lock.IsLoaded() ) {
798 ids_lock.GetExpirationTime());
814 if ( max_request_size <= 1 ||
819 size_t count = ids.size();
821 size_t packet_start = 0;
823 for (
size_t i = 0;
i < count; ++
i ) {
840 get_id.SetSeq_id().SetSeq_id().Assign(*ids[
i].
GetSeqId());
842 if ( packet.
Set().empty() ) {
845 packet.
Set().push_back(req);
846 if ( packet.
Set().size() == max_request_size ) {
849 for (
size_t i = packet_start;
i < count; ++
i ) {
863 packet.
Set().clear();
867 if ( !packet.
Set().empty() ) {
870 for (
size_t i = packet_start;
i < count; ++
i ) {
895 if ( max_request_size <= 1 ||
900 size_t count = ids.size();
902 size_t packet_start = 0;
904 for (
size_t i = 0;
i < count; ++
i ) {
914 if (
hash.hash_known ) {
920 else if ( !
hash.sequence_found ) {
929 get_id.SetSeq_id().SetSeq_id().Assign(*ids[
i].
GetSeqId());
931 if ( packet.
Set().empty() ) {
934 packet.
Set().push_back(req);
935 if ( packet.
Set().size() == max_request_size ) {
938 for (
size_t i = packet_start;
i < count; ++
i ) {
945 if (
hash.hash_known ) {
951 else if ( !
hash.sequence_found ) {
960 packet.
Set().clear();
964 if ( !packet.
Set().empty() ) {
967 for (
size_t i = packet_start;
i < count; ++
i ) {
973 if (
hash.hash_known ) {
979 else if ( !
hash.sequence_found ) {
997 if ( max_request_size <= 1 ||
1002 size_t count = ids.size();
1004 size_t packet_start = 0;
1006 for (
size_t i = 0;
i < count; ++
i ) {
1023 get_id.SetSeq_id().SetSeq_id().Assign(*ids[
i].
GetSeqId());
1026 if ( packet.
Set().empty() ) {
1029 packet.
Set().push_back(req);
1030 if ( packet.
Set().size() == max_request_size ) {
1033 for (
size_t i = packet_start;
i < count; ++
i ) {
1047 packet.
Set().clear();
1051 if ( !packet.
Set().empty() ) {
1054 for (
size_t i = packet_start;
i < count; ++
i ) {
1078 if ( max_request_size <= 1 ||
1083 size_t count = ids.size();
1085 size_t packet_start = 0;
1087 for (
size_t i = 0;
i < count; ++
i ) {
1107 get_id.SetSeq_id().SetSeq_id().Assign(*ids[
i].
GetSeqId());
1110 if ( packet.
Set().empty() ) {
1113 packet.
Set().push_back(req);
1114 if ( packet.
Set().size() == max_request_size ) {
1117 for (
size_t i = packet_start;
i < count; ++
i ) {
1134 packet.
Set().clear();
1138 if ( !packet.
Set().empty() ) {
1141 for (
size_t i = packet_start;
i < count; ++
i ) {
1168 if ( max_request_size <= 1 ) {
1172 size_t count = ids.size();
1174 size_t packet_start = 0;
1176 for (
size_t i = 0;
i < count; ++
i ) {
1183 if ( packet.
Set().empty() ) {
1186 packet.
Set().push_back(req);
1187 if ( packet.
Set().size() == max_request_size ) {
1190 for (
size_t i = packet_start;
i < count; ++
i ) {
1193 packet.
Set().clear();
1197 if ( !packet.
Set().empty() ) {
1200 for (
size_t i = packet_start;
i < count; ++
i ) {
1214 if ( ids.IsLoaded() ) {
1224 srcs.push_back(it->first);
1225 if (it->first ==
"SNP") {
1232 param->SetName(
"snp:scale-limit");
1259 ERR_POST_X(5,
"ExtAnnot blob state is not loaded: "<<blob_id);
1260 result.SetLoadedBlobState(blob_id, 0);
1282 ERR_POST_X(9,
"ExtAnnot blob version is not loaded: "<<blob_id);
1283 result.SetLoadedBlobVersion(blob_id, 0);
1296 if ( !ids.IsLoaded() ) {
1304 if ( ids.IsLoaded() ) {
1319 return ids.IsLoaded();
1343 if (
info.IsSetAnnotInfo() ) {
1358 packet.
Set().push_back(req);
1364 packet.
Get().size() >= max_request_size ) {
1366 packet.
Set().clear();
1369 if ( !packet.
Get().empty() ) {
1419 ERR_POST_X(2,
"ExtAnnot chunk is not loaded: "<<blob_id);
1441 vector<TChunkId>& chunks,
1450 ERR_POST_X(3,
"ExtAnnot chunk is not loaded: " << blob_id);
1455 packet.
Set().clear();
1464 if ( chunk_ids.size() == 1 ) {
1487 vector<TChunkId> ext_chunks;
1499 packet.
Set().push_back(ext_req);
1500 ext_chunks.push_back(*
id);
1502 packet.
Get().size() >= max_request_size ) {
1511 chunks.size() >= max_request_size ) {
1518 if ( !chunks.empty() ) {
1520 packet.
Get().size() + chunks.size() > max_request_size ) {
1526 packet.
Set().push_back(chunks_req);
1529 if ( !packet.
Get().empty() ) {
1550 if ( ids.IsLoaded() ) {
1556 packet.
Set().push_back(req);
1558 packet.
Get().size() >= max_request_size ) {
1561 packet.
Set().clear();
1564 if ( !packet.
Get().empty() ) {
1579 bool loaded_blob_ids =
false;
1580 size_t processed_requests = 0;
1585 loaded_blob_ids =
true;
1591 if ( !loaded_blob_ids &&
1596 loaded_blob_ids =
true;
1599 if ( ids && ids.IsLoaded() ) {
1612 if ( !load_blob_ids.
insert(blob_id).second ) {
1620 packet.
Set().push_back(req);
1622 packet.
Get().size() >= max_request_size ) {
1623 processed_requests += packet.
Set().size();
1625 packet.
Set().clear();
1637 packet.
Set().push_back(req);
1639 packet.
Get().size() >= max_request_size ) {
1640 processed_requests += packet.
Set().size();
1642 packet.
Set().clear();
1646 if ( !packet.
Get().empty() ) {
1647 processed_requests += packet.
Get().size();
1650 if ( !processed_requests && !loaded_blob_ids ) {
1662 packet.
Set().push_back(
Ref(&req));
1692 unique_ptr<CReaderAllocatedConnection>
conn;
1718 param->SetName(
"log:client_name");
1720 request.
SetParams().Set().push_back(param);
1723 param->SetName(
"id2:allow");
1725 param->SetValue().push_back(
"*.blob-state");
1728 param->SetValue().push_back(
"vdb-wgs");
1732 param->SetValue().push_back(
"vdb-snp");
1736 param->SetValue().push_back(
"vdb-cdd");
1738 request.
SetParams().Set().push_back(param);
1743 param->SetName(
"snp:scale-limit");
1745 request.
SetParams().Set().push_back(param);
1751 param->SetName(
"session_id");
1753 request.
SetParams().Set().push_back(param);
1757 param->SetName(
"log:ncbi_phid");
1759 request.
SetParams().Set().push_back(param);
1763 param->SetName(
"log:client_ip");
1765 request.
SetParams().Set().push_back(param);
1770 #define x_GetReaderName(conn) \
1771 (x_ConnDescription((conn)).empty()? "CPubseq2Reader": "CId2Reader")
1785 s <<
" ID2-Request-Packet";
1805 if ( iter && iter->IsSetData() ) {
1807 save.swap(iter->SetData());
1808 size_t size = 0, count = 0, max_chunk = 0;
1811 size_t chunk = (*i)->size();
1813 max_chunk =
max(max_chunk, chunk);
1816 "Data: " <<
size <<
" bytes in " <<
1817 count <<
" chunks with " <<
1818 max_chunk <<
" bytes in chunk max";
1819 save.swap(iter->SetData());
1833 if ( it->IsSetData() ) {
1838 ERR_POST_X(1,
"Exception while dumping data: "
1857 "failed to send request: "+
1862 s <<
"Sent ID2-Request-Packet.";
1871 s <<
"Receiving ID2-Reply...";
1879 "reply deserialization failed: "+
1895 state.stages.reserve(proc_count);
1896 for (
size_t i = 0;
i < proc_count; ++
i ) {
1897 if ( packet.
Get().empty() ) {
1900 state.stages.resize(
i+1);
1907 for (
auto& it : stage.
replies ) {
1913 if ( packet.
Get().empty() ) {
1921 s <<
"Sending ID2-Request-Packet...";
1926 s <<
"Sent ID2-Request-Packet.";
1931 "failed to send request: "+
1939 if ( pos <
state.stages.size() ) {
1942 while ( stage.
replies.empty() ) {
1948 for (
auto& it : stage.
replies ) {
1964 s <<
"Receiving ID2-Reply...";
1972 "reply deserialization failed: "+
1976 if ( reply->IsSetDiscard() ) {
1997 if ( !packet.
Get().empty() ) {
2002 for (
auto&
i : packet.
Get() ) {
2003 info.requests.push_back(
i.GetPointer());
2005 info.request_count =
static_cast<int>(
info.requests.size());
2006 info.remaining_count =
info.request_count;
2007 int end_serial_num =
2009 while ( end_serial_num <=
info.request_count ) {
2015 if ( num <=
info.request_count ) {
2022 info.start_serial_num = end_serial_num -
info.request_count;
2024 int cur_serial_num =
info.start_serial_num;
2026 (*it)->SetSerial_number(cur_serial_num++);
2049 descr =
" (processor)";
2057 "CId2ReaderBase: connection timed out"<<descr);
2061 "CId2ReaderBase: connection failed"<<descr);
2065 "CId2ReaderBase: failed command"<<descr);
2069 ERR_POST_X(8,
"CId2ReaderBase: bad reply serial number: "<<descr);
2073 "CId2ReaderBase: bad reply serial number: "<<descr);
2084 info.requests[num] = 0;
2085 --
info.remaining_count;
2099 vector<SId2LoadedSet> loaded_sets(packet_info.
request_count);
2120 "CId2ReaderBase: failed to process reply: "+
2133 catch ( exception& ) {
2138 (reply->IsSetSerial_number() ||
2139 reply->IsSetParams() ||
2140 reply->IsSetError() ||
2141 reply->IsSetEnd_of_reply() ||
2142 reply->IsSetReply()) ) {
2146 catch ( exception& ) {
2153 state.conn->Release();
2186 if ( ids.IsLoaded() ) {
2189 int state = it->second.first;
2193 CBlob_Info blob_info(blob_id, it2->second.m_ContentMask);
2198 if ( !blob_annot_info ) {
2203 blob_annot_info->AddNamedAnnotName(annot_info.
GetName());
2206 annot_info.
IsSetGraph() && ainfos.size() == 1 &&
2211 s <<
"Adding zoom tracks for "
2214 for (
int zoom = 10; zoom < 1000000; zoom *= 10 ) {
2217 zoom_info->ResetFeat();
2218 zoom_info->ResetAlign();
2220 blob_annot_info->AddAnnotInfo(*zoom_info);
2232 blob_annot_info->AddAnnotInfo(annot_info);
2235 if ( blob_annot_info &&
2236 !(blob_annot_info->GetAnnotInfo().empty() &&
2237 blob_annot_info->GetNamedAnnotNames().empty()) ) {
2240 blob_ids.push_back(blob_info);
2252 const char* marker1,
2253 const char* marker2)
2255 if ( !
error.IsSetMessage() ) {
2259 if ( error_flags & test_flag ) {
2273 error_flags |= test_flag;
2282 switch (
error.GetSeverity() ) {
2285 if (
error.IsSetMessage() ) {
2286 const string& msg =
error.GetMessage();
2287 if ( msg.find(
"PTIS_FAILURE") !=
NPOS ) {
2303 if (
error.IsSetMessage() ) {
2325 if (
error.IsSetRetry_delay() ) {
2336 switch (
error.GetSeverity() ) {
2339 if (
error.IsSetMessage() ) {
2352 "Unknown satellite number 20 for bioseq info");
2372 if (
error.IsSetMessage() ) {
2467 *errors_ptr = errors;
2499 "CId2ReaderBase: connection failed");
2502 ERR_POST_X(17,
"CId2ReaderBase: failed command reply: "<<
2506 "CId2ReaderBase: failed command");
2509 auto& reply = main_reply.
GetReply();
2510 switch ( reply.Which() ) {
2513 reply.GetGet_seq_id().GetRequest(),
2514 &reply.GetGet_seq_id());
2518 reply.GetGet_blob_id());
2522 reply.GetGet_blob_seq_ids());
2526 reply.GetGet_blob());
2530 reply.GetGet_split_info());
2534 reply.GetGet_chunk());
2553 switch ( request.Which() ) {
2558 if ( request.GetGet_blob_id().IsSetSeq_id() ) {
2559 auto& req_id = request.GetGet_blob_id().GetSeq_id().GetSeq_id();
2560 if ( req_id.IsSeq_id() ) {
2567 if ( request.GetGet_blob_info().GetBlob_id().IsResolve() ) {
2568 auto& req_id = request.GetGet_blob_info().GetBlob_id().GetResolve().GetRequest().GetSeq_id().GetSeq_id();
2569 if ( req_id.IsSeq_id() ) {
2590 switch ( req_id.
Which() ) {
2605 if ( !
id.IsGeneral() ) {
2608 const string& db =
id.GetGeneral().GetDb();
2659 bool got_no_ids =
false;
2670 got_no_ids = seq_ids.empty();
2684 if ( (**it).IsGi() ) {
2685 ret.
gi = (**it).GetGi();
2695 if ( (**it).GetTextseq_Id() ) {
2706 if (
id.IsGeneral() ) {
2707 const CDbtag& dbtag =
id.GetGeneral();
2720 if (
id.IsGeneral() ) {
2721 const CDbtag& dbtag =
id.GetGeneral();
2737 if (
id.IsGeneral() ) {
2738 const CDbtag& dbtag =
id.GetGeneral();
2742 hash.sequence_found =
true;
2743 hash.hash_known =
true;
2754 if (
id.IsGeneral() ) {
2755 const CDbtag& dbtag =
id.GetGeneral();
2771 if (
id.IsGeneral() ) {
2772 const CDbtag& dbtag =
id.GetGeneral();
2776 type.sequence_found =
true;
2781 if (
type.sequence_found || got_no_ids ) {
2805 blob_state =
x_GetBlobState(blob_id, loaded_set, main_reply, &errors);
2816 ids.first |= blob_state;
2830 if ( obj_id.
IsId() &&
2850 if (
info.IsSetFeat() ) {
2853 if (
info.IsSetGraph() ) {
2856 if (
info.IsSetAlign() ) {
2919 if ( !blob_version ) {
2938 if ( data.
GetData().empty() ) {
2943 "no data in reply: "<<blob_id);
2946 ERR_POST_X(7,
"CId2ReaderBase: ID2-Reply-Get-Blob: "
2947 "no data in reply: "<<blob_id);
2968 "blob already loaded: "<<blob_id);
2974 result.SetAndSaveBlobState(blob_id, blob_state);
2984 .ProcessData(
result, blob_id, blob_state, chunk_id, data);
3005 ERR_POST_X(11,
"CId2ReaderBase: ID2S-Reply-Get-Split-Info: "
3006 "no data in reply: "<<blob_id);
3010 if ( !blob_version ) {
3028 ERR_POST_X(10,
Info<<
"CId2ReaderBase: ID2S-Reply-Get-Split-Info: "
3029 "blob already loaded: " << blob_id);
3052 skel = iter->second;
3057 result.SetAndSaveBlobState(blob_id, blob_state);
3062 .ProcessData(
result, blob_id, blob_state, chunk_id,
3078 ERR_POST_X(14,
"CId2ReaderBase: ID2S-Reply-Get-Chunk: "
3079 "no data in reply: "<<blob_id);
3084 ERR_POST_X(13,
"CId2ReaderBase: ID2S-Reply-Get-Chunk: "
3085 "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)
@ 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
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 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)
@ 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 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
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...
const TData & GetData(void) const
Get the Data member data.
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.
TData_type GetData_type(void) const
Get the Data_type 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)
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