Класс overwrite_bufferoverwrite_buffer Class

Блок обмена сообщениями overwrite_buffer — это упорядоченный блок propagator_block с несколькими источниками и несколькими целями, который может хранить одно сообщение в один момент времени.An overwrite_buffer messaging block is a multi-target, multi-source, ordered propagator_block capable of storing a single message at a time. Новые сообщения перезаписывают предыдущие.New messages overwrite previously held ones.

СинтаксисSyntax

template<class T>
class overwrite_buffer : public propagator_block<multi_link_registry<ITarget<T>>, multi_link_registry<ISource<T>>>;

ПараметрыParameters

TT
Тип полезных данных сообщений, хранимых и распространяемых буфером.The payload type of the messages stored and propagated by the buffer.

ЭлементыMembers

Открытые конструкторыPublic Constructors

nameName ОписаниеDescription
overwrite_bufferoverwrite_buffer Перегружен.Overloaded. Конструирует overwrite_buffer блок обмена сообщениями.Constructs an overwrite_buffer messaging block.
Деструктор ~ overwrite_buffer~overwrite_buffer Destructor Уничтожает overwrite_buffer блок обмена сообщениями.Destroys the overwrite_buffer messaging block.

Открытые методыPublic Methods

nameName ОписаниеDescription
has_valuehas_value Проверяет overwrite_buffer , имеет ли этот блок сообщений еще значение.Checks whether this overwrite_buffer messaging block has a value yet.
valuevalue Возвращает ссылку на текущие полезные данные сообщения, хранящегося в overwrite_buffer блоке обмена сообщениями.Gets a reference to the current payload of the message being stored in the overwrite_buffer messaging block.

Защищенные методыProtected Methods

ИмяName ОписаниеDescription
accept_messageaccept_message Принимает сообщение, которое было предложено этим overwrite_buffer блоком обмена сообщениями, и возвращает копию сообщения вызывающему объекту.Accepts a message that was offered by this overwrite_buffer messaging block, returning a copy of the message to the caller.
consume_messageconsume_message Использует сообщение, которое было ранее предложено overwrite_buffer блоком обмена сообщениями и зарезервировано целевым объектом, возвращая копию сообщения вызывающему объекту.Consumes a message previously offered by the overwrite_buffer messaging block and reserved by the target, returning a copy of the message to the caller.
link_target_notificationlink_target_notification Обратный вызов, уведомляющий о том, что новый целевой объект связан с этим overwrite_buffer блоком обмена сообщениями.A callback that notifies that a new target has been linked to this overwrite_buffer messaging block.
propagate_messagepropagate_message Асинхронно передает сообщение из ISource блока в этот overwrite_buffer блок обмена сообщениями.Asynchronously passes a message from an ISource block to this overwrite_buffer messaging block. Он вызывается propagate методом при вызове из исходного блока.It is invoked by the propagate method, when called by a source block.
propagate_to_any_targetspropagate_to_any_targets Помещает объект message _PMessage в этот overwrite_buffer блок обмена сообщениями и предлагает его всем связанным целевым объектам.Places the message _PMessage in this overwrite_buffer messaging block and offers it to all of the linked targets.
release_messagerelease_message Освобождает предыдущее резервирование сообщения.Releases a previous message reservation. (Переопределяет source_block:: release_message.)(Overrides source_block::release_message.)
reserve_messagereserve_message Резервирует сообщение, которое было ранее предложено этим overwrite_buffer блоком обмена сообщениями.Reserves a message previously offered by this overwrite_buffer messaging block. (Переопределяет source_block:: reserve_message.)(Overrides source_block::reserve_message.)
resume_propagationresume_propagation Возобновляет распространение после освобождения резервирования.Resumes propagation after a reservation has been released. (Переопределяет source_block:: resume_propagation.)(Overrides source_block::resume_propagation.)
send_messagesend_message Синхронно передает сообщение из ISource блока в этот overwrite_buffer блок обмена сообщениями.Synchronously passes a message from an ISource block to this overwrite_buffer messaging block. Он вызывается send методом при вызове из исходного блока.It is invoked by the send method, when called by a source block.
supports_anonymous_sourcesupports_anonymous_source Переопределяет метод supports_anonymous_source, чтобы указать, что данный блок может принимать сообщения, предоставляемые ему несвязанным источником.Overrides the supports_anonymous_source method to indicate that this block can accept messages offered to it by a source that is not linked. (Переопределяет метод ITarget:: supports_anonymous_source.)(Overrides ITarget::supports_anonymous_source.)

КомментарииRemarks

overwrite_bufferБлок обмена сообщениями распространяет копии своего сохраненного сообщения на все целевые объекты.An overwrite_buffer messaging block propagates out copies of its stored message to each of its targets.

Дополнительные сведения см. в разделе асинхронные блоки сообщений.For more information, see Asynchronous Message Blocks.

