NCBI C++ ToolKit
Protected Member Functions | Private Member Functions | List of all members
CNetCacheBlobFetchApp Class Reference

Search Toolkit Book for CNetCacheBlobFetchApp

NetCache BLOB/image fetch application. More...

+ Inheritance diagram for CNetCacheBlobFetchApp:
+ Collaboration diagram for CNetCacheBlobFetchApp:

Protected Member Functions

virtual int ProcessRequest (CCgiContext &ctx)
 This is the method you should override. More...
 
virtual int OnException (std::exception &e, CNcbiOstream &os)
 This method is called if an exception is thrown during the processing of HTTP request. More...
 
- Protected Member Functions inherited from CCgiApplication
virtual EPreparseArgs PreparseArgs (int argc, const char *const *argv)
 Check the command line arguments before parsing them. More...
 
void SetRequestId (const string &rid, bool is_done)
 
virtual void OnEvent (EEvent event, int status)
 This method is called after each request, or when the CGI is forced to skip a request, or to finish altogether without processing a request. More...
 
virtual void FASTCGI_ScheduleExit (void)
 Schedule Fast-CGI loop to end as soon as possible, after safely finishing the currently processed request, if any. More...
 
virtual CCgiContextCreateContext (CNcbiArguments *args=0, CNcbiEnvironment *env=0, CNcbiIstream *inp=0, CNcbiOstream *out=0, int ifd=-1, int ofd=-1)
 Factory method for the Context object construction. More...
 
virtual CCgiContextCreateContextWithFlags (CNcbiArguments *args, CNcbiEnvironment *env, CNcbiIstream *inp, CNcbiOstream *out, int ifd, int ofd, int flags)
 The same as CreateContext(), but allows for a custom set of flags to be specified in the CCgiRequest constructor. More...
 
CCgiContextCreateContextWithFlags_Default (CCgiRequestProcessor &processor, CNcbiArguments *args, CNcbiEnvironment *env, CNcbiIstream *inp, CNcbiOstream *out, int ifd, int ofd, int flags)
 Default implementation of CreateContextWithFlags. More...
 
void RegisterDiagFactory (const string &key, CDiagFactory *fact)
 
CDiagFactoryFindDiagFactory (const string &key)
 
virtual void ConfigureDiagnostics (CCgiContext &context)
 
virtual void ConfigureDiagDestination (CCgiContext &context)
 
virtual void ConfigureDiagThreshold (CCgiContext &context)
 
virtual void ConfigureDiagFormat (CCgiContext &context)
 
ELogOpt GetLogOpt (void) const
 
virtual CCgiStatisticsCreateStat ()
 Class factory for statistics class. More...
 
void SetCafService (CCookieAffinity *caf)
 Attach cookie affinity service interface. More...
 
void VerifyCgiContext (CCgiContext &context)
 Check CGI context for possible problems, throw exception with HTTP status set if something is wrong. More...
 
virtual string GetDefaultLogPath (void) const
 Get default path for the log files. More...
 
virtual void AppStart (void)
 Prepare properties and print the application start message. More...
 
virtual void AppStop (int exit_code)
 Prepare properties for application stop message. More...
 
void SetHTTPStatus (unsigned int status, const string &reason=kEmptyStr)
 Set HTTP status code in the current request context and in the current CHttpResponse if one exists. More...
 
virtual void ProcessHelpRequest (const string &format)
 Process help request: set content type, print usage informations etc. More...
 
virtual void ProcessVersionRequest (EVersionType ver_type)
 Process version request: set content type, print version informations etc. More...
 
virtual bool ProcessAdminRequest (EAdminCommand cmd)
 Process admin command passed through ncbi_admin_cmd argument. More...
 
void ParseAcceptHeader (TAcceptEntries &entries) const
 Parse "Accept:" header, put entries to the list, more specific first. More...
 
virtual CCgiRequestProcessorCreateRequestProcessor (void)
 Create request processor to process the request. More...
 
