//
// Copyright 2012 Josh Blum
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program. If not, see .
#ifndef INCLUDED_LIBGRAS_IMPL_MESSAGES_HPP
#define INCLUDED_LIBGRAS_IMPL_MESSAGES_HPP
#include
#include
#include
#include
namespace gras
{
//----------------------------------------------------------------------
//-- message from the top block/executor
//-- these messages must be ack'd
//----------------------------------------------------------------------
struct TopAllocMessage
{
//empty
};
struct TopActiveMessage
{
//empty
};
struct TopInertMessage
{
//empty
};
struct TopTokenMessage
{
Token token;
};
//----------------------------------------------------------------------
//-- message to an input port
//-- do not ack
//----------------------------------------------------------------------
struct InputTagMessage
{
InputTagMessage(const Tag &tag):tag(tag){}
size_t index;
Tag tag;
};
struct InputBufferMessage
{
size_t index;
SBuffer buffer;
};
struct InputTokenMessage
{
size_t index;
Token token;
};
struct InputAllocMessage
{
size_t index;
SBufferToken token;
size_t recommend_length;
};
struct InputCheckMessage
{
size_t index;
};
//----------------------------------------------------------------------
//-- message to an output port
//-- do not ack
//----------------------------------------------------------------------
struct OutputBufferMessage
{
size_t index;
SBuffer buffer;
};
struct OutputTokenMessage
{
size_t index;
Token token;
};
struct OutputCheckMessage
{
size_t index;
};
struct OutputHintMessage
{
size_t index;
size_t history_bytes;
size_t reserve_bytes;
WeakToken token;
};
struct OutputAllocMessage
{
size_t index;
SBufferToken token;
};
//----------------------------------------------------------------------
//-- message to just the block
//-- do not ack
//----------------------------------------------------------------------
struct SelfKickMessage
{
//empty
};
struct UpdateInputsMessage
{
//empty
};
} //namespace gras
#include
#include
#include
#include
THERON_DECLARE_REGISTERED_MESSAGE(gras::TopAllocMessage);
THERON_DECLARE_REGISTERED_MESSAGE(gras::TopActiveMessage);
THERON_DECLARE_REGISTERED_MESSAGE(gras::TopInertMessage);
THERON_DECLARE_REGISTERED_MESSAGE(gras::TopTokenMessage);
THERON_DECLARE_REGISTERED_MESSAGE(gras::GlobalBlockConfig);
THERON_DECLARE_REGISTERED_MESSAGE(gras::SharedThreadGroup);
THERON_DECLARE_REGISTERED_MESSAGE(gras::InputTagMessage);
THERON_DECLARE_REGISTERED_MESSAGE(gras::InputBufferMessage);
THERON_DECLARE_REGISTERED_MESSAGE(gras::InputTokenMessage);
THERON_DECLARE_REGISTERED_MESSAGE(gras::InputCheckMessage);
THERON_DECLARE_REGISTERED_MESSAGE(gras::InputAllocMessage);
THERON_DECLARE_REGISTERED_MESSAGE(gras::OutputBufferMessage);
THERON_DECLARE_REGISTERED_MESSAGE(gras::OutputTokenMessage);
THERON_DECLARE_REGISTERED_MESSAGE(gras::OutputCheckMessage);
THERON_DECLARE_REGISTERED_MESSAGE(gras::OutputHintMessage);
THERON_DECLARE_REGISTERED_MESSAGE(gras::OutputAllocMessage);
THERON_DECLARE_REGISTERED_MESSAGE(gras::SelfKickMessage);
THERON_DECLARE_REGISTERED_MESSAGE(gras::UpdateInputsMessage);
#endif /*INCLUDED_LIBGRAS_IMPL_MESSAGES_HPP*/