| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |    2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 
|    3  * |    3  * | 
|    4  *  Use of this source code is governed by a BSD-style license |    4  *  Use of this source code is governed by a BSD-style license | 
|    5  *  that can be found in the LICENSE file in the root of the source |    5  *  that can be found in the LICENSE file in the root of the source | 
|    6  *  tree. An additional intellectual property rights grant can be found |    6  *  tree. An additional intellectual property rights grant can be found | 
|    7  *  in the file PATENTS.  All contributing project authors may |    7  *  in the file PATENTS.  All contributing project authors may | 
|    8  *  be found in the AUTHORS file in the root of the source tree. |    8  *  be found in the AUTHORS file in the root of the source tree. | 
|    9  */ |    9  */ | 
|   10  |   10  | 
|   11 #ifndef WEBRTC_MEDIA_SCTP_SCTPDATAENGINE_H_ |   11 #ifndef WEBRTC_MEDIA_SCTP_SCTPDATAENGINE_H_ | 
|   12 #define WEBRTC_MEDIA_SCTP_SCTPDATAENGINE_H_ |   12 #define WEBRTC_MEDIA_SCTP_SCTPDATAENGINE_H_ | 
|   13  |   13  | 
|   14 #include <errno.h> |   14 #include <errno.h> | 
|   15 #include <string> |   15 #include <string> | 
|   16 #include <vector> |   16 #include <vector> | 
|   17  |   17  | 
|   18 namespace cricket { |   18 namespace cricket { | 
|   19 // Some ERRNO values get re-#defined to WSA* equivalents in some talk/ |   19 // Some ERRNO values get re-#defined to WSA* equivalents in some talk/ | 
|   20 // headers.  We save the original ones in an enum. |   20 // headers.  We save the original ones in an enum. | 
|   21 enum PreservedErrno { |   21 enum PreservedErrno { | 
|   22   SCTP_EINPROGRESS = EINPROGRESS, |   22   SCTP_EINPROGRESS = EINPROGRESS, | 
|   23   SCTP_EWOULDBLOCK = EWOULDBLOCK |   23   SCTP_EWOULDBLOCK = EWOULDBLOCK | 
|   24 }; |   24 }; | 
|   25 }  // namespace cricket |   25 }  // namespace cricket | 
|   26  |   26  | 
|   27 #include "webrtc/base/buffer.h" |   27 #include "webrtc/base/copyonwritebuffer.h" | 
|   28 #include "webrtc/media/base/codec.h" |   28 #include "webrtc/media/base/codec.h" | 
|   29 #include "webrtc/media/base/mediachannel.h" |   29 #include "webrtc/media/base/mediachannel.h" | 
|   30 #include "webrtc/media/base/mediaengine.h" |   30 #include "webrtc/media/base/mediaengine.h" | 
|   31  |   31  | 
|   32 // Defined by "usrsctplib/usrsctp.h" |   32 // Defined by "usrsctplib/usrsctp.h" | 
|   33 struct sockaddr_conn; |   33 struct sockaddr_conn; | 
|   34 struct sctp_assoc_change; |   34 struct sctp_assoc_change; | 
|   35 struct sctp_stream_reset_event; |   35 struct sctp_stream_reset_event; | 
|   36 // Defined by <sys/socket.h> |   36 // Defined by <sys/socket.h> | 
|   37 struct socket; |   37 struct socket; | 
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  137   virtual bool AddRecvStream(const StreamParams& sp); |  137   virtual bool AddRecvStream(const StreamParams& sp); | 
|  138   virtual bool RemoveRecvStream(uint32_t ssrc); |  138   virtual bool RemoveRecvStream(uint32_t ssrc); | 
|  139  |  139  | 
|  140   // Called when Sctp gets data. The data may be a notification or data for |  140   // Called when Sctp gets data. The data may be a notification or data for | 
|  141   // OnSctpInboundData. Called from the worker thread. |  141   // OnSctpInboundData. Called from the worker thread. | 
|  142   virtual void OnMessage(rtc::Message* msg); |  142   virtual void OnMessage(rtc::Message* msg); | 
|  143   // Send data down this channel (will be wrapped as SCTP packets then given to |  143   // Send data down this channel (will be wrapped as SCTP packets then given to | 
|  144   // sctp that will then post the network interface by OnMessage). |  144   // sctp that will then post the network interface by OnMessage). | 
|  145   // Returns true iff successful data somewhere on the send-queue/network. |  145   // Returns true iff successful data somewhere on the send-queue/network. | 
|  146   virtual bool SendData(const SendDataParams& params, |  146   virtual bool SendData(const SendDataParams& params, | 
|  147                         const rtc::Buffer& payload, |  147                         const rtc::CopyOnWriteBuffer& payload, | 
|  148                         SendDataResult* result = NULL); |  148                         SendDataResult* result = NULL); | 
|  149   // A packet is received from the network interface. Posted to OnMessage. |  149   // A packet is received from the network interface. Posted to OnMessage. | 
|  150   virtual void OnPacketReceived(rtc::Buffer* packet, |  150   virtual void OnPacketReceived(rtc::CopyOnWriteBuffer* packet, | 
|  151                                 const rtc::PacketTime& packet_time); |  151                                 const rtc::PacketTime& packet_time); | 
|  152  |  152  | 
|  153   // Exposed to allow Post call from c-callbacks. |  153   // Exposed to allow Post call from c-callbacks. | 
|  154   rtc::Thread* worker_thread() const { return worker_thread_; } |  154   rtc::Thread* worker_thread() const { return worker_thread_; } | 
|  155  |  155  | 
|  156   // Many of these things are unused by SCTP, but are needed to fulfill |  156   // Many of these things are unused by SCTP, but are needed to fulfill | 
|  157   // the MediaChannel interface. |  157   // the MediaChannel interface. | 
|  158   virtual void OnRtcpReceived(rtc::Buffer* packet, |  158   virtual void OnRtcpReceived(rtc::CopyOnWriteBuffer* packet, | 
|  159                               const rtc::PacketTime& packet_time) {} |  159                               const rtc::PacketTime& packet_time) {} | 
|  160   virtual void OnReadyToSend(bool ready) {} |  160   virtual void OnReadyToSend(bool ready) {} | 
|  161  |  161  | 
|  162   void OnSendThresholdCallback(); |  162   void OnSendThresholdCallback(); | 
|  163   // Helper for debugging. |  163   // Helper for debugging. | 
|  164   void set_debug_name(const std::string& debug_name) { |  164   void set_debug_name(const std::string& debug_name) { | 
|  165     debug_name_ = debug_name; |  165     debug_name_ = debug_name; | 
|  166   } |  166   } | 
|  167   const std::string& debug_name() const { return debug_name_; } |  167   const std::string& debug_name() const { return debug_name_; } | 
|  168   const struct socket* socket() const { return sock_; } |  168   const struct socket* socket() const { return sock_; } | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
|  185  |  185  | 
|  186   // Sends a SCTP_RESET_STREAM for all streams in closing_ssids_. |  186   // Sends a SCTP_RESET_STREAM for all streams in closing_ssids_. | 
|  187   bool SendQueuedStreamResets(); |  187   bool SendQueuedStreamResets(); | 
|  188  |  188  | 
|  189   // Adds a stream. |  189   // Adds a stream. | 
|  190   bool AddStream(const StreamParams &sp); |  190   bool AddStream(const StreamParams &sp); | 
|  191   // Queues a stream for reset. |  191   // Queues a stream for reset. | 
|  192   bool ResetStream(uint32_t ssrc); |  192   bool ResetStream(uint32_t ssrc); | 
|  193  |  193  | 
|  194   // Called by OnMessage to send packet on the network. |  194   // Called by OnMessage to send packet on the network. | 
|  195   void OnPacketFromSctpToNetwork(rtc::Buffer* buffer); |  195   void OnPacketFromSctpToNetwork(rtc::CopyOnWriteBuffer* buffer); | 
|  196   // Called by OnMessage to decide what to do with the packet. |  196   // Called by OnMessage to decide what to do with the packet. | 
|  197   void OnInboundPacketFromSctpToChannel(SctpInboundPacket* packet); |  197   void OnInboundPacketFromSctpToChannel(SctpInboundPacket* packet); | 
|  198   void OnDataFromSctpToChannel(const ReceiveDataParams& params, |  198   void OnDataFromSctpToChannel(const ReceiveDataParams& params, | 
|  199                                rtc::Buffer* buffer); |  199                                const rtc::CopyOnWriteBuffer& buffer); | 
|  200   void OnNotificationFromSctp(rtc::Buffer* buffer); |  200   void OnNotificationFromSctp(const rtc::CopyOnWriteBuffer& buffer); | 
|  201   void OnNotificationAssocChange(const sctp_assoc_change& change); |  201   void OnNotificationAssocChange(const sctp_assoc_change& change); | 
|  202  |  202  | 
|  203   void OnStreamResetEvent(const struct sctp_stream_reset_event* evt); |  203   void OnStreamResetEvent(const struct sctp_stream_reset_event* evt); | 
|  204  |  204  | 
|  205   // Responsible for marshalling incoming data to the channels listeners, and |  205   // Responsible for marshalling incoming data to the channels listeners, and | 
|  206   // outgoing data to the network interface. |  206   // outgoing data to the network interface. | 
|  207   rtc::Thread* worker_thread_; |  207   rtc::Thread* worker_thread_; | 
|  208   // The local and remote SCTP port to use. These are passed along the wire |  208   // The local and remote SCTP port to use. These are passed along the wire | 
|  209   // and the listener and connector must be using the same port. It is not |  209   // and the listener and connector must be using the same port. It is not | 
|  210   // related to the ports at the IP level.  If set to -1, we default to |  210   // related to the ports at the IP level.  If set to -1, we default to | 
| (...skipping 18 matching lines...) Expand all  Loading... | 
|  229   StreamSet queued_reset_streams_; |  229   StreamSet queued_reset_streams_; | 
|  230   StreamSet sent_reset_streams_; |  230   StreamSet sent_reset_streams_; | 
|  231  |  231  | 
|  232   // A human-readable name for debugging messages. |  232   // A human-readable name for debugging messages. | 
|  233   std::string debug_name_; |  233   std::string debug_name_; | 
|  234 }; |  234 }; | 
|  235  |  235  | 
|  236 }  // namespace cricket |  236 }  // namespace cricket | 
|  237  |  237  | 
|  238 #endif  // WEBRTC_MEDIA_SCTP_SCTPDATAENGINE_H_ |  238 #endif  // WEBRTC_MEDIA_SCTP_SCTPDATAENGINE_H_ | 
| OLD | NEW |