void ProcessHttpReferer (void)
 Set CONN_HTTP_REFERER, print self-URL and referer to log. More...
 
void LogRequest (void) const
 
void LogRequest (const CCgiContext &ctx) const
 Write the required values to log (user-agent, self-url, referer etc.) More...
 
virtual bool x_RunFastCGI (int *result, unsigned int def_iter=10)
 
string GetFastCGIStandaloneServer (void) const
 
bool GetFastCGIStatLog (void) const
 
unsigned int GetFastCGIIterations (unsigned int def_iter) const
 
bool GetFastCGIComplete_Request_On_Sigterm (void) const
 
CCgiWatchFileCreateFastCGIWatchFile (void) const
 
unsigned int GetFastCGIWatchFileTimeout (bool have_watcher) const
 
int GetFastCGIWatchFileRestartDelay (void) const
 
bool GetFastCGIChannelErrors (void) const
 
bool GetFastCGIHonorExitRequest (void) const
 
bool GetFastCGIDebug (void) const
 
bool GetFastCGIStopIfFailed (void) const
 
unsigned int GetFastCGIMTMaxThreads (void) const
 
bool CheckMemoryLimit (void)
 
void InitArgs (CArgs &args, CCgiContext &context) const
 
void AddLBCookie (CCgiCookies &cookies)
 
virtual ICacheGetCacheStorage (void) const
 
virtual bool IsCachingNeeded (const CCgiRequest &request) const
 
bool GetResultFromCache (const CCgiRequest &request, CNcbiOstream &os, ICache &cache)
 
void SaveResultToCache (const CCgiRequest &request, CNcbiIstream &is, ICache &cache)
 
void SaveRequest (const string &rid, const CCgiRequest &request, ICache &cache)
 
CCgiRequestGetSavedRequest (const string &rid, ICache &cache)
 
bool x_ProcessHelpRequest (CCgiRequestProcessor &processor)
 
bool x_ProcessVersionRequest (CCgiRequestProcessor &processor)
 
bool x_ProcessAdminRequest (CCgiRequestProcessor &processor)
 
void x_OnEvent (CCgiRequestProcessor *pprocessor, EEvent event, int status)
 
void x_OnEvent (EEvent event, int status)
 
CCgiRequestProcessorx_CreateProcessor (void)
 
- Protected Member Functions inherited from CNcbiApplicationAPI
void DisableArgDescriptions (TDisableArgDesc disable=fDisableStdArgs)
 
void HideStdArgs (THideStdArgs hide_mask)
 Set the hide mask for the Hide Std Flags. More...
 
void SetStdioFlags (TStdioSetupFlags stdio_flags)
 Adjust the behavior of standard I/O streams. More...
 
void SetVersion (const CVersionInfo &version)
 Set the version number for the program. More...
 
void SetVersion (const CVersionInfo &version, const SBuildInfo &build_info)
 
void SetVersionByBuild (int major)
 
void SetFullVersion (CRef< CVersionAPI > version)
 Set version data for the program. More...
 
const CArgDescriptionsGetArgDescriptions (void) const
 Get argument descriptions (set by SetupArgDescriptions) More...
 
bool SetupDiag (EAppDiagStream diag)
 Setup the application diagnostic stream. More...
 
virtual bool LoadConfig (CNcbiRegistry &reg, const string *conf, CNcbiRegistry::TFlags reg_flags)
 Load settings from the configuration file to the registry. More...
 
virtual bool LoadConfig (CNcbiRegistry &reg, const string *conf)
 Load settings from the configuration file to the registry. More...
 
CNcbiRegistryGetRWConfig (void)
 Get the application's cached configuration parameters, accessible for read-write for an application's internal use only. More...
 
void SetProgramDisplayName (const string &app_name)
 Set program's display name. More...
 
void SetExitCode (int exit_code, EExitMode when=eExceptionalExits)
 Force the program to return a specific exit code later, either when it exits due to an exception or unconditionally. More...
 
void SetAppFlags (TAppFlags flags)
 
