void handle_control_message(const char *msg, const char *arg)
{
    if (!strcmp(msg,"start")) {
        msg_start(arg);
    } else if (!strcmp(msg,"stop")) {
        msg_stop(arg);
    } else if (!strcmp(msg,"restart")) {
        msg_stop(arg);
        msg_start(arg);
    } else {
        ERROR("unknown control msg '%s'\n", msg);
    }
}
Пример #2
0
void handle_control_message(const std::string& msg, const std::string& arg)
{
    if (msg == "start") {
        msg_start(arg);
    } else if (msg == "stop") {
        msg_stop(arg);
    } else if (msg == "restart") {
        msg_restart(arg);
    } else {
        ERROR("unknown control msg '%s'\n", msg.c_str());
    }
}
Пример #3
0
void handle_control_message(const char *msg, const char *arg)
{
    if (!strcmp(msg,"start")) {
        msg_start(arg);
    } else if (!strcmp(msg,"stop")) {
        msg_stop(arg);
    } else if (!strcmp(msg,"restart")) {
        msg_restart(arg);
    }
#ifdef MTK_INIT 
    else if (!strcmp(msg,"show")) {
        msg_show(arg);
    }
#endif 
    else {
        ERROR("unknown control msg '%s'\n", msg);
    }
}
Пример #4
0
// Big state switch
int uslg_parser_exec(syslog_parser *parser, const syslog_parser_settings *settings, const char *data, size_t length) {
    int d_index;
    int error = 0;
    char next_byte;

    for (d_index = 0; d_index < length; d_index++) {
        int action = pa_none;
        next_byte = data[d_index];

#if DEBUG_OUTPUT
        printf("Next byte: %c\n", next_byte);
#endif

        // Token state is managed first
        if (parser->token_state == ts_before) {
            switch (next_byte) {
                case ' ':
                case '\t':
                    action = pa_advance;
                    break;

                case '\r':
                //case '\n':  removed for issues with syslog messages with empty msg field

                    if (!(parser->flags & F_COUNT_OCTETS)) {
                        parser->error = SLERR_PREMATURE_MSG_END;
                    }
                    break;

                default:
                    set_token_state(parser, ts_read);
                    action = pa_rehash;
            }
        } else {
            // Parser state
            switch (parser->state) {
                case s_msg_start:
                    action = msg_start(parser, settings, next_byte);
                    break;

                case s_octet_count:
                    action = octet_count(parser, next_byte);
                    break;

                case s_priority_start:
                    action = priority_start(parser, next_byte);
                    break;

                case s_priority:
                    action = priority(parser, next_byte);
                    break;

                case s_version:
                    action = version(parser, next_byte);
                    break;

                case s_timestamp:
                    action = parse_msg_head_part(parser, s_hostname, next_byte);
                    break;

                case s_hostname:
                    action = parse_msg_head_part(parser, s_appname, next_byte);
                    break;

                case s_appname:
                    action = parse_msg_head_part(parser, s_processid, next_byte);
                    break;

                case s_processid:
                    action = parse_msg_head_part(parser, s_messageid, next_byte);
                    break;

                case s_messageid:
                    action = parse_msg_head_part(parser, s_sd_start, next_byte);
                    break;

                case s_sd_start:
                    action = sd_start(parser, settings, next_byte);
                    break;

                case s_sd_element:
                    action = sd_element(parser, settings, next_byte);
                    break;

                case s_sd_field_start:
                    action = sd_field_start(parser, next_byte);
                    break;

                case s_sd_field:
                    action = sd_field(parser, settings, next_byte);
                    break;

                case s_sd_value_start:
                    action = sd_value_start(parser, next_byte);
                    break;

                case s_sd_value:
                    action = sd_value(parser, settings, next_byte);
                    break;

                case s_message:
                    d_index += read_message(parser, settings, data + d_index, length - d_index);
                    action = pa_rehash;
                    break;

                default:
                    parser->error = SLERR_BAD_STATE;
            }
        }

        // Upon error, exit the read loop regardless of action
        if (parser->error) {
            error = parser->error;
            uslg_parser_reset(parser);
            break;
        }

        // What action should be taken for this byte
        switch (action) {
            case pa_advance:
                if (parser->flags & F_COUNT_OCTETS) {
                    parser->octets_remaining--;
                } else {
                    parser->message_length++;
                }

                break;

            case pa_rehash:
                d_index--;
                break;
        }
    }

    return error;
}