Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Side by Side Diff: Source/modules/mediastream/RTCDataChannel.h

Issue 650063002: Move MediaStream and MediaStreamTrack implementation from modules/mediastream to core/mediastream. Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebased. Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN Y
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16 * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN Y
17 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O N
20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
22 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 */
24
25 #ifndef RTCDataChannel_h
26 #define RTCDataChannel_h
27
28 #include "modules/EventTargetModules.h"
29 #include "platform/Timer.h"
30 #include "platform/heap/Handle.h"
31 #include "public/platform/WebRTCDataChannelHandler.h"
32 #include "public/platform/WebRTCDataChannelHandlerClient.h"
33
34 namespace blink {
35
36 class Blob;
37 class ExceptionState;
38 class RTCPeerConnection;
39 class WebRTCDataChannelHandler;
40 class WebRTCPeerConnectionHandler;
41 struct WebRTCDataChannelInit;
42
43 class RTCDataChannel final
44 : public RefCountedGarbageCollectedWillBeGarbageCollectedFinalized<RTCDataCh annel>
45 , public EventTargetWithInlineData
46 , public WebRTCDataChannelHandlerClient {
47 DEFINE_EVENT_TARGET_REFCOUNTING_WILL_BE_REMOVED(RefCountedGarbageCollectedWi llBeGarbageCollectedFinalized<RTCDataChannel>);
48 DEFINE_WRAPPERTYPEINFO();
49 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(RTCDataChannel);
50 public:
51 static RTCDataChannel* create(ExecutionContext*, RTCPeerConnection*, PassOwn Ptr<WebRTCDataChannelHandler>);
52 static RTCDataChannel* create(ExecutionContext*, RTCPeerConnection*, WebRTCP eerConnectionHandler*, const String& label, const WebRTCDataChannelInit&, Except ionState&);
53 virtual ~RTCDataChannel();
54
55 String label() const;
56
57 // DEPRECATED
58 bool reliable() const;
59
60 bool ordered() const;
61 unsigned short maxRetransmitTime() const;
62 unsigned short maxRetransmits() const;
63 String protocol() const;
64 bool negotiated() const;
65 unsigned short id() const;
66 String readyState() const;
67 unsigned long bufferedAmount() const;
68
69 String binaryType() const;
70 void setBinaryType(const String&, ExceptionState&);
71
72 void send(const String&, ExceptionState&);
73 void send(PassRefPtr<ArrayBuffer>, ExceptionState&);
74 void send(PassRefPtr<ArrayBufferView>, ExceptionState&);
75 void send(Blob*, ExceptionState&);
76
77 void close();
78
79 DEFINE_ATTRIBUTE_EVENT_LISTENER(open);
80 DEFINE_ATTRIBUTE_EVENT_LISTENER(error);
81 DEFINE_ATTRIBUTE_EVENT_LISTENER(close);
82 DEFINE_ATTRIBUTE_EVENT_LISTENER(message);
83
84 void stop();
85
86 // EventTarget
87 virtual const AtomicString& interfaceName() const override;
88 virtual ExecutionContext* executionContext() const override;
89
90 void clearWeakMembers(Visitor*);
91 virtual void trace(Visitor*) override;
92
93 private:
94 RTCDataChannel(ExecutionContext*, RTCPeerConnection*, PassOwnPtr<WebRTCDataC hannelHandler>);
95
96 void scheduleDispatchEvent(PassRefPtrWillBeRawPtr<Event>);
97 void scheduledEventTimerFired(Timer<RTCDataChannel>*);
98
99 ExecutionContext* m_executionContext;
100
101 // WebRTCDataChannelHandlerClient
102 virtual void didChangeReadyState(WebRTCDataChannelHandlerClient::ReadyState) override;
103 virtual void didReceiveStringData(const WebString&) override;
104 virtual void didReceiveRawData(const char*, size_t) override;
105 virtual void didDetectError() override;
106
107 OwnPtr<WebRTCDataChannelHandler> m_handler;
108
109 bool m_stopped;
110
111 WebRTCDataChannelHandlerClient::ReadyState m_readyState;
112
113 enum BinaryType {
114 BinaryTypeBlob,
115 BinaryTypeArrayBuffer
116 };
117 BinaryType m_binaryType;
118
119 Timer<RTCDataChannel> m_scheduledEventTimer;
120 WillBeHeapVector<RefPtrWillBeMember<Event> > m_scheduledEvents;
121
122 WeakMember<RTCPeerConnection> m_connection;
123 };
124
125 } // namespace blink
126
127 #endif // RTCDataChannel_h
OLDNEW
« no previous file with comments | « Source/modules/mediastream/RTCDTMFToneChangeEvent.idl ('k') | Source/modules/mediastream/RTCDataChannel.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698