00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00017
00018 #ifndef NET_INSTAWEB_HTTP_PUBLIC_HTTP_VALUE_WRITER_H_
00019 #define NET_INSTAWEB_HTTP_PUBLIC_HTTP_VALUE_WRITER_H_
00020
00021 #include "net/instaweb/util/public/basictypes.h"
00022 #include "net/instaweb/util/public/string_util.h"
00023
00024 namespace net_instaweb {
00025
00026 class HTTPCache;
00027 class HTTPValue;
00028 class MessageHandler;
00029 class ResponseHeaders;
00030
00033 class HTTPValueWriter {
00034 public:
00035 HTTPValueWriter(HTTPValue* value, HTTPCache* cache)
00036 : value_(value),
00037 cache_(cache),
00038 has_buffered_(true) {}
00039
00040 void SetHeaders(ResponseHeaders* headers);
00041
00042 bool Write(const StringPiece& str, MessageHandler* handler);
00043
00044 bool has_buffered() const { return has_buffered_; }
00045
00049 bool CheckCanCacheElseClear(ResponseHeaders* headers);
00050
00051 private:
00052 HTTPValue* value_;
00053 HTTPCache* cache_;
00054 bool has_buffered_;
00055 DISALLOW_COPY_AND_ASSIGN(HTTPValueWriter);
00056 };
00057
00058 }
00059 #endif ///< NET_INSTAWEB_HTTP_PUBLIC_HTTP_VALUE_WRITER_H_