diff options
Diffstat (limited to 'graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/StreamMessageProducer.h')
-rw-r--r-- | graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/StreamMessageProducer.h | 77 |
1 files changed, 60 insertions, 17 deletions
diff --git a/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/StreamMessageProducer.h b/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/StreamMessageProducer.h index e039891f5f..9cd6aef37f 100644 --- a/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/StreamMessageProducer.h +++ b/graphics/asymptote/LspCpp/include/LibLsp/JsonRpc/StreamMessageProducer.h @@ -13,36 +13,79 @@ namespace lsp { class StreamMessageProducer : public MessageProducer { public: - struct Headers - { - int contentLength = -1; - std::string charset; - void clear() - { - contentLength = -1; - charset.clear(); - } - }; - bool handleMessage(Headers& headers, MessageConsumer callBack); - StreamMessageProducer( + + StreamMessageProducer( MessageIssueHandler& message_issue_handler, std::shared_ptr < lsp::istream> _input) : issueHandler(message_issue_handler), input(_input) { } - StreamMessageProducer( + StreamMessageProducer( MessageIssueHandler& message_issue_handler) : issueHandler(message_issue_handler) { } bool keepRunning = false; - void listen(MessageConsumer) override; - void bind(std::shared_ptr < lsp::istream>); - void parseHeader(std::string& line, Headers& headers); -private: + + virtual void bind(std::shared_ptr<lsp::istream>) = 0 ; + +protected: MessageIssueHandler& issueHandler; std::shared_ptr < lsp::istream> input; + +}; + +class LSPStreamMessageProducer : public StreamMessageProducer +{ +public: + struct Headers + { + int contentLength = -1; + std::string charset; + void clear() + { + contentLength = -1; + charset.clear(); + } + }; + bool handleMessage(Headers& headers, MessageConsumer callBack); + + LSPStreamMessageProducer( + MessageIssueHandler& message_issue_handler, std::shared_ptr < lsp::istream> _input) + : StreamMessageProducer(message_issue_handler,_input) + { + } + LSPStreamMessageProducer( + MessageIssueHandler& message_issue_handler) + : StreamMessageProducer(message_issue_handler) + { + } + + + void listen(MessageConsumer) override; + void bind(std::shared_ptr<lsp::istream>) override; + void parseHeader(std::string& line, Headers& headers); }; +class DelimitedStreamMessageProducer : public StreamMessageProducer +{ +public: + + DelimitedStreamMessageProducer( + MessageIssueHandler& message_issue_handler, std::shared_ptr <lsp::istream> _input) + : StreamMessageProducer(message_issue_handler,_input) + { + } + DelimitedStreamMessageProducer( + MessageIssueHandler& message_issue_handler) + : StreamMessageProducer(message_issue_handler) + { + } + + + void listen(MessageConsumer) override; + void bind(std::shared_ptr < lsp::istream>) override; + +};
\ No newline at end of file |