MemoryStorageService(const DOMElement* e);
virtual ~MemoryStorageService();
- bool createString(const char* context, const char* key, const char* value, time_t expiration);
- int readString(const char* context, const char* key, string* pvalue=nullptr, time_t* pexpiration=nullptr, int version=0);
- int updateString(const char* context, const char* key, const char* value=nullptr, time_t expiration=0, int version=0);
- bool deleteString(const char* context, const char* key);
-
- bool createText(const char* context, const char* key, const char* value, time_t expiration) {
- return createString(context, key, value, expiration);
+ bool createString(const char* context, const char* key, const char* value, time_t expiration) {
+ if (m_log.isDebugEnabled() && value && strlen(value) > 255) {
+ m_log.debug("string value for key (%s) exceeded allowed length", key);
+ }
+ return createText(context, key, value, expiration);
}
- int readText(const char* context, const char* key, string* pvalue=nullptr, time_t* pexpiration=nullptr, int version=0) {
- return readString(context, key, pvalue, pexpiration, version);
+ int readString(const char* context, const char* key, string* pvalue=nullptr, time_t* pexpiration=nullptr, int version=0) {
+ return readText(context, key, pvalue, pexpiration, version);
}
- int updateText(const char* context, const char* key, const char* value=nullptr, time_t expiration=0, int version=0) {
- return updateString(context, key, value, expiration, version);
+ int updateString(const char* context, const char* key, const char* value=nullptr, time_t expiration=0, int version=0) {
+ if (m_log.isDebugEnabled() && value && strlen(value) > 255) {
+ m_log.debug("string value for key (%s) exceeded allowed length", key);
+ }
+ return updateText(context, key, value, expiration, version);
}
- bool deleteText(const char* context, const char* key) {
- return deleteString(context, key);
+ bool deleteString(const char* context, const char* key) {
+ return deleteText(context, key);
}
+ bool createText(const char* context, const char* key, const char* value, time_t expiration);
+ int readText(const char* context, const char* key, string* pvalue=nullptr, time_t* pexpiration=nullptr, int version=0);
+ int updateText(const char* context, const char* key, const char* value=nullptr, time_t expiration=0, int version=0);
+ bool deleteText(const char* context, const char* key);
+
void reap(const char* context);
void updateContext(const char* context, time_t expiration);
void deleteContext(const char* context) {
return count;
}
-bool MemoryStorageService::createString(const char* context, const char* key, const char* value, time_t expiration)
+bool MemoryStorageService::createText(const char* context, const char* key, const char* value, time_t expiration)
{
+ // This doesn't matter for this implementation, but helps identify bugs that might break others.
+ if (m_log.isDebugEnabled()) {
+ if (strlen(context) > 255)
+ m_log.debug("context value (%s) exceeded allowed length", context);
+ if (strlen(key) > 255)
+ m_log.debug("key value (%s) in context (%s) exceeded allowed length", key, context);
+ }
+
Context& ctx = writeContext(context);
SharedLock locker(m_lock, false);
return true;
}
-int MemoryStorageService::readString(const char* context, const char* key, string* pvalue, time_t* pexpiration, int version)
+int MemoryStorageService::readText(const char* context, const char* key, string* pvalue, time_t* pexpiration, int version)
{
Context& ctx = readContext(context);
SharedLock locker(m_lock, false);
return i->second.version;
}
-int MemoryStorageService::updateString(const char* context, const char* key, const char* value, time_t expiration, int version)
+int MemoryStorageService::updateText(const char* context, const char* key, const char* value, time_t expiration, int version)
{
Context& ctx = writeContext(context);
SharedLock locker(m_lock, false);
return i->second.version;
}
-bool MemoryStorageService::deleteString(const char* context, const char* key)
+bool MemoryStorageService::deleteText(const char* context, const char* key)
{
Context& ctx = writeContext(context);
SharedLock locker(m_lock, false);
/**
* Creates a new "short" record in the storage service.
*
- * @param context a storage context label
+ * @param context a storage context label of up to 255 bytes
* @param key null-terminated unique key of up to 255 bytes
* @param value null-terminated value of up to 255 bytes to store
* @param expiration an expiration timestamp, after which the record can be purged
*
* <p>The version parameter can be set for "If-Modified-Since" semantics.
*
- * @param context a storage context label
+ * @param context a storage context label of up to 255 bytes
* @param key null-terminated unique key of up to 255 bytes
* @param pvalue location in which to return the record value
* @param pexpiration location in which to return the expiration timestamp
/**
* Updates an existing "short" record in the storage service.
*
- * @param context a storage context label
+ * @param context a storage context label of up to 255 bytes
* @param key null-terminated unique key of up to 255 bytes
* @param value null-terminated value of up to 255 bytes to store, or nullptr to leave alone
* @param expiration a new expiration timestamp, or 0 to leave alone
/**
* Deletes an existing "short" record from the storage service.
*
- * @param context a storage context label
+ * @param context a storage context label of up to 255 bytes
* @param key null-terminated unique key of up to 255 bytes
* @return true iff the record existed and was deleted
*
/**
* Creates a new "long" record in the storage service.
*
- * @param context a storage context label
+ * @param context a storage context label of up to 255 bytes
* @param key null-terminated unique key of up to 255 bytes
* @param value null-terminated value of arbitrary length
* @param expiration an expiration timestamp, after which the record can be purged
*
* <p>The version parameter can be set for "If-Modified-Since" semantics.
*
- * @param context a storage context label
+ * @param context a storage context label of up to 255 bytes
* @param key null-terminated unique key of up to 255 bytes
* @param pvalue location in which to return the record value
* @param pexpiration location in which to return the expiration timestamp
/**
* Updates an existing "long" record in the storage service.
*
- * @param context a storage context label
+ * @param context a storage context label of up to 255 bytes
* @param key null-terminated unique key of up to 255 bytes
* @param value null-terminated value of arbitrary length to store, or nullptr to leave alone
* @param expiration a new expiration timestamp, or 0 to leave alone
/**
* Deletes an existing "long" record from the storage service.
*
- * @param context a storage context label
+ * @param context a storage context label of up to 255 bytes
* @param key null-terminated unique key of up to 255 bytes
* @return true iff the record existed and was deleted
*