18 #ifndef TENSORFLOW_SERVING_UTIL_NET_HTTP_SERVER_INTERNAL_EVHTTP_REQUEST_H_
19 #define TENSORFLOW_SERVING_UTIL_NET_HTTP_SERVER_INTERNAL_EVHTTP_REQUEST_H_
25 #include "tensorflow_serving/util/net_http/server/internal/server_support.h"
26 #include "tensorflow_serving/util/net_http/server/public/httpserver_interface.h"
27 #include "tensorflow_serving/util/net_http/server/public/server_request_interface.h"
30 struct evhttp_request;
34 namespace tensorflow {
48 evhttp_request* request;
52 const char* uri =
nullptr;
53 evhttp_uri* decoded_uri =
nullptr;
57 const char* path =
nullptr;
58 std::string path_and_query;
60 evkeyvalq* headers =
nullptr;
76 absl::string_view uri_path()
const override;
78 absl::string_view http_method()
const override;
80 void WriteResponseBytes(
const char* data, int64_t size)
override;
82 void WriteResponseString(absl::string_view data)
override;
84 std::unique_ptr<char[], ServerRequestInterface::BlockDeleter>
85 ReadRequestBytes(int64_t* size)
override;
87 absl::string_view GetRequestHeader(absl::string_view header)
const override;
89 std::vector<absl::string_view> request_headers()
const override;
91 void OverwriteResponseHeader(absl::string_view header,
92 absl::string_view value)
override;
93 void AppendResponseHeader(absl::string_view header,
94 absl::string_view value)
override;
96 void PartialReplyWithStatus(HTTPStatusCode status)
override;
97 void PartialReply()
override;
99 CallbackStatus PartialReplyWithFlushCallback(
100 std::function<
void()> callback)
override;
102 void ReplyWithStatus(HTTPStatusCode status)
override;
103 void Reply()
override;
105 void Abort()
override;
112 this->handler_options_ = &handler_options;
116 void EvSendReply(HTTPStatusCode status);
119 bool NeedUncompressGzipContent();
122 void UncompressGzipBody(
void* input,
size_t input_size,
123 void** uncompressed_input,
124 size_t* uncompressed_input_size);
126 std::unique_ptr<char[], ServerRequestInterface::BlockDeleter>
127 ReadRequestGzipBytes(evbuffer* input_buf, int64_t* size);
133 std::unique_ptr<ParsedEvRequest> parsed_request_;
135 evbuffer* output_buf;