void ExecuteOnExitActions ()
 Should only be called from the destructors of classes derived from CNcbiApplicationAPI - if it is necessary to access their data members and virtual methods; or to dynamic_cast<> from the base app class. More...
 
void SetPhoneHomePolicy (IPhoneHomePolicy *policy, ENcbiOwnership ownership=eNoOwnership)
 Set Phone Home Policy. More...
 
IPhoneHomePolicyGetPhoneHomePolicy () const
 Return pointer to current Phone Home Policy or NULL. More...
 

Private Member Functions

string x_GetInitString (const string &key)
 

Additional Inherited Members

- Public Types inherited from CCgiApplication
typedef CNcbiApplication CParent
 
- Public Types inherited from CNcbiApplicationAPI
enum  EAppNameType { eBaseName , eFullName , eRealName }
 
- Public Member Functions inherited from CCgiApplication
 CCgiApplication (const SBuildInfo &build_info=NCBI_SBUILDINFO_DEFAULT())
 
 ~CCgiApplication (void)
 
const CCgiContextGetContext (void) const
 Get current server context. Throw exception if the context is not set. More...
 
CCgiContextGetContext (void)
 Get current server context. Throw exception if the context is not set. More...
 
const CNcbiResourceGetResource (void) const
 Get server 'resource'. Throw exception if the resource is not set. More...
 
CNcbiResourceGetResource (void)
 Get server 'resource'. Throw exception if the resource is not set. More...
 
unsigned int GetFCgiIteration (void) const
 Get the # of currently processed HTTP request. More...
 
virtual bool IsFastCGI (void) const
 Return TRUE if it is running as a "fast" CGI. More...
 
virtual void Init (void)
 This method is called on the CGI application initialization – before starting to process a HTTP request or even receiving one. More...
 
virtual void Exit (void)
 This method is called on the CGI application exit. More...
 
virtual int Run (void)
 Do not override this method yourself! – it includes all the CGI specific machinery. More...
 
virtual CNcbiResourceLoadResource (void)
 
virtual CCgiServerContextLoadServerContext (CCgiContext &context)
 
void SetRequestFlags (int flags)
 Set cgi parsing flag. More...
 
virtual void SetupArgDescriptions (CArgDescriptions *arg_desc)
 Setup the command line argument descriptions. More...
 
virtual const CArgsGetArgs (void) const
 Get parsed command line arguments extended with CGI parameters. More...
 
virtual ICgiSessionStorageGetSessionStorage (CCgiSessionParameters &params) const
 Get instance of CGI session storage interface. More...
 
virtual bool ValidateSynchronizationToken (void)
 Validate synchronization token (cross-site request forgery prevention). More...
 
- Public Member Functions inherited from CNcbiApplication
virtual ~CNcbiApplication (void)
 Destructor. More...
 
 CNcbiApplication (const SBuildInfo &build_info=NCBI_SBUILDINFO_DEFAULT())
 Constructor. More...
 
- Public Member Functions inherited from CNcbiApplicationAPI
 CNcbiApplicationAPI (const SBuildInfo &build_info)
 Constructor. More...
 
virtual ~CNcbiApplicationAPI (void)
 Destructor. More...
 
int AppMain (int argc, const char *const *argv, const char *const *envp=0, EAppDiagStream diag=eDS_Default, const char *conf=NcbiEmptyCStr, const string &name=NcbiEmptyString)
 Main function (entry point) for the NCBI application. More...
 
virtual int DryRun (void)
 Test run the application. More...
 
const CNcbiArgumentsGetArguments (void) const
 Get the application's cached unprocessed command-line arguments. More...
 
const CNcbiEnvironmentGetEnvironment (void) const
 Get the application's cached environment. More...
 
CNcbiEnvironmentSetEnvironment (void)
 Get a non-const copy of the application's cached environment. More...
 
void SetEnvironment (const string &name, const string &value)
 Set a specified environment variable by name. More...
 
