blob: 71c691229460867f7c305ef739ea48de7c035deb [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016 CEA LIST.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Arnault Lapitre (CEA LIST) arnault.lapitre@cea.fr
* - Initial API and implementation
******************************************************************************/
#ifndef BROADCASTBUFFER_H_
#define BROADCASTBUFFER_H_
#include <fml/buffer/RamBuffer.h>
namespace sep
{
class RuntimeID;
class BroadcastBuffer : public RamBuffer
{
AVM_DECLARE_CLONABLE_CLASS( BroadcastBuffer )
protected:
/*
* ATTRIBUTES
*/
Message mNextStepMessage;
public:
/**
* CONSTRUCTOR
* Default
*/
BroadcastBuffer(InstanceOfBuffer * aBuffer)
: RamBuffer(CLASS_KIND_T( BroadcastBuffer ), aBuffer),
mNextStepMessage( )
{
//!! NOTHING
}
/**
* CONSTRUCTOR
* Copy
*/
BroadcastBuffer(const BroadcastBuffer & aBroadcast)
: RamBuffer( aBroadcast ),
mNextStepMessage( )
{
//!! NOTHING
}
/**
***************************************************************************
* UPDATE ==> push( mNextStepMessage )
***************************************************************************
*/
inline virtual void update()
{
mMessage.flush( mNextStepMessage );
}
/**
* BUFFER MANAGEMENT
*/
virtual bool push(const Message & aMsg)
{
mNextStepMessage = aMsg;
return( true );
}
virtual bool top(const Message & aMsg)
{
mNextStepMessage = aMsg;
return( true );
}
/**
***************************************************************************
* SERIALIZATION
***************************************************************************
*/
void toStream(OutStream & os) const;
void toFscn(OutStream & os, const RuntimeID & aRID,
const BaseBufferForm * prevBuf = NULL) const;
};
}
#endif /*BROADCASTBUFFER_H_*/