// $Id: Service.hpp,v 1.10 2009/06/20 06:48:15 nishio Exp $ #pragma once #include #include #include #include #include #include #include namespace RoLo { namespace Interface { enum StreamType { PUSH, PULL }; class StreamAbility : public Ability { public: SetParameter< ::RoLo::DataFormat::DataFormat> dataFormat; SetParameter< ::RoLo::Architecture::DataSpecification > dataSpec; SetParameter streamType; SetParameter frequency; }; class InterfaceBase : public ::ISO19111::IO_IdentifiedObject { public: const Ability& getAbility(); void setParameterValues(const ::std::set& paramVals); const ::std::set& getParameterValues(); protected: Ability* ability; }; class Stream : public InterfaceBase { public: void disconnect(); bool isConnected(); const Stream& getConnectedStream(); const class Service& getService(); }; class OutStream : public Stream { public: const ::RoLo::Architecture::Data& getData(); void activate(); void deactivate(); bool isActivated(); }; class InStream : public Stream { public: void setData(const ::RoLo::Architecture::Data& data); }; class ServiceAbility : public Ability { public: Attribute maxOutStreamNum; Attribute expectedLatency; ::std::set inStreamAbilities; StreamAbility outStreamAbility; }; class Service : public InterfaceBase { public: InStream& connect(const InStream& target, const OutStream* source = NULL); OutStream& connect(const InStream* source = NULL); void adjust(const ::RoLo::Architecture::Data& data); const ::std::vector getChildren(); protected: ::std::vector inStreams; ::std::vector outStreams; }; } }