Иерархия наследованияInheritance Hierarchy

ISourceISource

ITargetITarget

source_blocksource_block

propagator_blockpropagator_block

overwrite_buffer

ТребованияRequirements

Заголовок: agents.hHeader: agents.h

Пространство имен: параллелизмNamespace: concurrency

accept_messageaccept_message

Принимает сообщение, которое было предложено этим overwrite_buffer блоком обмена сообщениями, и возвращает копию сообщения вызывающему объекту.Accepts a message that was offered by this overwrite_buffer messaging block, returning a copy of the message to the caller.

virtual message<T>* accept_message(runtime_object_identity _MsgId);

ПараметрыParameters

_MsgId_MsgId
runtime_object_identityОбъект предлагаемого message объекта.The runtime_object_identity of the offered message object.

Возвращаемое значениеReturn Value

Указатель на message объект, владельцем которого стал вызывающий объект.A pointer to the message object that the caller now has ownership of.

КомментарииRemarks

overwrite_bufferБлок обмена сообщениями возвращает копии сообщения в целевые объекты, а не передает владение текущим сообщением.The overwrite_buffer messaging block returns copies of the message to its targets, rather than transferring ownership of the currently held message.

consume_messageconsume_message

Использует сообщение, которое было ранее предложено overwrite_buffer блоком обмена сообщениями и зарезервировано целевым объектом, возвращая копию сообщения вызывающему объекту.Consumes a message previously offered by the overwrite_buffer messaging block and reserved by the target, returning a copy of the message to the caller.

virtual message<T>* consume_message(runtime_object_identity _MsgId);

ПараметрыParameters

_MsgId_MsgId
runtime_object_identityОбъект для используемого message объекта.The runtime_object_identity of the message object being consumed.

Возвращаемое значениеReturn Value

Указатель на message объект, владельцем которого стал вызывающий объект.A pointer to the message object that the caller now has ownership of.

КомментарииRemarks

Аналогично accept , но всегда предшествует вызову reserve .Similar to accept, but is always preceded by a call to reserve.

has_valuehas_value

Проверяет overwrite_buffer , имеет ли этот блок сообщений еще значение.Checks whether this overwrite_buffer messaging block has a value yet.

bool has_value() const;

Возвращаемое значениеReturn Value

true , если блок получил значение; false в противном случае —.true if the block has received a value, false otherwise.

Обратный вызов, уведомляющий о том, что новый целевой объект связан с этим overwrite_buffer блоком обмена сообщениями.A callback that notifies that a new target has been linked to this overwrite_buffer messaging block.

virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);

ПараметрыParameters

_PTarget_PTarget
Указатель на вновь связанный целевой объект.A pointer to the newly linked target.

~ overwrite_buffer~overwrite_buffer

Уничтожает overwrite_buffer блок обмена сообщениями.Destroys the overwrite_buffer messaging block.

~overwrite_buffer();

overwrite_bufferoverwrite_buffer

Конструирует overwrite_buffer блок обмена сообщениями.Constructs an overwrite_buffer messaging block.

overwrite_buffer();

overwrite_buffer(
    filter_method const& _Filter);

overwrite_buffer(
    Scheduler& _PScheduler);

overwrite_buffer(
    Scheduler& _PScheduler,
    filter_method const& _Filter);

overwrite_buffer(
    ScheduleGroup& _PScheduleGroup);

overwrite_buffer(
    ScheduleGroup& _PScheduleGroup,
    filter_method const& _Filter);

ПараметрыParameters

_Filter_Filter
Функция фильтра, которая определяет, следует ли принимать предлагаемые сообщения.A filter function which determines whether offered messages should be accepted.

_PScheduler_PScheduler
Объект Scheduler , в котором запланирована задача распространения для блока обмена сообщениями overwrite_buffer .The Scheduler object within which the propagation task for the overwrite_buffer messaging block is scheduled.

_PScheduleGroup_PScheduleGroup
Объект ScheduleGroup , в котором запланирована задача распространения для блока обмена сообщениями overwrite_buffer .The ScheduleGroup object within which the propagation task for the overwrite_buffer messaging block is scheduled. Используемый объект Scheduler подразумевается группой расписаний.The Scheduler object used is implied by the schedule group.

КомментарииRemarks

Среда выполнения использует планировщик по умолчанию, если вы не указали параметры _PScheduler или _PScheduleGroup .The runtime uses the default scheduler if you do not specify the _PScheduler or _PScheduleGroup parameters.

Тип filter_method — это функтор с сигнатурой, bool (T const &) которая вызывается этим overwrite_buffer блоком обмена сообщениями для определения того, следует ли принимать предложенное сообщение.The type filter_method is a functor with signature bool (T const &) which is invoked by this overwrite_buffer messaging block to determine whether or not it should accept an offered message.

propagate_messagepropagate_message

