SVCS - English Documentation
Loading...
Searching...
No Matches
svcs::services::ISubject Class Referenceabstract

The Subject (Publisher) Interface (Abstract Base Class). More...

#include <ISubject.hxx>

Inheritance diagram for svcs::services::ISubject:
svcs::core::Repository svcs::services::EventBus svcs::test::cli::mocks::MockSubject svcs::test::core::MockSubject svcs::test::core::MockSubject svcs::test::core::mocks::MockSubject svcs::test::server::MockEventBus svcs::test::server::SimpleEventBus svcs::test::server::SimpleEventBus svcs::test::server::TestEventBus svcs::test::server::ssh::MockEventBus

Public Member Functions

virtual ~ISubject ()=default
 Virtual destructor.
virtual void attach (std::shared_ptr< IObserver > observer)=0
 Attaches an observer to the subject.
virtual void detach (std::shared_ptr< IObserver > observer)=0
 Detaches an observer from the subject.
virtual void notify (const Event &event) const =0
 Notifies all attached observers about an event.

Protected Attributes

std::vector< IObserver * > observers
 Collection of registered observers.

Detailed Description

The Subject (Publisher) Interface (Abstract Base Class).

Core classes (e.g., Repository, EventBus) implement this interface to allow observers to subscribe to events. The contract requires all management functions (attach, detach) to handle std::shared_ptr<IObserver>.

Constructor & Destructor Documentation

◆ ~ISubject()

virtual svcs::services::ISubject::~ISubject ( )
virtualdefault

Virtual destructor.

Ensures correct cleanup of derived subject classes.

Member Function Documentation

◆ attach()

virtual void svcs::services::ISubject::attach ( std::shared_ptr< IObserver > observer)
pure virtual

◆ detach()

virtual void svcs::services::ISubject::detach ( std::shared_ptr< IObserver > observer)
pure virtual

◆ notify()

virtual void svcs::services::ISubject::notify ( const Event & event) const
pure virtual

Notifies all attached observers about an event.

This method is made public so that component classes (like ObjectStorage) can publish events through the injected ISubject pointer. The method is declared as const because event notification is a logically non-mutating action on the Subject's state.

Parameters
eventThe constant reference to the event structure to be sent.

Implemented in svcs::core::Repository, svcs::services::EventBus, svcs::test::cli::mocks::MockSubject, svcs::test::cli::utils::MockSubject, svcs::test::core::mocks::MockSubject, svcs::test::core::MockSubject, svcs::test::core::MockSubject, svcs::test::server::MockEventBus, svcs::test::server::SimpleEventBus, svcs::test::server::SimpleEventBus, svcs::test::server::ssh::MockEventBus, and svcs::test::server::TestEventBus.


The documentation for this class was generated from the following file: