Lines Matching +defs:json +defs:read
34 Reply(const llvm::json::Value &id, StringRef method, JSONTransport &transport,
41 void operator()(llvm::Expected<llvm::json::Value> reply);
46 llvm::json::Value id;
52 Reply::Reply(const llvm::json::Value &id, llvm::StringRef method,
64 void Reply::operator()(llvm::Expected<llvm::json::Value> reply) {
87 bool MessageHandler::onNotify(llvm::StringRef method, llvm::json::Value value) {
102 bool MessageHandler::onCall(llvm::StringRef method, llvm::json::Value params,
103 llvm::json::Value id) {
118 bool MessageHandler::onReply(llvm::json::Value id,
119 llvm::Expected<llvm::json::Value> result) {
151 static llvm::json::Object encodeError(llvm::Error error) {
162 return llvm::json::Object{
169 llvm::Error decodeError(const llvm::json::Object &o) {
177 void JSONTransport::notify(StringRef method, llvm::json::Value params) {
178 sendMessage(llvm::json::Object{
184 void JSONTransport::call(StringRef method, llvm::json::Value params,
185 llvm::json::Value id) {
186 sendMessage(llvm::json::Object{
193 void JSONTransport::reply(llvm::json::Value id,
194 llvm::Expected<llvm::json::Value> result) {
196 return sendMessage(llvm::json::Object{
203 sendMessage(llvm::json::Object{
211 std::string json;
218 if (succeeded(readMessage(json))) {
219 if (llvm::Expected<llvm::json::Value> doc = llvm::json::parse(json)) {
230 void JSONTransport::sendMessage(llvm::json::Value msg) {
240 bool JSONTransport::handleMessage(llvm::json::Value msg,
243 llvm::json::Object *object = msg.getAsObject();
249 std::optional<llvm::json::Value> id;
250 if (llvm::json::Value *i = object->get("id"))
261 llvm::json::Value result = nullptr;
262 if (llvm::json::Value *r = object->get("result"))
268 llvm::json::Value params = nullptr;
269 if (llvm::json::Value *p = object->get("params"))
277 /// Tries to read a line up to and including \n.
294 size_t read = std::strlen(&out[size]);
295 if (read > 0 && out[size + read - 1] == '\n') {
296 out.resize(size + read);
299 size += read;
306 LogicalResult JSONTransport::readStandardMessage(std::string &json) {
323 // An empty line indicates the end of headers. Go ahead and read the JSON.
332 json.resize(contentLength);
333 for (size_t pos = 0, read; pos < contentLength; pos += read) {
334 read = std::fread(&json[pos], 1, contentLength - pos, in);
335 if (read == 0)
341 pos += read;
352 LogicalResult JSONTransport::readDelimitedMessage(std::string &json) {
353 json.clear();
364 json += line;