bool HasLoadedConfig (void) const
 Check if the config file has been loaded. More...
 
bool FinishedLoadingConfig (void) const
 Check if the application has finished loading config file (successfully or not). More...
 
const CNcbiRegistryGetConfig (void) const
 Get the application's cached configuration parameters (read-only). More...
 
CNcbiRegistryGetConfig (void)
 
const stringGetConfigPath (void) const
 Get the full path to the configuration file (if any) we ended up using. More...
 
bool ReloadConfig (CMetaRegistry::TFlags flags=CMetaRegistry::fReloadIfChanged, IRegistry::TFlags reg_flags=IRegistry::fWithNcbirc)
 Reload the configuration file. More...
 
SIZE_TYPE FlushDiag (CNcbiOstream *os, bool close_diag=false)
 Flush the in-memory diagnostic stream (for "eDS_ToMemory" case only). More...
 
const stringGetProgramDisplayName (void) const
 Get the application's "display" name. More...
 
const stringGetProgramExecutablePath (EFollowLinks follow_links=eIgnoreLinks) const
 Get the application's executable path. More...
 
CVersionInfo GetVersion (void) const
 Get the program version information. More...
 
const CVersionAPIGetFullVersion (void) const
 Get the program version information. More...
 
bool IsDryRun (void) const
 Check if it is a test run. More...
 
virtual bool SetupDiag_AppSpecific (void)
 Setup application specific diagnostic stream. More...
 
template<class TFunc >
void AddOnExitAction (TFunc func)
 Add callback to be executed from CNcbiApplicationAPI destructor. More...
 
- Static Public Member Functions inherited from CCgiApplication
static CCgiApplicationInstance (void)
 Singleton. More...
 
- Static Public Member Functions inherited from CNcbiApplication
static CNcbiApplicationInstance (void)
 Singleton method. More...
 
- Static Public Member Functions inherited from CNcbiApplicationAPI
static CNcbiApplicationAPIInstance (void)
 Singleton method. More...
 
static CNcbiApplicationGuard InstanceGuard (void)
 Singleton method. More...
 
static SSystemMutex & GetInstanceMutex (void)
 Mutex for application singleton object. More...
 
static string GetAppName (EAppNameType name_type=eBaseName, int argc=0, const char *const *argv=NULL)
 
- Protected Types inherited from CCgiApplication
enum  EEvent {
  eStartRequest , eSuccess , eError , eWaiting ,
  eException , eEndRequest , eExit , eExecutable ,
  eWatchFile , eExitOnFail , eExitRequest
}
 
enum  ELogOpt { eNoLog , eLog , eLogOnError }
 Analyze registry settings ([CGI] Log) and return current logging option. More...
 
enum  EVersionType { eVersion_Short , eVersion_Full }
 
enum  EAdminCommand { eAdmin_Health , eAdmin_HealthDeep , eAdmin_Unknown }
 Admin commands passed through ncbi_admin_cmd argument. More...
 
enum  ERestartReason { eSR_None = 0 , eSR_Executable = 111 , eSR_WatchFile = 112 }
 
typedef list< SAcceptEntryTAcceptEntries
 
- Protected Types inherited from CNcbiApplicationAPI
enum  EPreparseArgs { ePreparse_Continue , ePreparse_Exit }
 Result of PreparseArgs() More...
 
enum  EDisableArgDesc { fDisableStdArgs = 0x01 }
 Disable argument descriptions. More...
 
enum  EHideStdArgs {
  fHideLogfile = CArgDescriptions::fHideLogfile , fHideConffile = CArgDescriptions::fHideConffile , fHideVersion = CArgDescriptions::fHideVersion , fHideFullVersion = CArgDescriptions::fHideFullVersion ,
  fHideDryRun = CArgDescriptions::fHideDryRun , fHideHelp = CArgDescriptions::fHideHelp , fHideFullHelp = CArgDescriptions::fHideFullHelp , fHideXmlHelp = CArgDescriptions::fHideXmlHelp ,
  fHideAll = CArgDescriptions::fHideAll
}
 Which standard flag's descriptions should not be displayed in the usage message. More...
 
