2019-05-05 00:11:57 -07:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <memory>
|
|
|
|
|
|
|
|
|
|
#include "firecgi/request.h"
|
|
|
|
|
|
|
|
|
|
namespace firesse {
|
|
|
|
|
|
|
|
|
|
class Stream {
|
|
|
|
|
public:
|
2019-05-07 23:26:48 -07:00
|
|
|
Stream(firecgi::Request* request);
|
2019-05-05 00:11:57 -07:00
|
|
|
|
2019-05-11 21:53:12 -07:00
|
|
|
void OnClose(const std::function<void()>& callback);
|
|
|
|
|
|
|
|
|
|
bool WriteEvent(const std::string& data, uint64_t id=0, const std::string& type="");
|
2019-05-05 00:11:57 -07:00
|
|
|
bool End();
|
|
|
|
|
|
2019-05-11 22:27:33 -07:00
|
|
|
std::chrono::steady_clock::time_point LastMessageTime();
|
|
|
|
|
void Close();
|
|
|
|
|
|
2019-05-05 00:11:57 -07:00
|
|
|
private:
|
2019-05-07 23:26:48 -07:00
|
|
|
firecgi::Request* request_;
|
2019-05-11 21:53:12 -07:00
|
|
|
|
|
|
|
|
std::function<void()> on_close_;
|
2019-05-11 22:27:33 -07:00
|
|
|
|
|
|
|
|
std::mutex mu_;
|
|
|
|
|
std::chrono::steady_clock::time_point last_message_time_;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class IsFresherStream {
|
|
|
|
|
public:
|
|
|
|
|
bool operator() (Stream* a, Stream* b) const;
|
2019-05-05 00:11:57 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
} // namespace firesse
|