OpenShot Audio Library | OpenShotAudio
0.3.2
Loading...
Searching...
No Matches
juce_Socket.h
1
/*
2
==============================================================================
3
4
This file is part of the JUCE library.
5
Copyright (c) 2017 - ROLI Ltd.
6
7
JUCE is an open source library subject to commercial or open-source
8
licensing.
9
10
The code included in this file is provided under the terms of the ISC license
11
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
12
To use, copy, modify, and/or distribute this software for any purpose with or
13
without fee is hereby granted provided that the above copyright notice and
14
this permission notice appear in all copies.
15
16
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
17
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
18
DISCLAIMED.
19
20
==============================================================================
21
*/
22
23
namespace
juce
24
{
25
26
//==============================================================================
37
class
JUCE_API
StreamingSocket
final
38
{
39
public
:
40
//==============================================================================
50
StreamingSocket
();
51
53
~StreamingSocket
();
54
55
//==============================================================================
61
bool
bindToPort (
int
localPortNumber
);
62
74
bool
bindToPort (
int
localPortNumber
,
const
String
&
localAddress
);
75
84
int
getBoundPort()
const
noexcept
;
85
94
bool
connect (
const
String
&
remoteHostname
,
95
int
remotePortNumber
,
96
int
timeOutMillisecs
= 3000);
97
99
bool
isConnected
()
const
noexcept
{
return
connected; }
100
102
void
close();
103
105
const
String
&
getHostName
()
const
noexcept
{
return
hostName; }
106
108
int
getPort
()
const
noexcept
{
return
portNumber; }
109
111
bool
isLocal()
const
noexcept
;
112
114
int
getRawSocketHandle()
const
noexcept
{
return
handle; }
115
116
//==============================================================================
128
int
waitUntilReady (
bool
readyForReading
,
int
timeoutMsecs
);
129
140
int
read (
void
*
destBuffer
,
int
maxBytesToRead
,
141
bool
blockUntilSpecifiedAmountHasArrived
);
142
150
int
write (
const
void
*
sourceBuffer
,
int
numBytesToWrite
);
151
152
//==============================================================================
166
bool
createListener (
int
portNumber,
const
String
&
localHostName
=
String
());
167
177
StreamingSocket
* waitForNextConnection()
const
;
178
179
private
:
180
//==============================================================================
181
String
hostName;
182
std::atomic<int> portNumber { 0 }, handle { -1 };
183
std::atomic<bool> connected {
false
}, isListener {
false
};
184
mutable
CriticalSection readLock;
185
186
StreamingSocket (
const
String& hostname,
int
portNumber,
int
handle);
187
188
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (StreamingSocket)
189
};
190
191
192
//==============================================================================
203
class
JUCE_API
DatagramSocket
final
204
{
205
public
:
206
//==============================================================================
215
DatagramSocket
(
bool
enableBroadcasting
=
false
);
216
217
219
~DatagramSocket
();
220
221
//==============================================================================
230
bool
bindToPort (
int
localPortNumber
);
231
243
bool
bindToPort (
int
localPortNumber
,
const
String
&
localAddress
);
244
252
int
getBoundPort()
const
noexcept
;
253
255
int
getRawSocketHandle
()
const
noexcept
{
return
handle; }
256
257
//==============================================================================
269
int
waitUntilReady (
bool
readyForReading
,
int
timeoutMsecs
);
270
281
int
read (
void
*
destBuffer
,
int
maxBytesToRead
,
282
bool
blockUntilSpecifiedAmountHasArrived
);
283
295
int
read (
void
*
destBuffer
,
int
maxBytesToRead
,
296
bool
blockUntilSpecifiedAmountHasArrived
,
297
String
&
senderIPAddress
,
int
&
senderPortNumber
);
298
306
int
write (
const
String
&
remoteHostname
,
int
remotePortNumber
,
307
const
void
*
sourceBuffer
,
int
numBytesToWrite
);
308
323
void
shutdown();
324
325
//==============================================================================
330
bool
joinMulticast (
const
String
&
multicastIPAddress
);
331
336
bool
leaveMulticast (
const
String
&
multicastIPAddress
);
337
342
bool
setMulticastLoopbackEnabled (
bool
enableLoopback
);
343
344
//==============================================================================
353
bool
setEnablePortReuse (
bool
enabled);
354
355
private
:
356
//==============================================================================
357
std::atomic<int> handle { -1 };
358
bool
isBound =
false
;
359
String lastBindAddress, lastServerHost;
360
int
lastServerPort = -1;
361
void
* lastServerAddress =
nullptr
;
362
mutable
CriticalSection readLock;
363
364
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DatagramSocket)
365
};
366
367
}
// namespace juce
juce::Array
Definition
juce_Array.h:56
juce::DatagramSocket
Definition
juce_Socket.h:204
juce::DatagramSocket::getRawSocketHandle
int getRawSocketHandle() const noexcept
Definition
juce_Socket.h:255
juce::StreamingSocket
Definition
juce_Socket.h:38
juce::StreamingSocket::getPort
int getPort() const noexcept
Definition
juce_Socket.h:108
juce::StreamingSocket::getHostName
const String & getHostName() const noexcept
Definition
juce_Socket.h:105
juce::StreamingSocket::isConnected
bool isConnected() const noexcept
Definition
juce_Socket.h:99
juce::String
Definition
juce_String.h:39
JuceLibraryCode
modules
juce_core
network
juce_Socket.h
Generated by
1.9.8