NCBI C++ ToolKit
|
Search Toolkit Book for CCgiApplication
#include <cgi/cgiapp.hpp>
Classes | |
struct | SAcceptEntry |
"Accept:" header entry. More... | |
Public Types | |
typedef CNcbiApplication | CParent |
![]() | |
enum | EAppNameType { eBaseName , eFullName , eRealName } |
Public Member Functions | |
CCgiApplication (const SBuildInfo &build_info=NCBI_SBUILDINFO_DEFAULT()) | |
~CCgiApplication (void) | |
const CCgiContext & | GetContext (void) const |
Get current server context. Throw exception if the context is not set. More... | |
CCgiContext & | GetContext (void) |
Get current server context. Throw exception if the context is not set. More... | |
const CNcbiResource & | GetResource (void) const |
Get server 'resource'. Throw exception if the resource is not set. More... | |
CNcbiResource & | GetResource (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 CNcbiResource * | LoadResource (void) |
virtual CCgiServerContext * | LoadServerContext (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 CArgs & | GetArgs (void) const |
Get parsed command line arguments extended with CGI parameters. More... | |
virtual ICgiSessionStorage * | GetSessionStorage (CCgiSessionParameters ¶ms) const |
Get instance of CGI session storage interface. More... | |
virtual bool | ValidateSynchronizationToken (void) |
Validate synchronization token (cross-site request forgery prevention). More... | |
![]() | |
virtual | ~CNcbiApplication (void) |
Destructor. More... | |
CNcbiApplication (const SBuildInfo &build_info=NCBI_SBUILDINFO_DEFAULT()) | |
Constructor. More... | |
![]() | |
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 CNcbiArguments & | GetArguments (void) const |
Get the application's cached unprocessed command-line arguments. More... | |
const CNcbiEnvironment & | GetEnvironment (void) const |
Get the application's cached environment. More... | |
CNcbiEnvironment & | SetEnvironment (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 CNcbiRegistry & | GetConfig (void) const |
Get the application's cached configuration parameters (read-only). More... | |
CNcbiRegistry & | GetConfig (void) |
const string & | GetConfigPath (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 string & | GetProgramDisplayName (void) const |
Get the application's "display" name. More... | |
const string & | GetProgramExecutablePath (EFollowLinks follow_links=eIgnoreLinks) const |
Get the application's executable path. More... | |
CVersionInfo | GetVersion (void) const |
Get the program version information. More... | |
const CVersionAPI & | GetFullVersion (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 CCgiApplication * | Instance (void) |
Singleton. More... | |
![]() | |
static CNcbiApplication * | Instance (void) |
Singleton method. More... | |
![]() | |
static CNcbiApplicationAPI * | Instance (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< SAcceptEntry > | TAcceptEntries |
![]() | |
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 CCgiContext * | CreateContext (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 CCgiContext * | CreateContextWithFlags (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... | |
CCgiContext * | CreateContextWithFlags_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) |
CDiagFactory * | FindDiagFactory (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 CCgiStatistics * | CreateStat () |
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 CCgiRequestProcessor * | CreateRequestProcessor (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 |
CCgiWatchFile * | CreateFastCGIWatchFile (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 ICache * | GetCacheStorage (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) |
CCgiRequest * | GetSavedRequest (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) |
CCgiRequestProcessor & | x_CreateProcessor (void) |
![]() | |
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 CArgDescriptions * | GetArgDescriptions (void) const |
Get argument descriptions (set by SetupArgDescriptions) More... | |
bool | SetupDiag (EAppDiagStream diag) |
Setup the application diagnostic stream. More... | |
virtual bool | LoadConfig (CNcbiRegistry ®, const string *conf, CNcbiRegistry::TFlags reg_flags) |
Load settings from the configuration file to the registry. More... | |
virtual bool | LoadConfig (CNcbiRegistry ®, const string *conf) |
Load settings from the configuration file to the registry. More... | |
CNcbiRegistry & | GetRWConfig (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... | |
Static Protected Member Functions | |
static CTime | GetFileModificationTime (const string &filename) |
static ERestartReason | ShouldRestart (CTime &mtime, CCgiWatchFile *watcher, int delay) |
![]() | |
static CRWLock & | GetInstanceLock (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 () |
CCgiContext & | x_GetContext (void) const |
CNcbiResource & | x_GetResource (void) const |
bool | x_IsSetProcessor (void) const |
CCgiRequestProcessor & | x_GetProcessor (void) const |
CCgiRequestProcessor * | x_GetProcessorOrNull (void) const |
bool | x_DoneHeadRequest (CCgiContext &context) const |
CCgiApplication (const CCgiApplication &) | |
CCgiApplication & | operator= (const CCgiApplication &) |
Private Attributes | |
unique_ptr< CNcbiResource > | m_Resource |
TDiagFactoryMap | m_DiagFactories |
unique_ptr< CCookieAffinity > | m_Caf |
char * | m_HostIP |
string | m_DiagPrefixEnv |
bool | m_ShouldExit = false |
Friends | |
class | CCgiStatistics |
class | CCgiRequestProcessor |
void | s_ScheduleFastCGIExit (void) |
Definition at line 62 of file cgiapp.hpp.