blob: 62604a60bbd1a4781e0d0a13d9535c5c4e1ae21c [file] [log] [blame]
/**
* Copyright 2010 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Author: jmarantz@google.com (Joshua Marantz)
#ifndef NET_INSTAWEB_UTIL_PUBLIC_CACHE_INTERFACE_H_
#define NET_INSTAWEB_UTIL_PUBLIC_CACHE_INTERFACE_H_
// TODO(sligocki): We shouldn't need to include this in the .h, but it was
// breaking someone somewhere, look into later.
#include "net/instaweb/util/public/shared_string.h"
#include <string>
#include "net/instaweb/util/public/string_util.h"
namespace net_instaweb {
class MessageHandler;
class SharedString;
// Abstract interface for a cache.
class CacheInterface {
public:
enum KeyState {
kAvailable, // Requested key is available for serving
kInTransit, // Requested key is being written, but is not readable
kNotFound // Requested key needs to be written
};
virtual ~CacheInterface();
// Gets an object from the cache, returning false on a cache miss
virtual bool Get(const std::string& key, SharedString* value) = 0;
// Puts a value into the cache. The value that is passed in is not modified,
// but the SharedString is passed by non-const pointer because its reference
// count is bumped.
virtual void Put(const std::string& key, SharedString* value) = 0;
virtual void Delete(const std::string& key) = 0;
virtual KeyState Query(const std::string& key) = 0;
};
} // namespace net_instaweb
#endif // NET_INSTAWEB_UTIL_PUBLIC_CACHE_INTERFACE_H_