Асинхронно передает сообщение из ISource блока в этот overwrite_buffer блок обмена сообщениями.Asynchronously passes a message from an ISource block to this overwrite_buffer messaging block. Он вызывается propagate методом при вызове из исходного блока.It is invoked by the propagate method, when called by a source block.

virtual message_status propagate_message(
    _Inout_ message<T>* _PMessage,
    _Inout_ ISource<T>* _PSource);

ПараметрыParameters

_PMessage_PMessage
Указатель на объект message.A pointer to the message object.

_PSource_PSource
Указатель на исходный блок, предлагающий сообщение.A pointer to the source block offering the message.

Возвращаемое значениеReturn Value

Message_status указывает, что цель решила делать с сообщением.A message_status indication of what the target decided to do with the message.

propagate_to_any_targetspropagate_to_any_targets

Помещает объект message _PMessage в этот overwrite_buffer блок обмена сообщениями и предлагает его всем связанным целевым объектам.Places the message _PMessage in this overwrite_buffer messaging block and offers it to all of the linked targets.

virtual void propagate_to_any_targets(_Inout_ message<T>* _PMessage);

ПараметрыParameters

_PMessage_PMessage
Указатель на message объект, overwrite_buffer владельцем которого является.A pointer to a message object that this overwrite_buffer has taken ownership of.

КомментарииRemarks

Этот метод перезаписывает текущее сообщение в overwrite_buffer с новым принятым сообщением _PMessage .This method overwrites the current message in the overwrite_buffer with the newly accepted message _PMessage.

send_messagesend_message

Синхронно передает сообщение из ISource блока в этот overwrite_buffer блок обмена сообщениями.Synchronously passes a message from an ISource block to this overwrite_buffer messaging block. Он вызывается send методом при вызове из исходного блока.It is invoked by the send method, when called by a source block.

virtual message_status send_message(
    _Inout_ message<T>* _PMessage,
    _Inout_ ISource<T>* _PSource);

ПараметрыParameters

_PMessage_PMessage
Указатель на объект message.A pointer to the message object.

_PSource_PSource
Указатель на исходный блок, предлагающий сообщение.A pointer to the source block offering the message.

Возвращаемое значениеReturn Value

Message_status указывает, что цель решила делать с сообщением.A message_status indication of what the target decided to do with the message.

supports_anonymous_sourcesupports_anonymous_source

Переопределяет метод supports_anonymous_source, чтобы указать, что данный блок может принимать сообщения, предоставляемые ему несвязанным источником.Overrides the supports_anonymous_source method to indicate that this block can accept messages offered to it by a source that is not linked.

virtual bool supports_anonymous_source();

Возвращаемое значениеReturn Value

true так как блок не откладывает предлагаемые сообщения.true because the block does not postpone offered messages.

release_messagerelease_message

Освобождает предыдущее резервирование сообщения.Releases a previous message reservation.

virtual void release_message(runtime_object_identity _MsgId);

ПараметрыParameters

_MsgId_MsgId
runtime_object_identity message Объект для освобожденного объекта.The runtime_object_identity of the message object being released.

reserve_messagereserve_message

Резервирует сообщение, которое было ранее предложено этим overwrite_buffer блоком обмена сообщениями.Reserves a message previously offered by this overwrite_buffer messaging block.

virtual bool reserve_message(runtime_object_identity _MsgId);

ПараметрыParameters

_MsgId_MsgId
runtime_object_identity message Объект для резервируемого объекта.The runtime_object_identity of the message object being reserved.

Возвращаемое значениеReturn Value

true значение, если сообщение было успешно зарезервировано, false в противном случае.true if the message was successfully reserved, false otherwise.

КомментарииRemarks

После reserve вызова метода, если он возвращает значение true , consume release метод или должен быть вызван, чтобы принять или освободить владение сообщением.After reserve is called, if it returns true, either consume or release must be called to either take or release ownership of the message.

resume_propagationresume_propagation

Возобновляет распространение после освобождения резервирования.Resumes propagation after a reservation has been released.

virtual void resume_propagation();

Значение value

Возвращает ссылку на текущие полезные данные сообщения, хранящегося в overwrite_buffer блоке обмена сообщениями.Gets a reference to the current payload of the message being stored in the overwrite_buffer messaging block.

T value();

Возвращаемое значениеReturn Value

Полезные данные текущего сохраненного сообщения.The payload of the currently stored message.

КомментарииRemarks

Значение, хранящееся в, overwrite_buffer может измениться сразу после возврата этим методом.The value stored in the overwrite_buffer could change immediately after this method returns. Этот метод будет ожидать, пока не будет получено сообщение, если в данный момент не хранится ни одно сообщение overwrite_buffer .This method will wait until a message arrives if no message is currently stored in the overwrite_buffer.

См. также разделSee also

Пространство имен Concurrencyconcurrency Namespace
Класс unbounded_bufferunbounded_buffer Class
Класс single_assignmentsingle_assignment Class