m_ThrottlingDataLock(
false),
103m_ThrottlingDataInProgress(
false),
110m_LogFields(
"http"),
111m_LastMyNCBIResolveOK(
true),
112m_LastMyNCBITestOk(
true)
123 "\n\n\n<!DOCTYPE html>\n" 141 "Turn on daemonization of Pubseq Gateway at the start.");
143argdesc->SetUsageContext(
144GetArguments().GetProgramBasename(),
145 "Daemon to service Accession.Version Cache requests");
146SetupArgDescriptions(argdesc.release());
193 int32_tmax_sat = schema_snapshot->GetMaxBlobKeyspaceSat();
195 for(
intindex = 0; index <= max_sat; ++index) {
196 if(schema_snapshot->GetBlobKeyspace(index).has_value()) {
204 if(!errors.empty()) {
205 string msg=
"Error opening the LMDB cache:";
206 for(
const auto& err : errors) {
207 msg+=
"\n"+ err.message;
214}
catch(
constexception & exc) {
215 string msg=
"Error initializing the LMDB cache: "+
217 ". The server continues without cache.";
222 string msg=
"Unknown initializing LMDB cache error. " 223 "The server continues without cache.";
233 static boolneed_logging =
true;
234 static const stringinsecure_cass_section =
"CASSANDRA_DB";
235 static const stringsecure_cass_section =
"CASSANDRA_SECURE_DB";
243 auto registry= make_shared<CCompoundRegistry>();
250insecure_cass_section);
260list<string> sections;
261GetConfig().EnumerateSections(§ions);
262 for(
auto& section : sections) {
271}
catch(
constexception & exc) {
272 string msg=
"Error connecting to Cassandra: "+
277need_logging =
false;
281 string msg=
"Unknown Cassandra connecting error";
285need_logging =
false;
290need_logging =
false;
329}
catch(
constexception & exc) {
330 stringerr_msg =
"Error while periodically resolving My NCBI " 331 "access point: "+
string(exc.what());
336 stringerr_msg =
"Unknown error while periodically resolving " 337 "My NCBI access point.";
359 stringerr_msg =
"Error while periodically testing My NCBI: "+
360whoami_response.error.message;
366}
catch(
constexception & exc) {
367 stringerr_msg =
"Error while periodically testing My NCBI: "+
373 stringerr_msg =
"Unknown error while periodically testing " 392}
catch(
constexception & exc) {
411 "Error during daemonization");
421 boolpopulated =
false;
474ipg::CPubseqGatewayHugeIpgReportHelper::SetHugeIpgDisabled(
477vector<CHttpHandler> http_handler;
480http_handler.emplace_back(
482[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->
int 485}, &get_parser,
nullptr);
486http_handler.emplace_back(
488[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
490 return OnGet(req, reply);
491}, &get_parser,
nullptr);
492http_handler.emplace_back(
494[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
497}, &get_parser,
nullptr);
498http_handler.emplace_back(
499 "/ID/get_tse_chunk",
500[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
503}, &get_parser,
nullptr);
504http_handler.emplace_back(
506[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
509}, &get_parser,
nullptr);
510http_handler.emplace_back(
511 "/ID/get_acc_ver_history",
512[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
515}, &get_parser,
nullptr);
516http_handler.emplace_back(
518[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
521}, &get_parser,
nullptr);
522http_handler.emplace_back(
523 "/readyz/cassandra",
524[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
527}, &get_parser,
nullptr);
528http_handler.emplace_back(
529 "/readyz/connections",
530[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
533}, &get_parser,
nullptr);
534http_handler.emplace_back(
536[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
539}, &get_parser,
nullptr);
540http_handler.emplace_back(
542[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
545}, &get_parser,
nullptr);
546http_handler.emplace_back(
548[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
551}, &get_parser,
nullptr);
552http_handler.emplace_back(
554[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
557}, &get_parser,
nullptr);
558http_handler.emplace_back(
560[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
563}, &get_parser,
nullptr);
564http_handler.emplace_back(
566[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
569}, &get_parser,
nullptr);
570http_handler.emplace_back(
572[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
575}, &get_parser,
nullptr);
576http_handler.emplace_back(
578[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
581}, &get_parser,
nullptr);
582http_handler.emplace_back(
584[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
587}, &get_parser,
nullptr);
588http_handler.emplace_back(
590[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
593}, &get_parser,
nullptr);
594http_handler.emplace_back(
596[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
599}, &get_parser,
nullptr);
600http_handler.emplace_back(
602[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
604 return OnInfo(req, reply);
605}, &get_parser,
nullptr);
606http_handler.emplace_back(
608[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
611}, &get_parser,
nullptr);
612http_handler.emplace_back(
614[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
617}, &get_parser,
nullptr);
618http_handler.emplace_back(
619 "/ADMIN/get_alerts",
620[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
623}, &get_parser,
nullptr);
624http_handler.emplace_back(
626[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
629}, &get_parser,
nullptr);
630http_handler.emplace_back(
631 "/ADMIN/statistics",
632[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
635}, &get_parser,
nullptr);
636http_handler.emplace_back(
637 "/ADMIN/dispatcher_status",
638[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
641}, &get_parser,
nullptr);
642http_handler.emplace_back(
643 "/ADMIN/connections_status",
644[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
647}, &get_parser,
nullptr);
648http_handler.emplace_back(
649 "/ID/get_sat_mapping",
650[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
653}, &get_parser,
nullptr);
654http_handler.emplace_back(
656[
](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
660reply->SetContentLength(
sizeof(
favicon));
661reply->SendOk((
const char*)(
favicon),
sizeof(
favicon),
true);
663}, &get_parser,
nullptr);
671memcpy(current, &random_val, 8);
675http_handler.emplace_back(
677[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->
int 680}, &get_parser,
nullptr);
683http_handler.emplace_back(
685[
this](
CHttpRequest& req, shared_ptr<CPSGS_Reply> reply)->int
688}, &get_parser,
nullptr);
722this->m_Timing->Rotate();
727this->
m_Timing->CollectMomentousStat(
736this->
m_Timing->RotateRequestStat();
737this->
m_Timing->RotateAvgPerfTimeSeries();
743}
catch(
constexception & exc) {
755myncbi_monitoring_thread.join();
756cass_monitoring_thread.join();
774 size_targs_size = arguments.
Size();
777 for(
size_tindex = 0; index < args_size; ++index) {
779cmdline_args +=
" ";
780cmdline_args += arguments[index];
799shared_ptr<CPSGS_Reply> reply)
813 booloverall_need_log =
g_Log;
814 if(!overall_need_log) {
820 autochecksum = session_id_checksum.
GetChecksum();
823overall_need_log =
true;
828 if(!overall_need_log) {
829 context->SetDisabledAppLog(
true);
842 boolneed_peer_ip =
false;
846 if(!client_ip.empty()) {
847vector<string> ip_addrs;
849 if(!ip_addrs.empty()) {
851 context->SetClientIP(ip_addrs[0]);
853need_peer_ip =
true;
857 if(!client_ip.empty()) {
858 context->SetClientIP(client_ip);
881 if(!user_agent.empty()) {
883reply->UpdatePeerUserAgent(user_agent);
887 if(!peer_id.empty()) {
889reply->UpdatePeerId(peer_id);
895need_peer_ip =
true;
923reply->GetBytesSent());
940 m_Counters->IncrementRequestStopCounter(status);
947 context->SetReadOnly(
false);
948 context->SetRequestStatus(status);
949 context->SetBytesWr(bytes_sent);
958 static boolneed_logging =
true;
962stage =
"keyspace mapping";
965 stringerr_msg =
"Error populating "+ stage +
" from Cassandra: "+
969need_logging =
false;
975 stringerr_msg =
"IPG keyspace is not provisioned. " 976 "This essentially switches off the IPG resolve processor.";
980 stringerr_msg =
"IPG keyspace is provisioned as an empty string. " 981 "This essentially switches off the IPG resolve processor.";
986stage =
"public comment mapping";
989 stringerr_msg =
"Error populating "+ stage +
" from Cassandra: "+
993need_logging =
false;
997}
catch(
constexception & exc) {
998 stringerr_msg =
"Cannot populate "+ stage +
" from Cassandra.";
1003need_logging =
false;
1007 stringerr_msg =
"Unknown error while populating "+ stage +
1008 " from Cassandra.";
1011need_logging =
false;
1016 if(!initialization) {
1022 "Keyspace and public comment mapping " 1023 "from Cassandra has been populated");
1029need_logging =
false;
1038stage =
"keyspace mapping";
1041 switch(refresh_schema_result) {
1044 "New "+ stage +
" found in Cassandra. " 1045 "Server accepted it for Cassandra operations " 1046 "however the server needs to be restarted " 1047 "to use it for LMDB cache");
1054 "Error checking "+ stage +
" in Cassandra: "+
1060 stringerr_msg =
"IPG keyspace is not provisioned. " 1061 "This essentially switches off the IPG resolve processor.";
1065 stringerr_msg =
"IPG keyspace is provisioned as an empty string. " 1066 "This essentially switches off the IPG resolve processor.";
1071stage =
"public comment mapping";
1073 switch(refresh_msgs_result) {
1076 "New "+ stage +
" found in Cassandra. " 1077 "Server accepted it for Cassandra operations.");
1084 "Error checking "+ stage +
" in Cassandra: "+
1088}
catch(
constexception & exc) {
1090 "Error checking "+ stage +
" in Cassandra: "+
1091 string(exc.what()));
1095 "Unknown error checking "+ stage +
" in Cassandra");
1106shared_ptr<CPSGS_Reply> reply,
1108 const string& message,
1111 if(reply->IsFinished()) {
1118reply->PrepareReplyMessage(message, status,
code, severity);
1119reply->PrepareReplyCompletion(status, create_timestamp);
1121reply->SetCompleted();
1128SSL_load_error_strings();
1130OpenSSL_add_all_algorithms();
1142unique_ptr<IPSGS_Processor>(
newpsg::cdd::CPSGS_CDDProcessor()));
1144unique_ptr<IPSGS_Processor>(
newpsg::wgs::CPSGS_WGSProcessor()));
1146unique_ptr<IPSGS_Processor>(
newpsg::snp::CPSGS_SNPProcessor()));
1167 PSG_ERROR(
"Binding is supported only for the worker threads");
1169 "Binding is supported only for the worker threads");
1171 return*(it->second.get());
1195 const stringtd_begin =
"<td>";
1196 const stringtd_end =
"</td>";
1197 const stringpattern = td_begin +
"build-date"+ td_end;
1200 if(label_pos == string::npos) {
1201 PSG_WARNING(
"Cannot find build date label pattern in the generated htlm help");
1205 autobuild_date_begin_pos = label_pos + pattern.size();
1207 if(build_date_begin_pos == string::npos) {
1208 PSG_WARNING(
"Cannot find build date begin in the generated htlm help");
1212build_date_begin_pos += td_begin.size();
1213 autobuild_date_end_pos =
m_HelpMessageHtml.find(td_end, build_date_begin_pos);
1214 if(build_date_end_pos == string::npos) {
1215 PSG_WARNING(
"Cannot find build date end in the generated htlm help");
1220build_date_end_pos - build_date_begin_pos,
1225 int main(
intargc,
const char* argv[])
1227srand(time(
NULL));
1239google::protobuf::ShutdownProtobufLibrary();
size_t GetActiveProcGroupCounter(void)
@ ePSGS_NoValidCassandraMapping
@ ePSGS_NewCassandraMappingAccepted
@ ePSGS_NewCassandraSatNamesMapping
@ ePSGS_InvalidCassandraMapping
@ ePSGS_NewCassandraPublicCommentMapping
size_t GetBacklogSize(void)
void CassMonitorThreadedFunction(void)
CChecksum â Checksum calculator.
string GetHeaderValue(const string &name)
CDiagContext_Extra & PrintParams(CDiagContext_Extra &extra, bool need_peer_ip)
void PrintLogFields(const CNcbiLogFields &log_fields)
string Repr(TReprFlags flags=0) const
Return a string representation of this node.
static CNcbiApplication * Instance(void)
Singleton method.
void RegisterForTimeSeries(CPSGS_Request::EPSGS_Type request_type, CRequestStatus::ECode status)
void Register(EPSGS_AlertType alert_type, const string &message)
Based on various attributes of the request: {{seq_id}}; NA name; {{blob_id}}; etc (or a combination t...
static bool InitGlobal(string &error)
unique_ptr< CExcludeBlobCache > m_ExcludeBlobCache
void x_InitialzeZEndPointData(void)
int OnConfig(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
int OnReadyzConnections(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
unique_ptr< CHttpDaemon > m_HttpDaemon
void x_RegisterProcessors(void)
unique_ptr< CMyNCBIErrorCache > m_MyNCBIErrorCache
int OnGet(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
map< uv_thread_t, unique_ptr< CPSGS_UvLoopBinder > > m_ThreadToBinder
int OnHealthz(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
CNcbiLogFields m_LogFields
int OnShutdown(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
EPSGS_ThrottlingDecision x_CheckThrottling(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply, const string &peer_ip, const string &peer_id, const string &user_agent)
int OnConnectionsStatus(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
int OnGetBlob(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
int OnReadyzCassandra(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
void DoMyNCBIDnsResolve(void)
int OnGetAlerts(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
void x_PrintRequestStop(CRef< CRequestContext > &context, CPSGS_Request::EPSGS_Type request_type, CRequestStatus::ECode status, size_t bytes_sent)
SPubseqGatewaySettings m_Settings
int OnReadyzWGS(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
void x_CloseThrottledConnection(shared_ptr< CPSGS_Reply > reply, unsigned int worker_id, int64_t conn_id)
void CreateMyNCBIFactory(void)
int OnStatistics(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
int OnTestIO(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
int OnAckAlert(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
int OnGetNA(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
bool m_LastMyNCBIResolveOK
unique_ptr< COperationTiming > m_Timing
int OnGetSatMapping(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
void TestMyNCBI(uv_loop_t *loop)
string x_GetCmdLineArguments(void) const
unique_ptr< CMyNCBIOKCache > m_MyNCBIOKCache
shared_ptr< CSatInfoSchemaProvider > m_CassSchemaProvider
void x_FixIntrospectionVersion(void)
unique_ptr< CMyNCBINotFoundCache > m_MyNCBINotFoundCache
void x_FixIntrospectionBuildDate(void)
int OnGetTSEChunk(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
unique_ptr< CPSGS_Dispatcher > m_RequestDispatcher
static CPubseqGatewayApp * sm_PubseqApp
int OnHealth(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
int OnStatus(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
void x_SendMessageAndCompletionChunks(shared_ptr< CPSGS_Reply > reply, const psg_time_point_t &now, const string &message, CRequestStatus::ECode status, int code, EDiagSev severity)
int OnReadyzLMDB(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
CRef< CRequestContext > x_CreateRequestContext(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
unique_ptr< CPSGSCounters > m_Counters
unique_ptr< char[]> m_IOTestBuffer
void CheckCassMapping(void)
COperationTiming & GetTiming(void)
int OnDeepHealth(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
int OnInfo(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
static CPubseqGatewayApp * GetInstance(void)
shared_ptr< CPSG_MyNCBIFactory > m_MyNCBIFactory
shared_ptr< CCassConnectionFactory > m_CassConnectionFactory
int OnIPGResolve(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
int OnHello(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
bool PopulateCassandraMapping(bool initialization)
EPSGS_StartupDataState m_StartupDataState
shared_ptr< CCassConnection > m_CassConnection
int OnAccessionVersionHistory(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
int OnReadyzSNP(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
unique_ptr< CPubseqGatewayCache > m_LookupCache
int OnResolve(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
int OnReadyzCDD(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
int OnLivez(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
CPSGS_UvLoopBinder & GetUvLoopBinder(uv_thread_t uv_thread_id)
int OnBadURL(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
string x_PrepareConfigJson(void)
int OnReadyz(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
int OnDispatcherStatus(CHttpRequest &req, shared_ptr< CPSGS_Reply > reply)
unique_ptr< CSplitInfoCache > m_SplitInfoCache
iterator_bool insert(const value_type &val)
const unsigned char favicon[]
static void InitTables(void)
Initialize static tables used in CRC32 calculation.
void AddLine(const char *line, size_t len)
Uint4 GetChecksum(void) const
Return calculated checksum.
void PrintRequestStop(void)
Print request stop message (for request-driven applications)
CDiagContext_Extra & Print(const string &name, const string &value)
The method does not print the argument, but adds it to the string.
EDiagSev GetDiagPostLevel(void)
Get current threshold severity for posting the messages.
CDiagContext & GetDiagContext(void)
Get diag context instance.
static void SetRequestContext(CRequestContext *ctx)
Shortcut to CDiagContextThreadData::GetThreadData().SetRequestContext()
void PrintRequestStart(const string &message)
Print request start message (for request-driven applications)
static CRequestContext & GetRequestContext(void)
Shortcut to CDiagContextThreadData::GetThreadData().GetRequestContext()
bool GetDiagTrace(void)
Check if traces are enabled.
void SetAutoIncRequestIDOnPost(bool enable)
Auto-increment request ID with every posted message.
void Flush(void)
Print the message and reset object.
static void SetAllowedSessionIDFormat(ESessionIDFormat fmt)
#define ERR_POST(message)
Error posting with file, line number information but without error codes.
static void SetDefaultAutoIncRequestIDOnPost(bool enable)
Set default auto-increment flag used for each default request context.
EDiagSev
Severity level for the posted diagnostics.
static void SetOldPostFormat(bool value)
Set old/new format flag.
void g_Diag_Use_RWLock(bool enable=true)
Use RW-lock for synchronization rather than mutex.
@ eSID_Other
Any other format.
@ eDS_ToStdlog
Try standard log file (app.name + ".log") in /log/ and current directory, use stderr if both fail.
@ eDisable_All
Disable all applog events (default).
@ eDiag_Critical
Critical error message.
@ e503_ServiceUnavailable
@ e500_InternalServerError
SIZE_TYPE Size(void) const
Get size (number) of arguments.
void Critical(CExceptionArgs_Base &args)
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
uint64_t Uint8
8-byte (64-bit) unsigned integer
static TPid Daemonize(const char *logfile=0, TDaemonFlags flags=0)
Go daemon.
@ fDF_KeepCWD
Don't change CWD to "/".
@ fDF_KeepStdout
Keep stdout open as "/dev/null" (WO)
@ fDF_KeepStdin
Keep stdin open as "/dev/null" (RO)
Uint8 GetRandUint8(void)
Get random Uint8 number.
static int CompareNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive compare of a substring with another string.
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 string & ReplaceInPlace(string &src, const string &search, const string &replace, SIZE_TYPE start_pos=0, SIZE_TYPE max_replace=0, SIZE_TYPE *num_replace=0)
Replace occurrences of a substring within a string.
const char *const kEmptyCStr
Empty "C" string (points to a '\0').
static void InitializeMainThreadId(void)
Initialize main thread's TID.
CTime GetFastLocalTime(void)
Quick and dirty getter of local time.
CJsonNode GetIntrospectionNode(void)
if(yy_accept[yy_current_state])
void MyNCBIMonitorThreadedFunction(size_t my_ncbi_dns_resolve_ok_period_sec, size_t my_ncbi_dns_resolve_fail_period_sec, size_t my_ncbi_test_ok_period_sec, size_t my_ncbi_test_fail_period_sec, bool *last_my_ncbi_resolve_oK, bool *last_my_ncbi_test_ok)
static EIO_Status s_Create(const char *hostpath, unsigned short port, const STimeout *timeout, SOCK *sock, const SSOCK_Init *init, TSOCK_Flags flags)
#define GetArgs
Avoid preprocessor name clash with the NCBI C Toolkit.
Defines NCBI C++ diagnostic APIs, classes, and macros.
Defines classes: CDirEntry, CFile, CDir, CSymLink, CMemoryFile, CFileUtil, CFileLock,...
Multi-threading â classes, functions, and features.
static string kRequestPathApplog
static unsigned long s_TickNoFor5Sec
static string kNcbiSidHeader
static string kNcbiPhidHeader
static string kUserAgentHeader
bool g_AllowProcessorTiming
SShutdownData g_ShutdownData
const float kSplitInfoBlobCacheSizeMultiplier
static unsigned long s_TickNoFor1Min
const float kUserInfoCacheSizeMultiplier
static string kXForwardedForHeader
EDiagSev g_ConfiguredSeverity
static string kConnectionId
static unsigned long s_TickNo
static string kPeerIdHeader
static string kUserAgentApplog
static const string kDaemonizeArgName
int main(int argc, const char *argv[])
static string kPeerIdApplog
const EDiagSev kDefaultSeverity
const long kMaxTestIOSize
#define PSG_ERROR(message)
#define PSG_CRITICAL(message)
#define PSG_WARNING(message)
@ ePSGS_NoValidCassMapping
psg_clock_t::time_point psg_time_point_t
#define PUBSEQ_GATEWAY_BUILD_DATE
#define PUBSEQ_GATEWAY_VERSION
Defines CRequestContext class for NCBI C++ diagnostic API.
static SLJIT_INLINE sljit_ins msg(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
unsigned long m_MinStatValue
int64_t m_TcpMaxConnAlertLimit
size_t m_SplitInfoBlobCacheSize
string m_OnlyForProcessor
string m_BioseqInfoDbFile
string m_MyNCBITestWebCubbyUser
double m_RequestTimeoutSec
size_t m_LogTimingThreshold
size_t m_MyNCBIDnsResolveFailPeriodSec
map< string, tuple< string, string > > m_IdToNameAndDescription
unsigned int m_ExcludeCachePurgePercentage
size_t m_MyNCBITestOkPeriodSec
size_t m_MyNCBINotFoundCacheSize
unsigned short m_HttpPort
unsigned long m_MaxStatValue
size_t m_LogSamplingRatio
size_t m_MyNCBITestFailPeriodSec
unsigned short m_HttpWorkers
string m_ConfigurationDomain
void Read(const CNcbiRegistry ®istry)
size_t m_MyNCBIErrorCacheBackOffMs
size_t m_MyNCBIDnsResolveOkPeriodSec
size_t m_MyNCBIOKCacheSize
unsigned int m_ExcludeCacheMaxSize
void Validate(CPSGAlerts &alerts)
unsigned long m_SmallBlobSize
double m_ConnForceCloseWaitSec
int64_t m_TcpMaxConnSoftLimit
unsigned int m_ListenerBacklog
bool m_AllowProcessorTiming
unsigned int m_ExcludeCacheInactivityPurge
size_t m_MyNCBINotFoundCacheExpirationSec
size_t m_MyNCBIErrorCacheSize
unsigned long m_NStatBins
size_t m_MyNCBIResolveTimeoutMs
atomic_bool m_ShutdownRequested
static CS_CONTEXT * context
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4