# sender Template Class

## Summary

An abstract base class for nodes that act as message senders.

## Syntax

    template< typename T > class sender;

## Header

    #include "tbb/flow_graph.h"

## Description

The sender template class is an abstract base class that defines the interface for nodes that can act as senders. Default implementations for several functions are provided.

## Members

    namespace tbb {
    namespace flow {

    template< typename T >
    class sender {
    public:
        typedef T output_type;
        typedef receiver<output_type> successor_type;
        virtual ~sender();
        virtual bool register_successor( successor_type &r ) = 0;
        virtual bool remove_successor( successor_type &r ) = 0;
        virtual bool try_get( output_type &v ) { return false; }
        virtual bool try_reserve( output_type &v ) { return false; }
        virtual bool try_release( ) { return false; }
        virtual bool try_consume( ) { return false; }
    };

    }
    }

The following table provides additional information on the members of this template class.
Member | Description
--- | ---
~sender() | The destructor.
bool register_successor( successor_type &r ) = 0 | A pure virtual method that describes the interface for adding a successor node to the set of successors for the sender. Returns: true if the successor is added; false otherwise.
bool remove_successor( successor_type &r ) = 0 | A pure virtual method that describes the interface for removing a successor node from the set of successors for a sender. Returns: true if the successor is removed; false otherwise.
bool try_get( output_type &v ) | Requests an item from a sender. Returns: The default implementation returns false.
bool try_reserve( output_type &v ) | Reserves an item at the sender. Returns: The default implementation returns false.
bool try_release( ) | Releases the reservation held at the sender. Returns: The default implementation returns false.
bool try_consume( ) | Consumes the reservation held at the sender. Returns: The default implementation returns false.

Parent topic: Flow Graph