Adapt to firecgi API change, add asan target, new Makefile ar merge method

This commit is contained in:
flamingcow
2019-05-07 23:26:48 -07:00
parent 990e28a0ce
commit 3ef9cabbd5
6 changed files with 20 additions and 14 deletions

View File

@@ -6,13 +6,15 @@ all: firesse.a example_clock
objects = firesse.o stream.o objects = firesse.o stream.o
firesse.a: $(objects) _firecgi:
$(MAKE) --directory=firecgi $(MAKE) --directory=firecgi
ar rcs $@ $^
example_clock: example_clock.o $(objects) firesse.a: $(objects) _firecgi
$(MAKE) --directory=firecgi ar x firecgi/firecgi.a
$(FIRE_CXX) $(FIRE_CXXFLAGS) -o $@ $+ firecgi/firecgi.a firecgi/firebuf/firebuf.a $(FIRE_LDLIBS) ar rcs $@ $(objects) $(shell ar t firecgi/firecgi.a)
example_clock: example_clock.o firesse.a
$(FIRE_CXX) $(FIRE_CXXFLAGS) -o $@ $+ $(FIRE_LDLIBS)
%.o: %.cc *.h Makefile %.o: %.cc *.h Makefile
$(FIRE_CXX) $(FIRE_CXXFLAGS) -c -o $@ $< $(FIRE_CXX) $(FIRE_CXXFLAGS) -c -o $@ $<
@@ -20,3 +22,7 @@ example_clock: example_clock.o $(objects)
clean: clean:
$(MAKE) --directory=firecgi clean $(MAKE) --directory=firecgi clean
rm --force example_clock *.o *.a rm --force example_clock *.o *.a
asan:
$(MAKE) clean
FIRE_CXXFLAGS="-O1 -g -fsanitize=address -fno-omit-frame-pointer -std=gnu++2a -Wall -Werror" $(MAKE) all

Submodule firecgi updated: c571e47bae...90ce269869

View File

@@ -5,7 +5,7 @@ namespace firesse {
Server::Server(int port, const std::function<void(std::unique_ptr<Stream>)>& callback) Server::Server(int port, const std::function<void(std::unique_ptr<Stream>)>& callback)
: callback_(callback), : callback_(callback),
firecgi_server_(port, firecgi_server_(port,
[this](std::unique_ptr<firecgi::Request> request) { OnRequest(std::move(request)); }, [this](firecgi::Request* request) { OnRequest(request); },
1, 1,
{"HTTP_ACCEPT"}) {} {"HTTP_ACCEPT"}) {}
@@ -13,7 +13,7 @@ void Server::Serve() {
firecgi_server_.Serve(); firecgi_server_.Serve();
} }
void Server::OnRequest(std::unique_ptr<firecgi::Request> request) { void Server::OnRequest(firecgi::Request* request) {
if (request->GetParam("HTTP_ACCEPT") != "text/event-stream") { if (request->GetParam("HTTP_ACCEPT") != "text/event-stream") {
LOG(WARNING) << "bad HTTP_ACCEPT: " << request->GetParam("HTTP_ACCEPT"); LOG(WARNING) << "bad HTTP_ACCEPT: " << request->GetParam("HTTP_ACCEPT");
request->WriteHeader("Status", "400 Bad Request"); request->WriteHeader("Status", "400 Bad Request");
@@ -24,7 +24,7 @@ void Server::OnRequest(std::unique_ptr<firecgi::Request> request) {
} }
request->WriteHeader("Content-Type", "text/event-stream"); request->WriteHeader("Content-Type", "text/event-stream");
request->WriteBody(""); request->WriteBody("");
callback_(std::make_unique<Stream>(std::move(request))); callback_(std::make_unique<Stream>(request));
} }
} // namespace firesse } // namespace firesse

View File

@@ -11,7 +11,7 @@ class Server {
void Serve(); void Serve();
private: private:
void OnRequest(std::unique_ptr<firecgi::Request> request); void OnRequest(firecgi::Request* request);
std::function<void(std::unique_ptr<Stream>)> callback_; std::function<void(std::unique_ptr<Stream>)> callback_;
firecgi::Server firecgi_server_; firecgi::Server firecgi_server_;

View File

@@ -2,8 +2,8 @@
namespace firesse { namespace firesse {
Stream::Stream(std::unique_ptr<firecgi::Request> request) Stream::Stream(firecgi::Request* request)
: request_(std::move(request)) {} : request_(request) {}
bool Stream::WriteEvent(const std::string& data, uint64_t id, const std::string& type) { bool Stream::WriteEvent(const std::string& data, uint64_t id, const std::string& type) {
if (id) { if (id) {

View File

@@ -8,13 +8,13 @@ namespace firesse {
class Stream { class Stream {
public: public:
Stream(std::unique_ptr<firecgi::Request> request); Stream(firecgi::Request* request);
[[nodiscard]] bool WriteEvent(const std::string& data, uint64_t id=0, const std::string& type=""); [[nodiscard]] bool WriteEvent(const std::string& data, uint64_t id=0, const std::string& type="");
bool End(); bool End();
private: private:
std::unique_ptr<firecgi::Request> request_; firecgi::Request* request_;
}; };
} // namespace firesse } // namespace firesse