Пример #1
0
static gint
_fetch_log(JournalReader *self)
{
    gint msg_count = 0;
    gint result = 0;
    self->immediate_check = TRUE;
    while (msg_count < self->options->fetch_limit && !main_loop_worker_job_quit())
    {
        gint rc = journald_next(self->journal);
        if (rc > 0)
        {
            Bookmark *bookmark = ack_tracker_request_bookmark(self->super.ack_tracker);
            _fill_bookmark(self, bookmark);
            msg_count++;
            if (!_handle_message(self))
            {
                break;
            }
        }
        else
        {
            self->immediate_check = FALSE;
            /* rc == 0 means EOF */
            if (rc < 0)
            {
                msg_error("Error occurred while getting next message from journal",
                          evt_tag_errno("error", errno));
                result = NC_READ_ERROR;
            }
            break;
        }
    }
    return result;
}
Пример #2
0
void
mls_elope_event_handler(struct mls_evt *evt, void *tag)
{
    int ret = 0;
    struct mls_el_ctx *ctx = (struct mls_el_ctx *)tag;
    struct mls_elope *elope = mls_el_get_elope(ctx);
    struct mls_elope_packet *req, *res;

    if ((ret = _recv_request(elope, &req)) != 0) {
        /* Invalid message, don't need response */
        LOG_ERR(MLS_LOG_DEFAULT_MODULE,
            "mls_elope_event_handler(1,%d)\n", ret);
        goto out;
    }

    if ((ret = _handle_message(ctx, req, &res)) != 0) {
        /* don't need response */
        LOG_ERR(MLS_LOG_DEFAULT_MODULE,
            "mls_elope_event_handler(2,%d)\n", ret);
        goto out;
    }

    if ((ret = _send_response(elope, res)) != 0) {
        LOG_ERR(MLS_LOG_DEFAULT_MODULE,
            "mls_elope_event_handler(3,%d)\n", ret);
        goto out;
    }

out:
    return;
}
Пример #3
0
void GameNetConnection::_message_callback(int sender, const char* msg,
		size_t len, bool queue_messages) {
	message_t type;

	// Fill buffer with message
	fill_msg_buffer(_message_buffer, msg, len);

	if (queue_messages || !_handle_message(sender, *_message_buffer)) {
		_delayed_messages.push_back(QueuedMessage(_message_buffer, sender));
		_message_buffer = new SerializeBuffer(SerializeBuffer::plain_buffer());
	}
}
Пример #4
0
void GameNetConnection::poll_messages(int timeout) {
	if (_connection) {
		for (int i = 0; i < _delayed_messages.size(); i++) {
			QueuedMessage& qm = _delayed_messages[i];
			if (_handle_message(qm.sender, *qm.message)) {
				delete qm.message;
				_delayed_messages.erase(_delayed_messages.begin() + i);
				i--;
			}
		}
		_connection->poll(gamenetconnection_consume_message, (void*)this,
				timeout);
	}
}
Пример #5
0
int GameNetConnection::poll_messages(int timeout) {
    if (_connection) {
        for (int i = 0; i < _delayed_messages.size(); i++) {
            QueuedMessage& qm = _delayed_messages[i];
            if (_handle_message(qm.sender, *qm.message)) {
                delete qm.message;
                _delayed_messages.erase(_delayed_messages.begin() + i);
                i--;
            }
        }
        perf_timer_begin("*** NETWORK POLLING ***");
        int polln = _connection->poll(gamenetconnection_consume_message, (void*) this,
                timeout);
        perf_timer_end("*** NETWORK POLLING ***");
        return polln;
    }
    return 0;
}