Skip to content

Commit 567fed3

Browse files
committed
코드 정리
1 parent 1d0c7a8 commit 567fed3

File tree

1 file changed

+31
-14
lines changed

1 file changed

+31
-14
lines changed

webrtc-sdk/src/main/java/com/example/webrtc/client/controller/WebRtcController.kt

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import org.webrtc.IceCandidate
1111
import org.webrtc.MediaConstraints
1212
import org.webrtc.MediaStream
1313
import org.webrtc.PeerConnection
14+
import org.webrtc.PeerConnection.Observer
15+
import org.webrtc.PeerConnection.RTCConfiguration
1416
import org.webrtc.PeerConnectionFactory
1517
import org.webrtc.RtpReceiver
1618
import org.webrtc.RtpTransceiver
@@ -37,20 +39,11 @@ internal class WebRtcController @Inject constructor(
3739
private var peerConnection: PeerConnection? = null
3840

3941
override fun connect(roomID: String, isHost: Boolean) {
40-
val rtcConfig = PeerConnection.RTCConfiguration(iceServer).apply {
41-
sdpSemantics = PeerConnection.SdpSemantics.UNIFIED_PLAN
42-
enableRtpDataChannel = true
43-
}
44-
45-
peerConnection = peerConnectionFactory.createPeerConnection(
46-
rtcConfig,
47-
createPeerConnectionObserver(isHost)
48-
)
42+
peerConnection = peerConnectionFactory.createPeerConnection(isHost)
4943

50-
peerConnection?.let(dataChannelManager::initialize)
44+
peerConnection?.createDataChannel()
5145

52-
peerConnection?.addTrack(localResourceController.getVideoTrack())
53-
peerConnection?.addTrack(localResourceController.getAudioTrack())
46+
peerConnection?.initializeLocalResource()
5447

5548
if (isHost) {
5649
controllerEvent.tryEmit(WebRtcEvent.Host.SendOffer)
@@ -116,6 +109,30 @@ internal class WebRtcController @Inject constructor(
116109
dataChannelManager.getEvent()
117110
)
118111

112+
private fun PeerConnection.initializeLocalResource() {
113+
addTrack(localResourceController.getVideoTrack())
114+
addTrack(localResourceController.getAudioTrack())
115+
}
116+
117+
private fun PeerConnectionFactory.createPeerConnection(
118+
isHost: Boolean
119+
): PeerConnection? {
120+
val rtcConfig = createRtcConfig()
121+
val peerConnectionObserver = createPeerConnectionObserver(isHost)
122+
123+
return createPeerConnection(
124+
rtcConfig,
125+
peerConnectionObserver
126+
)
127+
}
128+
129+
private fun PeerConnection.createDataChannel() = dataChannelManager.initialize(this)
130+
131+
private fun createRtcConfig() = RTCConfiguration(iceServer).apply {
132+
sdpSemantics = PeerConnection.SdpSemantics.UNIFIED_PLAN
133+
enableRtpDataChannel = true
134+
}
135+
119136
private fun createSdpObserver(onSdpCreationSuccess: ((SessionDescription, SdpObserver) -> Unit)? = null) =
120137
object : SdpObserver {
121138
override fun onCreateSuccess(p0: SessionDescription?) {
@@ -129,8 +146,8 @@ internal class WebRtcController @Inject constructor(
129146

130147
private fun createPeerConnectionObserver(
131148
isHost: Boolean
132-
): PeerConnection.Observer =
133-
object : PeerConnection.Observer {
149+
): Observer =
150+
object : Observer {
134151
override fun onConnectionChange(newState: PeerConnection.PeerConnectionState?) {
135152
controllerEvent.tryEmit(WebRtcEvent.StateChange.Connection(newState))
136153
}

0 commit comments

Comments
 (0)