Skip to content
Snippets Groups Projects
  • David M. Lee's avatar
    e06e519a
    Initial support for endpoints. · e06e519a
    David M. Lee authored
    An endpoint is an external device/system that may offer/accept
    channels to/from Asterisk. While this is a very useful concept for end
    users, it is surprisingly not a core concept within Asterisk itself.
    
    This patch defines ast_endpoint as a separate object, which channel
    drivers may use to expose their concept of an endpoint. As the channel
    driver creates channels, it can use ast_endpoint_add_channel() to
    associate channels to the endpoint. This updated the endpoint
    appropriately, and forwards all of the channel's events to the
    endpoint's topic.
    
    In order to avoid excessive locking on the endpoint object itself, the
    mutable state is not accessible via getters. Instead, you can create a
    snapshot using ast_endpoint_snapshot_create() to get a consistent
    snapshot of the internal state.
    
    This patch also includes a set of topics and messages associated with
    endpoints, and implementations of the endpoint-related RESTful
    API. chan_sip was updated to create endpoints with SIP peers, but the
    state of the endpoints is not updated with the state of the peer.
    
    Along for the ride in this patch is a Stasis test API. This is a
    stasis_message_sink object, which can be subscribed to a Stasis
    topic. It has functions for blocking while waiting for conditions in
    the message sink to be fulfilled.
    
    (closes issue ASTERISK-21421)
    Review: https://reviewboard.asterisk.org/r/2492/
    
    
    
    git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@387932 65c4cc65-6c06-0410-ace0-fbb531ad65f3
    e06e519a
    History
    Initial support for endpoints.
    David M. Lee authored
    An endpoint is an external device/system that may offer/accept
    channels to/from Asterisk. While this is a very useful concept for end
    users, it is surprisingly not a core concept within Asterisk itself.
    
    This patch defines ast_endpoint as a separate object, which channel
    drivers may use to expose their concept of an endpoint. As the channel
    driver creates channels, it can use ast_endpoint_add_channel() to
    associate channels to the endpoint. This updated the endpoint
    appropriately, and forwards all of the channel's events to the
    endpoint's topic.
    
    In order to avoid excessive locking on the endpoint object itself, the
    mutable state is not accessible via getters. Instead, you can create a
    snapshot using ast_endpoint_snapshot_create() to get a consistent
    snapshot of the internal state.
    
    This patch also includes a set of topics and messages associated with
    endpoints, and implementations of the endpoint-related RESTful
    API. chan_sip was updated to create endpoints with SIP peers, but the
    state of the endpoints is not updated with the state of the peer.
    
    Along for the ride in this patch is a Stasis test API. This is a
    stasis_message_sink object, which can be subscribed to a Stasis
    topic. It has functions for blocking while waiting for conditions in
    the message sink to be fulfilled.
    
    (closes issue ASTERISK-21421)
    Review: https://reviewboard.asterisk.org/r/2492/
    
    
    
    git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@387932 65c4cc65-6c06-0410-ace0-fbb531ad65f3