/* * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #ifndef MEDIA_SCTP_SCTP_TRANSPORT_INTERNAL_H_ #define MEDIA_SCTP_SCTP_TRANSPORT_INTERNAL_H_ // TODO(deadbeef): Move SCTP code out of media/, and make it not depend on // anything in media/. #include <memory> #include <string> #include <vector> #include "api/priority.h" #include "api/rtc_error.h" #include "api/transport/data_channel_transport_interface.h" #include "media/base/media_channel.h" #include "p2p/base/packet_transport_internal.h" #include "rtc_base/copy_on_write_buffer.h" #include "rtc_base/thread.h" namespace cricket { // Constants that are important to API users // The size of the SCTP association send buffer. 256kB, the usrsctp default. constexpr int kSctpSendBufferSize = …; // The number of outgoing streams that we'll negotiate. Since stream IDs (SIDs) // are 0-based, the highest usable SID is 1023. // // It's recommended to use the maximum of 65535 in: // https://tools.ietf.org/html/draft-ietf-rtcweb-data-channel-13#section-6.2 // However, we use 1024 in order to save memory. usrsctp allocates 104 bytes // for each pair of incoming/outgoing streams (on a 64-bit system), so 65535 // streams would waste ~6MB. // // Note: "max" and "min" here are inclusive. constexpr uint16_t kMaxSctpStreams = …; constexpr uint16_t kMaxSctpSid = …; constexpr uint16_t kMinSctpSid = …; // The maximum number of streams that can be negotiated according to spec. constexpr uint16_t kSpecMaxSctpSid = …; // This is the default SCTP port to use. It is passed along the wire and the // connectee and connector must be using the same port. It is not related to the // ports at the IP level. (Corresponds to: sockaddr_conn.sconn_port in // usrsctp.h) const int kSctpDefaultPort = …; // Error cause codes defined at // https://www.iana.org/assignments/sctp-parameters/sctp-parameters.xhtml#sctp-parameters-24 enum class SctpErrorCauseCode : uint16_t { … }; // Abstract SctpTransport interface for use internally (by PeerConnection etc.). // Exists to allow mock/fake SctpTransports to be created. class SctpTransportInternal { … }; } // namespace cricket #endif // MEDIA_SCTP_SCTP_TRANSPORT_INTERNAL_H_