You are viewing a plain text version of this content. The canonical link for it is here.
Posted to embperl-cvs@perl.apache.org by ri...@apache.org on 2002/01/23 11:11:35 UTC
cvs commit: embperl ep2.h epcache.c epdat2.h epmain.c epprovider.c
richter 02/01/23 02:11:35
Modified: . Tag: Embperl2c ep2.h epcache.c epdat2.h epmain.c
epprovider.c
Log:
Revision Changes Path
No revision
No revision
1.1.2.26 +12 -8 embperl/Attic/ep2.h
Index: ep2.h
===================================================================
RCS file: /home/cvs/embperl/Attic/ep2.h,v
retrieving revision 1.1.2.25
retrieving revision 1.1.2.26
diff -u -r1.1.2.25 -r1.1.2.26
--- ep2.h 17 Jan 2002 23:16:17 -0000 1.1.2.25
+++ ep2.h 23 Jan 2002 10:11:35 -0000 1.1.2.26
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: ep2.h,v 1.1.2.25 2002/01/17 23:16:17 richter Exp $
+# $Id: ep2.h,v 1.1.2.26 2002/01/23 10:11:35 richter Exp $
#
###################################################################################*/
@@ -154,9 +154,9 @@
int (*fNew)(req * r, tCacheItem * pOutputCache, struct tProviderClass * pProviderClass, HV * pParam) ; /**< called to initialize the provider */
int (*fAppendKey)(req * r, struct tProviderClass * pProviderClass, HV * pParam, SV * pKey) ; /**< append the key for the cache of the provider and it's dependencies */
int (*fUpdateParam)(req * r, struct tProvider * pProvider, HV * pParam) ; /**< update the parameter of the provider */
- int (*fGetContentSV)(req * r, struct tProvider * pProvider, SV ** pData) ; /**< Get the content from that provider */
- int (*fGetContentPtr)(req * r, struct tProvider * pProvider, void ** pData) ; /**< Get the content from that provider */
- int (*fGetContentIndex)(req * r, struct tProvider * pProvider, tIndex * pData) ;/**< Get the content from that provider */
+ int (*fGetContentSV)(req * r, struct tProvider * pProvider, SV ** pData, bool bUseCache) ; /**< Get the content from that provider */
+ int (*fGetContentPtr)(req * r, struct tProvider * pProvider, void ** pData, bool bUseCache) ; /**< Get the content from that provider */
+ int (*fGetContentIndex)(req * r, struct tProvider * pProvider, tIndex * pData, bool bUseCache) ;/**< Get the content from that provider */
int (*fFreeContent) (req * r, struct tCacheItem * pItem) ; /**< Called to free memory of associated data */
int (*fExpires) (req * r, struct tProvider * pProvider) ; /**< Called to check if provider content is expired */
} tProviderClass ;
@@ -208,20 +208,24 @@
int Cache_GetContentSV (/*in*/ req * r,
/*in*/ tCacheItem *pItem,
- /*in*/ SV * * pData) ;
+ /*in*/ SV * * pData,
+ /*in*/ bool bUseCache) ;
int Cache_GetContentPtr (/*in*/ req * r,
/*in*/ tCacheItem *pItem,
- /*in*/ void * * pData) ;
+ /*in*/ void * * pData,
+ /*in*/ bool bUseCache) ;
int Cache_GetContentIndex (/*in*/ req * r,
/*in*/ tCacheItem *pItem,
- /*in*/ tIndex * pData) ;
+ /*in*/ tIndex * pData,
+ /*in*/ bool bUseCache) ;
int Cache_GetContentSvIndex (/*in*/ req * r,
/*in*/ tCacheItem *pItem,
/*in*/ SV * * pSVData,
- /*in*/ tIndex * pData) ;
+ /*in*/ tIndex * pData,
+ /*in*/ bool bUseCache) ;
int Cache_ReleaseContent (/*in*/ req * r,
/*in*/ tCacheItem *pItem) ;
1.1.2.20 +55 -19 embperl/Attic/epcache.c
Index: epcache.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epcache.c,v
retrieving revision 1.1.2.19
retrieving revision 1.1.2.20
diff -u -r1.1.2.19 -r1.1.2.20
--- epcache.c 18 Jan 2002 16:22:36 -0000 1.1.2.19
+++ epcache.c 23 Jan 2002 10:11:35 -0000 1.1.2.20
@@ -9,7 +9,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: epcache.c,v 1.1.2.19 2002/01/18 16:22:36 richter Exp $
+# $Id: epcache.c,v 1.1.2.20 2002/01/23 10:11:35 richter Exp $
#
###################################################################################*/
@@ -141,7 +141,7 @@
* expires, 0 = expires never
* expires_func Perl Function (coderef) that
* is called and item is expired
-* if it returns true
+* if it returns TRUE
* expires_filename item expires when modification
* time of file changes
* cache set to zero to not cache the content
@@ -570,7 +570,7 @@
* @param nLastUpdated When a item on which this one depends, was
* updated after the given request count, then
* this item is expired
-* @return TRUE if expired, otherwise false
+* @return TRUE if expired, otherwise FALSE
* \endif
*
* \_de
@@ -713,7 +713,7 @@
*
* @param r Embperl request record
* @param pItem CacheItem which should be checked
-* @return TRUE if expired, otherwise false
+* @return TRUE if expired, otherwise FALSE
* \endif
*
* \_de
@@ -755,7 +755,7 @@
* @param r Embperl request record
* @param pItem CacheItem which should be checked
* @param pData Returns the content
-* @param pLen Returns the length
+* @param bUseCache Set if the content should not recomputed
* @return error code
* \endif
*
@@ -768,7 +768,7 @@
* @param r Embperl request record
* @param pItem CacheItem welches �berpr�ft werden soll
* @param pData Liefert den Inhalt
-* @param pLen Liefert die L�nge
+* @param bUseCache Gesetzt wenn der Inhalt nicht neu berechnet werden soll
* @return Fehlercode
* \endif
*
@@ -778,15 +778,16 @@
int Cache_GetContentSV (/*in*/ req * r,
/*in*/ tCacheItem *pItem,
- /*in*/ SV * * pData)
+ /*in*/ SV * * pData,
+ /*in*/ bool bUseCache)
{
int rc ;
- if (Cache_IsExpired (r, pItem, pItem -> nLastUpdated) || !pItem -> pSVData)
+ if (!bUseCache && (Cache_IsExpired (r, pItem, pItem -> nLastUpdated) || !pItem -> pSVData))
{
if (pItem -> pProvider -> pProviderClass -> fGetContentSV)
- if ((rc = ((*pItem -> pProvider -> pProviderClass -> fGetContentSV) (r, pItem -> pProvider, pData))) != ok)
+ if ((rc = ((*pItem -> pProvider -> pProviderClass -> fGetContentSV) (r, pItem -> pProvider, pData, FALSE))) != ok)
{
Cache_FreeContent (r, pItem) ;
return rc ;
@@ -799,6 +800,12 @@
if (r -> Component.Config.bDebug & dbgCache)
lprintf (r -> pApp, "[%d]CACHE: %s take from cache\n", r -> pThread -> nPid, pItem -> sKey) ;
*pData = pItem -> pSVData ;
+ if (pItem -> pProvider -> pProviderClass -> fGetContentSV)
+ if ((rc = ((*pItem -> pProvider -> pProviderClass -> fGetContentSV) (r, pItem -> pProvider, pData, TRUE))) != ok)
+ {
+ Cache_FreeContent (r, pItem) ;
+ return rc ;
+ }
}
@@ -818,6 +825,7 @@
* @param r Embperl request record
* @param pItem CacheItem which should be checked
* @param pData Returns the content
+* @param bUseCache Set if the content should not recomputed
* @return error code
* \endif
*
@@ -830,6 +838,7 @@
* @param r Embperl request record
* @param pItem CacheItem welches �berpr�ft werden soll
* @param pData Liefert den Inhalt
+* @param bUseCache Gesetzt wenn der Inhalt nicht neu berechnet werden soll
* @return Fehlercode
* \endif
*
@@ -839,17 +848,18 @@
int Cache_GetContentPtr (/*in*/ req * r,
/*in*/ tCacheItem *pItem,
- /*in*/ void * * pData)
+ /*in*/ void * * pData,
+ /*in*/ bool bUseCache)
{
int rc ;
- if (Cache_IsExpired (r, pItem, pItem -> nLastUpdated) || !pItem -> pData)
+ if (!bUseCache && (Cache_IsExpired (r, pItem, pItem -> nLastUpdated) || !pItem -> pData))
{
if (r -> Component.Config.bDebug & dbgCache)
lprintf (r -> pApp, "[%d]CACHE: %s get from provider\n", r -> pThread -> nPid, pItem -> sKey) ;
if (pItem -> pProvider -> pProviderClass -> fGetContentPtr)
- if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentPtr) (r, pItem -> pProvider, pData)) != ok)
+ if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentPtr) (r, pItem -> pProvider, pData, FALSE)) != ok)
{
Cache_FreeContent (r, pItem) ;
return rc ;
@@ -862,6 +872,12 @@
if (r -> Component.Config.bDebug & dbgCache)
lprintf (r -> pApp, "[%d]CACHE: %s take from cache\n", r -> pThread -> nPid, pItem -> sKey) ;
*pData = pItem -> pData ;
+ if (pItem -> pProvider -> pProviderClass -> fGetContentPtr)
+ if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentPtr) (r, pItem -> pProvider, pData, TRUE)) != ok)
+ {
+ Cache_FreeContent (r, pItem) ;
+ return rc ;
+ }
}
return ok ;
}
@@ -879,6 +895,7 @@
* @param r Embperl request record
* @param pItem CacheItem which should be checked
* @param pData Returns the content
+* @param bUseCache Set if the content should not recomputed
* @return error code
* \endif
*
@@ -891,6 +908,7 @@
* @param r Embperl request record
* @param pItem CacheItem welches �berpr�ft werden soll
* @param pData Liefert den Inhalt
+* @param bUseCache Gesetzt wenn der Inhalt nicht neu berechnet werden soll
* @return Fehlercode
* \endif
*
@@ -900,17 +918,18 @@
int Cache_GetContentIndex (/*in*/ req * r,
/*in*/ tCacheItem *pItem,
- /*in*/ tIndex * pData)
+ /*in*/ tIndex * pData,
+ /*in*/ bool bUseCache)
{
int rc ;
- if (Cache_IsExpired (r, pItem, pItem -> nLastUpdated) || !pItem -> xData)
+ if (!bUseCache && (Cache_IsExpired (r, pItem, pItem -> nLastUpdated) || !pItem -> xData))
{
if (r -> Component.Config.bDebug & dbgCache)
lprintf (r -> pApp, "[%d]CACHE: %s get from provider\n", r -> pThread -> nPid, pItem -> sKey) ;
if (pItem -> pProvider -> pProviderClass -> fGetContentIndex)
- if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentIndex) (r, pItem -> pProvider, pData)) != ok)
+ if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentIndex) (r, pItem -> pProvider, pData, FALSE)) != ok)
{
Cache_FreeContent (r, pItem) ;
return rc ;
@@ -923,6 +942,12 @@
if (r -> Component.Config.bDebug & dbgCache)
lprintf (r -> pApp, "[%d]CACHE: %s take from cache\n", r -> pThread -> nPid, pItem -> sKey) ;
*pData = pItem -> xData ;
+ if (pItem -> pProvider -> pProviderClass -> fGetContentIndex)
+ if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentIndex) (r, pItem -> pProvider, pData, TRUE)) != ok)
+ {
+ Cache_FreeContent (r, pItem) ;
+ return rc ;
+ }
}
return ok ;
}
@@ -940,6 +965,7 @@
* @param r Embperl request record
* @param pItem CacheItem which should be checked
* @param pData Returns the content
+* @param bUseCache Set if the content should not recomputed
* @return error code
* \endif
*
@@ -952,6 +978,7 @@
* @param r Embperl request record
* @param pItem CacheItem welches �berpr�ft werden soll
* @param pData Liefert den Inhalt
+* @param bUseCache Gesetzt wenn der Inhalt nicht neu berechnet werden soll
* @return Fehlercode
* \endif
*
@@ -962,13 +989,14 @@
int Cache_GetContentSvIndex (/*in*/ req * r,
/*in*/ tCacheItem *pItem,
/*in*/ SV * * pSVData,
- /*in*/ tIndex * pData)
+ /*in*/ tIndex * pData,
+ /*in*/ bool bUseCache)
{
int rc ;
bool bUpdate = FALSE ;
- if (Cache_IsExpired (r, pItem, pItem -> nLastUpdated))
+ if (!bUseCache && (Cache_IsExpired (r, pItem, pItem -> nLastUpdated)))
{
pItem -> xData = 0 ;
pItem -> pSVData = NULL ;
@@ -978,7 +1006,7 @@
if (r -> Component.Config.bDebug & dbgCache)
lprintf (r -> pApp, "[%d]CACHE: %s get from provider\n", r -> pThread -> nPid, pItem -> sKey) ;
if (pItem -> pProvider -> pProviderClass -> fGetContentIndex)
- if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentIndex) (r, pItem -> pProvider, pData)) != ok)
+ if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentIndex) (r, pItem -> pProvider, pData, FALSE)) != ok)
{
Cache_FreeContent (r, pItem) ;
return rc ;
@@ -987,14 +1015,22 @@
bUpdate = TRUE ;
}
else
+ {
*pData = pItem -> xData ;
+ if (pItem -> pProvider -> pProviderClass -> fGetContentIndex)
+ if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentIndex) (r, pItem -> pProvider, pData, TRUE)) != ok)
+ {
+ Cache_FreeContent (r, pItem) ;
+ return rc ;
+ }
+ }
if (!pItem -> pSVData)
{
if ((r -> Component.Config.bDebug & dbgCache) && !bUpdate)
lprintf (r -> pApp, "[%d]CACHE: %s get from provider\n", r -> pThread -> nPid, pItem -> sKey) ;
if (pItem -> pProvider -> pProviderClass -> fGetContentSV)
- if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentSV) (r, pItem -> pProvider, pSVData)) != ok)
+ if ((rc = (*pItem -> pProvider -> pProviderClass -> fGetContentSV) (r, pItem -> pProvider, pSVData, FALSE)) != ok)
{
Cache_FreeContent (r, pItem) ;
return rc ;
1.1.2.14 +6 -1 embperl/Attic/epdat2.h
Index: epdat2.h
===================================================================
RCS file: /home/cvs/embperl/Attic/epdat2.h,v
retrieving revision 1.1.2.13
retrieving revision 1.1.2.14
diff -u -r1.1.2.13 -r1.1.2.14
--- epdat2.h 23 Jan 2002 07:58:26 -0000 1.1.2.13
+++ epdat2.h 23 Jan 2002 10:11:35 -0000 1.1.2.14
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: epdat2.h,v 1.1.2.13 2002/01/23 07:58:26 richter Exp $
+# $Id: epdat2.h,v 1.1.2.14 2002/01/23 10:11:35 richter Exp $
#
###################################################################################*/
@@ -94,6 +94,11 @@
int nSessionMode ;
char * sLog ;
unsigned bDebug ;
+ char * sMailhost ;
+ char * sMailhelo ;
+ char * sMailfrom ;
+ bool bMaildebug ;
+ char * sMailErrorsTo ;
} tAppConfig ;
1.75.4.88 +13 -11 embperl/epmain.c
Index: epmain.c
===================================================================
RCS file: /home/cvs/embperl/epmain.c,v
retrieving revision 1.75.4.87
retrieving revision 1.75.4.88
diff -u -r1.75.4.87 -r1.75.4.88
--- epmain.c 23 Jan 2002 07:58:26 -0000 1.75.4.87
+++ epmain.c 23 Jan 2002 10:11:35 -0000 1.75.4.88
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: epmain.c,v 1.75.4.87 2002/01/23 07:58:26 richter Exp $
+# $Id: epmain.c,v 1.75.4.88 2002/01/23 10:11:35 richter Exp $
#
###################################################################################*/
@@ -187,7 +187,7 @@
case rcChdirError: msg ="[%d]ERR: %d: %s Cannot change to directory %s %s" ; break ;
case rcUnknownSyntax: msg ="[%d]ERR: %d: %s Unknown syntax '%s'" ; break ;
- default: msg ="[%d]ERR: %d: %s Error %s%s" ; break ;
+ default: msg ="[%d]ERR: %d: %s Error (no description) %s %s" ; break ;
}
if (r && ((rc != rcPerlWarn && rc != rcEvalErr) || r -> errdat1[0] == '\0'))
@@ -1297,12 +1297,14 @@
{ /* --- generate error page if necessary --- */
dSP; /* initialize stack pointer */
- /* --- check if error should be mailed --- */
- PUSHMARK(sp); /* remember the stack pointer */
- XPUSHs(r -> _perlsv) ; /* push pointer to obeject */
- PUTBACK;
- perl_call_method ("MailErrorsTo", G_DISCARD) ; /* call the function */
-
+ if (r -> pApp -> Config.sMailErrorsTo)
+ {
+ /* --- check if error should be mailed --- */
+ PUSHMARK(sp); /* remember the stack pointer */
+ XPUSHs(r -> _perlsv) ; /* push pointer to obeject */
+ PUTBACK;
+ perl_call_method ("MailErrorsTo", G_DISCARD) ; /* call the function */
+ }
if (r -> Component.Config.bOptions & optReturnError)
{
@@ -1897,12 +1899,12 @@
if (strncmp (r -> Component.pOutputCache -> pProvider -> sOutputType, "text/", 5) == 0)
{
- if ((rc = Cache_GetContentSV (r, r -> Component.pOutputCache, &r -> Component.pOutputSV)) != ok)
+ if ((rc = Cache_GetContentSV (r, r -> Component.pOutputCache, &r -> Component.pOutputSV, FALSE)) != ok)
return rc ;
}
else if (strcmp (r -> Component.pOutputCache -> pProvider -> sOutputType, "X-Embperl/DomTree") == 0)
{
- if ((rc = Cache_GetContentIndex (r, r -> Component.pOutputCache, &r -> Component.xCurrDomTree)) != ok)
+ if ((rc = Cache_GetContentIndex (r, r -> Component.pOutputCache, &r -> Component.xCurrDomTree, FALSE)) != ok)
return rc ;
}
else
@@ -1912,7 +1914,7 @@
return rcTypeMismatch ;
}
- return rc ;
+ return ok ;
}
1.1.2.24 +101 -60 embperl/Attic/epprovider.c
Index: epprovider.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epprovider.c,v
retrieving revision 1.1.2.23
retrieving revision 1.1.2.24
diff -u -r1.1.2.23 -r1.1.2.24
--- epprovider.c 23 Jan 2002 07:58:26 -0000 1.1.2.23
+++ epprovider.c 23 Jan 2002 10:11:35 -0000 1.1.2.24
@@ -9,7 +9,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: epprovider.c,v 1.1.2.23 2002/01/23 07:58:26 richter Exp $
+# $Id: epprovider.c,v 1.1.2.24 2002/01/23 10:11:35 richter Exp $
#
###################################################################################*/
@@ -307,7 +307,7 @@
pNew = (tProviderFile *)pItem -> pProvider ;
- sFilename = GetHashValueStr (aTHX_ pParam, "filename", "") ;
+ sFilename = GetHashValueStr (aTHX_ pParam, "filename", r -> Component.Param.sInputfile) ;
/* is it a relative filename? -> append path */
if (!(sFilename[0] == '/'
#ifdef WIN32
@@ -373,7 +373,7 @@
/*i/o*/ SV * pKey)
{
epTHX_
- const char * sFilename = GetHashValueStr (aTHX_ pParam, "filename", "") ;
+ const char * sFilename = GetHashValueStr (aTHX_ pParam, "filename", r -> Component.Param.sInputfile) ;
const char * sDir = "" ;
/* is it a relative filename? -> append path */
@@ -406,6 +406,7 @@
* @param r Embperl request record
* @param pProvider The provider record
* @param pData Returns the content
+* @param bUseCache Set if the content should not recomputed
* @return error code
* \endif
*
@@ -416,6 +417,7 @@
* @param r Embperl request record
* @param pProvider The provider record
* @param pData Liefert den Inhalt
+* @param bUseCache Gesetzt wenn der Inhalt nicht neu berechnet werden soll
* @return Fehlercode
* \endif
*
@@ -425,16 +427,19 @@
static int ProviderFile_GetContentSV (/*in*/ req * r,
/*in*/ tProvider * pProvider,
- /*in*/ SV * * pData)
+ /*in*/ SV * * pData,
+ /*in*/ bool bUseCache)
{
epTHX_
size_t nSize = pProvider -> pCache -> FileStat.st_size ;
- int rc ;
+ int rc = ok ;
r -> Component.sSourcefile = (char *)((tProviderFile *)pProvider) -> sFilename ;
- rc = ReadHTML(r, (char *)((tProviderFile *)pProvider) -> sFilename, &nSize, pData) ;
+ if (!bUseCache)
+ rc = ReadHTML(r, (char *)((tProviderFile *)pProvider) -> sFilename, &nSize, pData) ;
+
if (rc == ok)
{
SvREFCNT_inc (*pData) ;
@@ -530,7 +535,7 @@
pNew = (tProviderMem *)pItem -> pProvider ;
- pNew -> sName = GetHashValueStrDupA (aTHX_ pParam, "name", NULL) ;
+ pNew -> sName = GetHashValueStrDupA (aTHX_ pParam, "name", r -> Component.Param.sInputfile) ;
/*
pNew -> nLastModified = GetHashValueUInt (pParam, "mtime", 0) ;
@@ -587,7 +592,7 @@
/*i/o*/ SV * pKey)
{
epTHX_
- const char * sName = GetHashValueStr (aTHX_ pParam, "name", "") ;
+ const char * sName = GetHashValueStr (aTHX_ pParam, "name", r -> Component.Param.sInputfile) ;
sv_catpvf (pKey, "*memory:%s", sName) ;
return ok ;
@@ -657,6 +662,7 @@
* @param r Embperl request record
* @param pProvider The provider record
* @param pData Returns the content
+* @param bUseCache Set if the content should not recomputed
* @return error code
* \endif
*
@@ -667,6 +673,7 @@
* @param r Embperl request record
* @param pProvider The provider record
* @param pData Liefert den Inhalt
+* @param bUseCache Gesetzt wenn der Inhalt nicht neu berechnet werden soll
* @return Fehlercode
* \endif
*
@@ -676,12 +683,16 @@
static int ProviderMem_GetContentSV (/*in*/ req * r,
/*in*/ tProvider * pProvider,
- /*in*/ SV * * pData)
+ /*in*/ SV * * pData,
+ /*in*/ bool bUseCache)
{
epTHX_
- ((tProviderMem *)pProvider) -> nLastModifiedWhileGet = ((tProviderMem *)pProvider) -> nLastModified ;
- *pData = SvREFCNT_inc(((tProviderMem *)pProvider) -> pSource) ;
+ if (!bUseCache)
+ {
+ ((tProviderMem *)pProvider) -> nLastModifiedWhileGet = ((tProviderMem *)pProvider) -> nLastModified ;
+ *pData = SvREFCNT_inc(((tProviderMem *)pProvider) -> pSource) ;
+ }
return ok ;
}
@@ -927,6 +938,7 @@
* @param r Embperl request record
* @param pProvider The provider record
* @param pData Returns the content
+* @param bUseCache Set if the content should not recomputed
* @return error code
* \endif
*
@@ -937,6 +949,7 @@
* @param r Embperl request record
* @param pProvider The provider record
* @param pData Liefert den Inhalt
+* @param bUseCache Gesetzt wenn der Inhalt nicht neu berechnet werden soll
* @return Fehlercode
* \endif
*
@@ -946,7 +959,8 @@
static int ProviderEpParse_GetContentIndex (/*in*/ req * r,
/*in*/ tProvider * pProvider,
- /*in*/ tIndex * pData)
+ /*in*/ tIndex * pData,
+ /*in*/ bool bUseCache)
{
epTHX_
@@ -955,13 +969,16 @@
STRLEN len ;
SV * pSource ;
tCacheItem * pFileCache = Cache_GetDependency(r, pProvider -> pCache, 0) ;
- if ((rc = Cache_GetContentSV (r, pFileCache, &pSource)) != ok)
+ if ((rc = Cache_GetContentSV (r, pFileCache, &pSource, bUseCache)) != ok)
return rc ;
r -> Component.pTokenTable = ((tProviderEpParse *)pProvider) -> pTokenTable ;
- p = SvPV (pSource, len) ;
- if ((rc = embperl_Parse (r, p, len, pData)) != ok)
- return rc ;
+ if (!bUseCache)
+ {
+ p = SvPV (pSource, len) ;
+ if ((rc = embperl_Parse (r, p, len, pData)) != ok)
+ return rc ;
+ }
return ok ;
}
@@ -1084,7 +1101,7 @@
if ((rc = Provider_NewDependOne (r, sizeof(tProviderEpCompile), "source", pItem, pProviderClass, pParam)) != ok)
return rc ;
- if (sPackage = GetHashValueStrDupA (aTHX_ pParam, "package", NULL))
+ if (sPackage = GetHashValueStrDupA (aTHX_ pParam, "package", r -> Component.Config.sPackage))
{
((tProviderEpCompile *)(pItem -> pProvider)) -> sPackage = sPackage ;
}
@@ -1145,7 +1162,7 @@
if ((rc = Cache_AppendKey (r, pParam, "source", pKey)) != ok)
return rc;
- sv_catpvf (pKey, "*epcompile:%s", GetHashValueStr (aTHX_ pParam, "package", "")) ;
+ sv_catpvf (pKey, "*epcompile:%s", GetHashValueStr (aTHX_ pParam, "package", r -> Component.Config.sPackage?r -> Component.Config.sPackage:"")) ;
return ok ;
}
@@ -1163,6 +1180,7 @@
* @param r Embperl request record
* @param pProvider The provider record
* @param pData Returns the content
+* @param bUseCache Set if the content should not recomputed
* @return error code
* \endif
*
@@ -1174,6 +1192,7 @@
* @param r Embperl request record
* @param pProvider The provider record
* @param pData Liefert den Inhalt
+* @param bUseCache Gesetzt wenn der Inhalt nicht neu berechnet werden soll
* @return Fehlercode
* \endif
*
@@ -1182,8 +1201,9 @@
static int ProviderEpCompile_GetContentIndex (/*in*/ req * r,
- /*in*/ tProvider * pProvider,
- /*in*/ tIndex * pData)
+ /*in*/ tProvider * pProvider,
+ /*in*/ tIndex * pData,
+ /*in*/ bool bUseCache)
{
epTHX_
@@ -1193,7 +1213,7 @@
SV * pProg = NULL ;
pSrcCache = Cache_GetDependency(r, pProvider -> pCache, 0) ;
- if ((rc = Cache_GetContentIndex (r, pSrcCache, &xSrcDomTree)) != ok)
+ if ((rc = Cache_GetContentIndex (r, pSrcCache, &xSrcDomTree, bUseCache)) != ok)
return rc ;
r -> Component.sCurrPackage = ((tProviderEpCompile *)(pProvider)) -> sPackage ;
@@ -1201,16 +1221,19 @@
r -> Component.nEvalPackage = strlen (((tProviderEpCompile *)(pProvider)) -> sPackage) ;
r -> Component.sMainSub = ((tProviderEpCompile *)(pProvider)) -> sMainSub ;
- if ((rc = embperl_Compile (r, xSrcDomTree, pData, &pProg )) != ok)
+ if (!bUseCache)
{
- ((tProviderEpCompile *)pProvider) -> pSVData = NULL ;
- if (pProg)
- SvREFCNT_dec (pProg) ;
+ if ((rc = embperl_Compile (r, xSrcDomTree, pData, &pProg )) != ok)
+ {
+ ((tProviderEpCompile *)pProvider) -> pSVData = NULL ;
+ if (pProg)
+ SvREFCNT_dec (pProg) ;
- return rc ;
- }
+ return rc ;
+ }
- ((tProviderEpCompile *)pProvider) -> pSVData = pProg ;
+ ((tProviderEpCompile *)pProvider) -> pSVData = pProg ;
+ }
return ok ;
}
@@ -1228,6 +1251,7 @@
* @param r Embperl request record
* @param pProvider The provider record
* @param pData Returns the content
+* @param bUseCache Set if the content should not recomputed
* @return error code
* \endif
*
@@ -1248,11 +1272,13 @@
static int ProviderEpCompile_GetContentSV (/*in*/ req * r,
/*in*/ tProvider * pProvider,
- /*in*/ SV * * pData)
+ /*in*/ SV * * pData,
+ /*in*/ bool bUseCache)
{
epTHX_
- *pData = SvREFCNT_inc (((tProviderEpCompile *)pProvider) -> pSVData) ;
+ if (!bUseCache)
+ *pData = SvREFCNT_inc (((tProviderEpCompile *)pProvider) -> pSVData) ;
return ok ;
}
@@ -1422,8 +1448,8 @@
{
epTHX_
int rc ;
- const char * sKey = GetHashValueStr (aTHX_ pParam, "cache_key", "") ;
- int bKeyOptions = GetHashValueInt (aTHX_ pParam, "cache_key_options", 15) ;
+ const char * sKey = GetHashValueStr (aTHX_ pParam, "cache_key", r -> Component.Config.sCacheKey) ;
+ int bKeyOptions = GetHashValueInt (aTHX_ pParam, "cache_key_options", r -> Component.Config.bCacheKeyOptions) ;
CV * pKeyCV ;
if ((rc = Cache_AppendKey (r, pParam, "source", pKey)) != ok)
@@ -1434,6 +1460,9 @@
if ((rc = GetHashValueCREF (r, pParam, "cache_key_func", &pKeyCV)) != ok)
return rc ;
+ if (!pKeyCV)
+ pKeyCV = r -> Component.Config.pCacheKeyFunc ;
+
if (pKeyCV)
{
SV * pRet ;
@@ -1516,6 +1545,7 @@
* @param r Embperl request record
* @param pProvider The provider record
* @param pData Returns the content
+* @param bUseCache Set if the content should not recomputed
* @return error code
* \endif
*
@@ -1526,6 +1556,7 @@
* @param r Embperl request record
* @param pProvider The provider record
* @param pData Liefert den Inhalt
+* @param bUseCache Gesetzt wenn der Inhalt nicht neu berechnet werden soll
* @return Fehlercode
* \endif
*
@@ -1535,7 +1566,8 @@
static int ProviderEpRun_GetContentIndex (/*in*/ req * r,
/*in*/ tProvider * pProvider,
- /*in*/ tIndex * pData)
+ /*in*/ tIndex * pData,
+ /*in*/ bool bUseCache)
{
int rc ;
@@ -1544,14 +1576,17 @@
tCacheItem * pSrcCache = Cache_GetDependency(r, pProvider -> pCache, 0) ;
- if ((rc = Cache_GetContentSvIndex (r, pSrcCache, (SV **)&pCV, &xSrcDomTree)) != ok)
+ if ((rc = Cache_GetContentSvIndex (r, pSrcCache, (SV **)&pCV, &xSrcDomTree, bUseCache)) != ok)
return rc ;
- if ((rc = embperl_Execute (r, xSrcDomTree, pCV, pData)) != ok)
- return rc ;
+ if (!bUseCache)
+ {
+ if ((rc = embperl_Execute (r, xSrcDomTree, pCV, pData)) != ok)
+ return rc ;
- /* update cache parameter from source */
- ProviderEpRun_IsExpired (r, pProvider) ;
+ /* update cache parameter from source */
+ ProviderEpRun_IsExpired (r, pProvider) ;
+ }
return ok ;
}
@@ -1736,6 +1771,7 @@
* @param r Embperl request record
* @param pProvider The provider record
* @param pData Returns the content
+* @param bUseCache Set if the content should not recomputed
* @return error code
* \endif
*
@@ -1746,6 +1782,7 @@
* @param r Embperl request record
* @param pProvider The provider record
* @param pData Liefert den Inhalt
+* @param bUseCache Gesetzt wenn der Inhalt nicht neu berechnet werden soll
* @return Fehlercode
* \endif
*
@@ -1755,7 +1792,8 @@
static int ProviderEpToString_GetContentSV (/*in*/ req * r,
/*in*/ tProvider * pProvider,
- /*in*/ SV * * pData)
+ /*in*/ SV * * pData,
+ /*in*/ bool bUseCache)
{
epTHX_
@@ -1769,32 +1807,35 @@
pSrcCache = Cache_GetDependency(r, pProvider -> pCache, 0) ;
- if ((rc = Cache_GetContentIndex (r, pSrcCache, &xSrcDomTree)) != ok)
+ if ((rc = Cache_GetContentIndex (r, pSrcCache, &xSrcDomTree, bUseCache)) != ok)
return rc ;
- if (xSrcDomTree == 0)
- {
- strncpy (r -> errdat1, "EpToString source", sizeof (r -> errdat1)) ;
- return rcMissingInput ;
- }
+ if (!bUseCache)
+ {
+ if (xSrcDomTree == 0)
+ {
+ strncpy (r -> errdat1, "EpToString source", sizeof (r -> errdat1)) ;
+ return rcMissingInput ;
+ }
- oRollbackOutput (r, NULL) ;
- oBegin (r) ;
- pDomTree = DomTree_self (xSrcDomTree) ;
- Node_toString (r, pDomTree, pDomTree -> xDocument, 0) ;
-
- pOut = newSV (1) ;
- len = GetContentLength (r) + 1 ;
-
- SvGROW (pOut, len) ;
- pBuf = SvPVX (pOut) ;
- oCommitToMem (r, NULL, pBuf) ;
- oRollbackOutput (r, NULL) ;
- SvCUR_set (pOut, len - 1) ;
- SvPOK_on (pOut) ;
+ oRollbackOutput (r, NULL) ;
+ oBegin (r) ;
+ pDomTree = DomTree_self (xSrcDomTree) ;
+ Node_toString (r, pDomTree, pDomTree -> xDocument, 0) ;
+
+ pOut = newSV (1) ;
+ len = GetContentLength (r) + 1 ;
+
+ SvGROW (pOut, len) ;
+ pBuf = SvPVX (pOut) ;
+ oCommitToMem (r, NULL, pBuf) ;
+ oRollbackOutput (r, NULL) ;
+ SvCUR_set (pOut, len - 1) ;
+ SvPOK_on (pOut) ;
- *pData = pOut ;
+ *pData = pOut ;
+ }
return ok ;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: embperl-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: embperl-cvs-help@perl.apache.org