pub struct ConnectedSocket { /* private fields */ }
Expand description
A structure representing a Connected SCTP socket.
A Connected SCTP Socket is associated with one or more Peer associations (each of which is
identified by an Association ID). A Connected SCTP Socket will be created by an
Listener
when it calls an accept
(in the case of One to One style
sockets) or upon receiving a SCTP_COMM_UP
event in SCTP_ASSOC_CHANGE
notification.
It is also possible to peeloff
a socket from One to Many
listening socket and the peeled socket is an ConnectedSocket
.
Implementations§
Source§impl ConnectedSocket
impl ConnectedSocket
Sourcepub fn from_rawfd(rawfd: RawFd) -> Result<Self>
pub fn from_rawfd(rawfd: RawFd) -> Result<Self>
Creates new ConnectedSocket
from a RawFd
.
TODO: Remove this from Public API
Although, this is available as public API as of now, likely the users are not required to
use this. Mostly accept
(in the case of One to One
Socket to Association) or peeloff
(in the case of
One to Many Association) would use this API to create new ConnectedSocket
.
Sourcepub fn shutdown(&self, how: Shutdown) -> Result<()>
pub fn shutdown(&self, how: Shutdown) -> Result<()>
Perform a TCP like half close.
Note: however that the semantics for TCP and SCTP half close are different. See section 4.1.7 of RFC 6458 for details.
Sourcepub fn sctp_bindx(
&self,
_addrs: &[SocketAddr],
_flags: BindxFlags,
) -> Result<()>
pub fn sctp_bindx( &self, _addrs: &[SocketAddr], _flags: BindxFlags, ) -> Result<()>
Bind to addresses on the given socket. See Section 9.1 RFC 6458.
For the connected sockets, this feature is optional and hence will always return
ENOTSUP(EOPNOTSUP)
error.
Sourcepub fn sctp_getpaddrs(&self, assoc_id: AssociationId) -> Result<Vec<SocketAddr>>
pub fn sctp_getpaddrs(&self, assoc_id: AssociationId) -> Result<Vec<SocketAddr>>
Get Peer addresses for the association. See Section 9.3 RFC 6458.
Sourcepub fn sctp_getladdrs(&self, assoc_id: AssociationId) -> Result<Vec<SocketAddr>>
pub fn sctp_getladdrs(&self, assoc_id: AssociationId) -> Result<Vec<SocketAddr>>
Get Local addresses for the association. See section 9.5 RFC 6458.
Sourcepub async fn sctp_recv(&self) -> Result<NotificationOrData>
pub async fn sctp_recv(&self) -> Result<NotificationOrData>
Receive Data or Notification from the connected socket.
The internal API used to receive the data is also the API used to receive notifications. This function returns either the notification (which the user should have subscribed for) or the data.
Sourcepub async fn sctp_send(&self, data: SendData) -> Result<()>
pub async fn sctp_send(&self, data: SendData) -> Result<()>
Send Data and Anciliary data if any on the SCTP Socket.
SCTP supports sending the actual SCTP message together with sending any anciliary data on the SCTP association. The anciliary data is optional.
Sourcepub fn sctp_subscribe_event(
&self,
event: Event,
assoc_id: SubscribeEventAssocId,
) -> Result<()>
👎Deprecated since 0.2.2: use sctp_subscribe_events instead.
pub fn sctp_subscribe_event( &self, event: Event, assoc_id: SubscribeEventAssocId, ) -> Result<()>
Subscribe to a given SCTP Event on the given socket. See section 6.2.1 of RFC6458.
SCTP allows receiving notifications about the changes to SCTP associations etc from the user space. For these notification events to be received, this API is used to subsribe for the events while receiving the data on the SCTP Socket.
Sourcepub fn sctp_unsubscribe_event(
&self,
event: Event,
assoc_id: SubscribeEventAssocId,
) -> Result<()>
👎Deprecated since 0.2.2: use sctp_unsubscribe_events instead.
pub fn sctp_unsubscribe_event( &self, event: Event, assoc_id: SubscribeEventAssocId, ) -> Result<()>
Unsubscribe from a given SCTP Event on the given socket. See section 6.2.1 of RFC6458.
See sctp_subscribe_event
for further details.
Sourcepub fn sctp_subscribe_events(
&self,
events: &[Event],
assoc_id: SubscribeEventAssocId,
) -> Result<()>
pub fn sctp_subscribe_events( &self, events: &[Event], assoc_id: SubscribeEventAssocId, ) -> Result<()>
Subscribe to SCTP Events. See section 6.2.1 of RFC6458.
SCTP allows receiving notifications about the changes to SCTP associations etc from the user space. For these notification events to be received, this API is used to subsribe for the events while receiving the data on the SCTP Socket.
Sourcepub fn sctp_unsubscribe_events(
&self,
events: &[Event],
assoc_id: SubscribeEventAssocId,
) -> Result<()>
pub fn sctp_unsubscribe_events( &self, events: &[Event], assoc_id: SubscribeEventAssocId, ) -> Result<()>
Unsubscribe from a given SCTP Event on the given socket. See section 6.2.1 of RFC6458.
See sctp_subscribe_events
for further details.
Sourcepub fn sctp_request_rcvinfo(&self, on: bool) -> Result<()>
pub fn sctp_request_rcvinfo(&self, on: bool) -> Result<()>
Request to receive RcvInfo
ancillary data.
SCTP allows receiving ancillary data about the curent data received on the given socket. This API is used to obtain receive side additional info when the data is to be received.
Sourcepub fn sctp_request_nxtinfo(&self, on: bool) -> Result<()>
pub fn sctp_request_nxtinfo(&self, on: bool) -> Result<()>
Request to receive NxtInfo
ancillary data.
SCTP allows receiving ancillary data about the curent data received on the given socket. This API is used to obtain information about the next datagram that will be received.
Sourcepub fn sctp_get_status(&self, assoc_id: AssociationId) -> Result<ConnStatus>
pub fn sctp_get_status(&self, assoc_id: AssociationId) -> Result<ConnStatus>
Get the status of the connection associated with the association ID.
Sourcepub fn sctp_set_default_sendinfo(&self, sendinfo: SendInfo) -> Result<()>
pub fn sctp_set_default_sendinfo(&self, sendinfo: SendInfo) -> Result<()>
Set Default SendInfo
values for this socket.
In the [sctp_send
] API, an optional SendInfo
is present, which can be used to specify the
ancillary data along with the payload. Instead, a sender can chose to use this API to set
the default SendInfo
to be used while sending the data for this ‘connected’ socket.
Note: This API is provided only for the ConnectedSocket
.