Beispiel #1
0
void
SlimeConfigResponse::fill()
{
    if (_filled) {
        LOG(info, "SlimeConfigResponse::fill() called twice, probably a bug");
        return;
    }
    Memory json((*_returnValues)[0]._string._str);
    Slime * data = new Slime();
    JsonFormat::decode(json, *data);
    _data.reset(data);
    _key = readKey();
    _state = readState();
    _value = readConfigValue();
    readTrace();
    _filled = true;
    if (LOG_WOULD_LOG(debug)) {
        LOG(debug, "trace at return(%s)", _trace.toString().c_str());
    }
}
Beispiel #2
0
static int
evalNames(char *s,
	  struct tr *tr,
	  int *lenPtr,
	  value * covPtr)
{
    int len;
    int namesStart;
    char tmpC;

    len = 0;

    while (isspace(s[len]))
	++len;

    namesStart = len;
    while (!isspace(s[len])
	   && s[len] != '\0'
	   && s[len] != '('
	   && s[len] != ')'
	   && s[len] != '!'
	   && s[len] != '&'
	   && s[len] != '+') {
	if (s[len] == '[' && s[len + 1] == '!')
	    ++len;		/* In this context '!' is name matching, not set comp. */
	++len;
    }

    if (len == namesStart) {
	fprintf(stderr, "missing names\n");
	return -1;
    }
    tmpC = s[len];
    s[len] = '\0';
    readTrace(tr, s + namesStart, covPtr);
    s[len] = tmpC;

    *lenPtr = len;

    return 0;
}