NCBI C++ ToolKit
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
CCgiApplication Class Referenceabstract

Search Toolkit Book for CCgiApplication

#include <cgi/cgiapp.hpp>

+ Inheritance diagram for CCgiApplication:
+ Collaboration diagram for CCgiApplication:


struct  SAcceptEntry
 "Accept:" header entry. More...

Public Types

typedef CNcbiApplication CParent
- Public Types inherited from CNcbiApplicationAPI
enum  EAppNameType { eBaseName , eFullName , eRealName }

Public Member Functions

 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 int ProcessRequest (CCgiContext &context)=0
 This is the method you should override. 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

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

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

Protected Member Functions

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 int OnException (std::exception &e, CNcbiOstream &os)
 This method is called if an exception is thrown during the processing of HTTP request. More...
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...

Static Protected Member Functions

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

int m_RequestFlags
 Bit flags for CCgiRequest. More...
bool m_CaughtSigterm
CRef< CTls< CCgiRequestProcessor > > m_Processor
CAtomicCounter m_Iteration

Private Types

typedef map< string, CDiagFactory * > TDiagFactoryMap

Private Member Functions

void x_AddLBCookie ()
CCgiContextx_GetContext (void) const
CNcbiResourcex_GetResource (void) const
bool x_IsSetProcessor (void) const
CCgiRequestProcessorx_GetProcessor (void) const
CCgiRequestProcessorx_GetProcessorOrNull (void) const
bool x_DoneHeadRequest (CCgiContext &context) const
 CCgiApplication (const CCgiApplication &)
CCgiApplicationoperator= (const CCgiApplication &)

Private Attributes

unique_ptr< CNcbiResourcem_Resource
TDiagFactoryMap m_DiagFactories
unique_ptr< CCookieAffinitym_Caf
char * m_HostIP
string m_DiagPrefixEnv
bool m_ShouldExit = false


class CCgiStatistics
class CCgiRequestProcessor
void s_ScheduleFastCGIExit (void)

Detailed Description

Definition at line 62 of file cgiapp.hpp.

The documentation for this class was generated from the following files:
Modified on Sun Jun 16 04:32:48 2024 by rev. 669887