2
* Copyright (C) 2012 Google Inc. All rights reserved.
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions
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.
13
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
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 ANY
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 ON
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.
25
#ifndef RTCDataChannelDescriptor_h
26
#define RTCDataChannelDescriptor_h
28
#if ENABLE(MEDIA_STREAM)
30
#include <wtf/RefCounted.h>
31
#include <wtf/Vector.h>
32
#include <wtf/text/WTFString.h>
36
class RTCDataChannelDescriptorClient {
38
virtual ~RTCDataChannelDescriptorClient() { }
40
virtual void readyStateChanged() = 0;
41
virtual void dataArrived(const String&) = 0;
42
virtual void dataArrived(const char*, size_t) = 0;
43
virtual void error() = 0;
46
class RTCDataChannelDescriptor : public RefCounted<RTCDataChannelDescriptor> {
48
class ExtraData : public RefCounted<ExtraData> {
50
virtual ~ExtraData() { }
54
ReadyStateConnecting = 0,
56
ReadyStateClosing = 2,
60
static PassRefPtr<RTCDataChannelDescriptor> create(const String& label, bool reliable);
61
virtual ~RTCDataChannelDescriptor();
63
RTCDataChannelDescriptorClient* client() const { return m_client; }
64
void setClient(RTCDataChannelDescriptorClient* client) { m_client = client; }
66
const String& label() const { return m_label; }
67
bool reliable() const { return m_reliable; }
69
ReadyState readyState() const { return m_readyState; }
71
unsigned long bufferedAmount() const { return m_bufferedAmount; }
72
void setBufferedAmount(unsigned long bufferedAmount) { m_bufferedAmount = bufferedAmount; }
74
void readyStateChanged(ReadyState);
75
void dataArrived(const String&);
76
void dataArrived(const char*, size_t);
79
PassRefPtr<ExtraData> extraData() const { return m_extraData; }
80
void setExtraData(PassRefPtr<ExtraData> extraData) { m_extraData = extraData; }
83
RTCDataChannelDescriptor(const String& label, bool reliable);
85
RTCDataChannelDescriptorClient* m_client;
88
ReadyState m_readyState;
89
unsigned long m_bufferedAmount;
90
RefPtr<ExtraData> m_extraData;
93
} // namespace WebCore
95
#endif // ENABLE(MEDIA_STREAM)
97
#endif // RTCDataChannelDescriptor_h