MCPcopy Index your code
hub / github.com/GJDuck/e9patch / getMessage

Function getMessage

src/e9patch/e9json.cpp:1271–1329  ·  view source on GitHub ↗

* Parse a message from the given stream. */

Source from the content-addressed store, hash-verified

1269 * Parse a message from the given stream.
1270 */
1271bool getMessage(FILE *stream, size_t lineno, Message &msg)
1272{
1273 Parser parser(stream, lineno);
1274
1275 char token = expectToken2(parser, '{', EOF);
1276 if (token == EOF)
1277 return false;
1278 expectString(parser, "jsonrpc");
1279 expectToken(parser, ':');
1280 expectString(parser, "2.0");
1281 expectToken(parser, ',');
1282 expectString(parser, "method");
1283 expectToken(parser, ':');
1284 expectToken(parser, TOKEN_STRING);
1285 msg.method = METHOD_UNKNOWN;
1286 switch (parser.s[0])
1287 {
1288 case 'b':
1289 if (strcmp(parser.s, "binary") == 0)
1290 msg.method = METHOD_BINARY;
1291 break;
1292 case 'e':
1293 if (strcmp(parser.s, "emit") == 0)
1294 msg.method = METHOD_EMIT;
1295 break;
1296 case 'i':
1297 if (strcmp(parser.s, "instruction") == 0)
1298 msg.method = METHOD_INSTRUCTION;
1299 break;
1300 case 'o':
1301 if (strcmp(parser.s, "options") == 0)
1302 msg.method = METHOD_OPTIONS;
1303 break;
1304 case 'p':
1305 if (strcmp(parser.s, "patch") == 0)
1306 msg.method = METHOD_PATCH;
1307 break;
1308 case 'r':
1309 if (strcmp(parser.s, "reserve") == 0)
1310 msg.method = METHOD_RESERVE;
1311 break;
1312 case 't':
1313 if (strcmp(parser.s, "trampoline") == 0)
1314 msg.method = METHOD_TRAMPOLINE;
1315 break;
1316 }
1317 expectToken(parser, ',');
1318 expectString(parser, "params");
1319 expectToken(parser, ':');
1320 parseParams(parser, msg);
1321 expectToken(parser, ',');
1322 expectString(parser, "id");
1323 expectToken(parser, ':');
1324 expectToken(parser, TOKEN_NUMBER);
1325 msg.lineno = parser.lineno;
1326 msg.id = parser.i;
1327 expectToken(parser, '}');
1328 return true;

Callers 1

realMainFunction · 0.85

Calls 5

expectToken2Function · 0.85
expectStringFunction · 0.85
expectTokenFunction · 0.85
strcmpFunction · 0.85
parseParamsFunction · 0.85

Tested by

no test coverage detected