enum  EStdioSetup {
  fNoSyncWithStdio = 0x01 , fDefault_CinBufferSize = 0x02 , fBinaryCin = 0x04 , fBinaryCout = 0x08 ,
  fDefault_SyncWithStdio = 0x00
}
 Flags to adjust standard I/O streams' behaviour. More...
 
enum  EExitMode { eNoExits , eExceptionalExits , eAllExits }
 When to return a user-set exit code. More...
 
enum  EAppFlags { fSkipSafeStaticDestroy = 1 << 0 }
 
typedef int TDisableArgDesc
 Binary OR of "EDisableArgDesc". More...
 
typedef int THideStdArgs
 Binary OR of "EHideStdArgs". More...
 
typedef int TStdioSetupFlags
 Binary OR of "EStdioSetup". More...
 
typedef int TAppFlags
 
- Static Protected Member Functions inherited from CCgiApplication
static CTime GetFileModificationTime (const string &filename)
 
static ERestartReason ShouldRestart (CTime &mtime, CCgiWatchFile *watcher, int delay)
 
- Static Protected Member Functions inherited from CNcbiApplicationAPI
static CRWLockGetInstanceLock (void)
 
static string FindProgramExecutablePath (int argc, const char *const *argv, string *real_path=0)
 Find the application's executable file. More...
 
- Protected Attributes inherited from CCgiApplication
int m_RequestFlags
 Bit flags for CCgiRequest. More...
 
bool m_CaughtSigterm
 
CRef< CTls< CCgiRequestProcessor > > m_Processor
 
CAtomicCounter m_Iteration
 

Detailed Description

NetCache BLOB/image fetch application.

Definition at line 59 of file ncfetch.cpp.

Member Function Documentation

◆ OnException()

int CNetCacheBlobFetchApp::OnException ( std::exception &  e,
CNcbiOstream os 
)
protectedvirtual

This method is called if an exception is thrown during the processing of HTTP request.

OnEvent() will be called after this method.

Context and Resource aren't valid at the time of this method call

The default implementation sends out an HTTP response with "e.what()", and then returns zero if the printout has got through, -1 otherwise.

Parameters
eThe exception thrown
osOutput stream to the client.
Returns
Value to use as the CGI's (or FCGI iteration's) exit code
See also
OnEvent

Reimplemented from CCgiApplication.

Definition at line 140 of file ncfetch.cpp.

References CRequestStatus::e400_BadRequest, CRequestStatus::e403_Forbidden, CRequestStatus::e404_NotFound, CNetStorageException::eAuthError, CNetStorageException::eNotExists, ERR_POST, NStr::HtmlEncode(), HTTP_EOL, NCBI_REPORT_EXCEPTION, CCgiApplication::OnException(), and CCgiApplication::SetHTTPStatus().

◆ ProcessRequest()

int CNetCacheBlobFetchApp::ProcessRequest ( CCgiContext context)
protectedvirtual

This is the method you should override.

It is called whenever the CGI application gets a syntaxically valid HTTP request.

Parameters
contextContains the parameters of the HTTP request
Returns
Exit code; it must be zero on success

Implements CCgiApplication.

Definition at line 104 of file ncfetch.cpp.

References buffer, CNetStorageObject::Close(), ctx, CNetStorageObject::Eof(), CCgiRequest::GetEntry(), Info(), ncbi::grid::netcache::search::fields::key, LOG_POST, NCBI_THROW, NETSTORAGE_IO_BUFFER_SIZE, CNetStorage::Open(), CCgiResponse::out(), CNetStorageObject::Read(), s_WriteHeader(), and x_GetInitString().

◆ x_GetInitString()

string CNetCacheBlobFetchApp::x_GetInitString ( const string key)
private

The documentation for this class was generated from the following file:
Modified on Wed May 15 15:08:33 2024 by modify_doxy.py rev. 669887