Skip to content

Commit 3ced59c

Browse files
committed
Bridge configuration using media attributes. Issue #1550.
1 parent 5e464bb commit 3ced59c

9 files changed

Lines changed: 39 additions & 13 deletions

File tree

restcomm/restcomm.interpreter/src/main/java/org/restcomm/connect/interpreter/VoiceInterpreter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3256,7 +3256,7 @@ public CreatingBridge(ActorRef source) {
32563256

32573257
@Override
32583258
public void execute(Object message) throws Exception {
3259-
final CreateBridge create = new CreateBridge();
3259+
final CreateBridge create = new CreateBridge(outboundCallInfo.mediaAttributes());
32603260
bridgeManager.tell(create, super.source);
32613261
}
32623262

restcomm/restcomm.mscontrol.api/src/main/java/org/restcomm/connect/mscontrol/api/messages/CreateMediaSession.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ public CreateMediaSession(Sid callSid) {
7070
this("", "", false, false, callSid, null, new MediaAttributes());
7171
}
7272

73-
public CreateMediaSession() {
74-
this("", "", false, false, null, null, new MediaAttributes());
73+
public CreateMediaSession(final MediaAttributes mediaAttributes) {
74+
this("", "", false, false, null, null, mediaAttributes);
7575
}
7676

7777
public String getConnectionMode() {

restcomm/restcomm.mscontrol.jsr309/src/main/java/org/restcomm/connect/mscontrol/jsr309/Jsr309BridgeController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,7 @@ public void execute(Object message) throws Exception {
483483

484484
private void configureVideoMediaSession(final MediaAttributes mediaAttributes) {
485485
// resolution configuration
486-
mediaSession.setAttribute("CONFERENCE_VIDEO_SIZE", mediaAttributes.getVideoResolution().toString());
486+
mediaSession.setAttribute("NC_VIDEO_SIZE", mediaAttributes.getVideoResolution().toString());
487487
}
488488

489489
private Parameters createMixerParams() {

restcomm/restcomm.telephony.api/src/main/java/org/restcomm/connect/telephony/api/CallInfo.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.joda.time.DateTime;
2626
import org.restcomm.connect.commons.annotations.concurrency.Immutable;
2727
import org.restcomm.connect.commons.dao.Sid;
28+
import org.restcomm.connect.dao.entities.MediaAttributes;
2829

2930
/**
3031
* @author quintana.thomas@gmail.com (Thomas Quintana)
@@ -47,10 +48,11 @@ public final class CallInfo {
4748
private final boolean webrtc;
4849
private boolean muted;
4950
private boolean isFromApi;
51+
private final MediaAttributes mediaAttributes;
5052

5153
public CallInfo(final Sid sid, final CallStateChanged.State state, final CreateCall.Type type, final String direction,
5254
final DateTime dateCreated, final String forwardedFrom, final String fromName, final String from, final String to,
53-
final SipServletRequest invite, final SipServletResponse lastResponse, final boolean webrtc, final boolean muted, final boolean isFromApi, final DateTime dateConUpdated) {
55+
final SipServletRequest invite, final SipServletResponse lastResponse, final boolean webrtc, final boolean muted, final boolean isFromApi, final DateTime dateConUpdated, final MediaAttributes mediaAttributes) {
5456
super();
5557
this.sid = sid;
5658
this.state = state;
@@ -67,6 +69,7 @@ public CallInfo(final Sid sid, final CallStateChanged.State state, final CreateC
6769
this.webrtc = webrtc;
6870
this.muted = muted;
6971
this.isFromApi = isFromApi;
72+
this.mediaAttributes = mediaAttributes;
7073
}
7174

7275
public DateTime dateCreated() {
@@ -136,4 +139,8 @@ public void setMute(boolean muted) {
136139
public boolean isFromApi() {
137140
return isFromApi;
138141
}
142+
143+
public MediaAttributes mediaAttributes(){
144+
return this.mediaAttributes;
145+
}
139146
}

restcomm/restcomm.telephony.api/src/main/java/org/restcomm/connect/telephony/api/CreateBridge.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
package org.restcomm.connect.telephony.api;
2323

2424
import org.restcomm.connect.commons.annotations.concurrency.Immutable;
25+
import org.restcomm.connect.dao.entities.MediaAttributes;
2526

2627
/**
2728
* @author Henrique Rosa (henrique.rosa@telestax.com)
@@ -30,8 +31,18 @@
3031
@Immutable
3132
public final class CreateBridge {
3233

33-
public CreateBridge() {
34+
private final MediaAttributes mediaAttributes;
35+
36+
public CreateBridge(final MediaAttributes mediaAttributes) {
3437
super();
38+
this.mediaAttributes = mediaAttributes;
3539
}
3640

41+
public CreateBridge() {
42+
this(new MediaAttributes());
43+
};
44+
45+
public MediaAttributes mediaAttributes() {
46+
return mediaAttributes;
47+
}
3748
}

restcomm/restcomm.telephony/src/main/java/org/restcomm/connect/telephony/Bridge.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.util.List;
2727
import java.util.Set;
2828

29+
import org.restcomm.connect.dao.entities.MediaAttributes;
2930
import org.restcomm.connect.telephony.api.BridgeStateChanged;
3031
import org.restcomm.connect.telephony.api.JoinCalls;
3132
import org.restcomm.connect.telephony.api.StartBridge;
@@ -83,7 +84,10 @@ public class Bridge extends UntypedActor {
8384
// Observer pattern
8485
private final List<ActorRef> observers;
8586

86-
public Bridge(final ActorRef mscontroller) {
87+
// Media
88+
private final MediaAttributes mediaAttributes;
89+
90+
public Bridge(final ActorRef mscontroller, final MediaAttributes mediaAttributes) {
8791
final ActorRef source = self();
8892

8993
// Media Server Controller
@@ -120,6 +124,9 @@ public Bridge(final ActorRef mscontroller) {
120124

121125
// Observer pattern
122126
this.observers = new ArrayList<ActorRef>(3);
127+
128+
// Media
129+
this.mediaAttributes = mediaAttributes;
123130
}
124131

125132
private boolean is(final State state) {
@@ -271,7 +278,7 @@ public void execute(Object message) throws Exception {
271278
mscontroller.tell(observe, super.source);
272279

273280
// Initialize the MS Controller
274-
final CreateMediaSession createMediaSession = new CreateMediaSession();
281+
final CreateMediaSession createMediaSession = new CreateMediaSession(mediaAttributes);
275282
mscontroller.tell(createMediaSession, super.source);
276283
}
277284

restcomm/restcomm.telephony/src/main/java/org/restcomm/connect/telephony/BridgeManager.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import akka.event.Logging;
3030
import akka.event.LoggingAdapter;
3131
import org.restcomm.connect.commons.patterns.Observe;
32+
import org.restcomm.connect.dao.entities.MediaAttributes;
3233
import org.restcomm.connect.mscontrol.api.MediaServerControllerFactory;
3334
import org.restcomm.connect.telephony.api.BridgeManagerResponse;
3435
import org.restcomm.connect.telephony.api.BridgeStateChanged;
@@ -51,13 +52,13 @@ public BridgeManager(final MediaServerControllerFactory factory) {
5152
this.system = context().system();
5253
}
5354

54-
private ActorRef createBridge() {
55+
private ActorRef createBridge(final MediaAttributes mediaAttributes) {
5556
final Props props = new Props(new UntypedActorFactory() {
5657
private static final long serialVersionUID = 1L;
5758

5859
@Override
5960
public UntypedActor create() throws Exception {
60-
return new Bridge(factory.provideBridgeController());
61+
return new Bridge(factory.provideBridgeController(), mediaAttributes);
6162
}
6263
});
6364
return system.actorOf(props);
@@ -82,7 +83,7 @@ public void onReceive(Object message) throws Exception {
8283

8384
private void onCreateBridge(CreateBridge message, ActorRef self, ActorRef sender) {
8485
// Create a new bridge
85-
ActorRef bridge = createBridge();
86+
ActorRef bridge = createBridge(message.mediaAttributes());
8687

8788
// Observe state changes in the bridge for termination purposes
8889
bridge.tell(new Observe(self), self);

restcomm/restcomm.telephony/src/main/java/org/restcomm/connect/telephony/Call.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,7 @@ private CallResponse<CallInfo> info() {
451451
} else {
452452
to = ((TelURL) this.to).getPhoneNumber();
453453
}
454-
final CallInfo info = new CallInfo(id, external, type, direction, created, forwardedFrom, name, from, to, invite, lastResponse, webrtc, muted, isFromApi, callUpdatedTime);
454+
final CallInfo info = new CallInfo(id, external, type, direction, created, forwardedFrom, name, from, to, invite, lastResponse, webrtc, muted, isFromApi, callUpdatedTime, mediaAttributes);
455455
return new CallResponse<CallInfo>(info);
456456
} catch (Exception e) {
457457
if (logger.isInfoEnabled()) {

restcomm/restcomm.ussd/src/main/java/org/restcomm/connect/ussd/telephony/UssdCall.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ private CallResponse<CallInfo> info() {
202202
final String from = this.from.getUser();
203203
final String to = this.to.getUser();
204204
final CallInfo info = new CallInfo(id, external, type, direction, created, null, name, from, to, invite, lastResponse,
205-
false, false, isFromApi, null);
205+
false, false, isFromApi, null, null);
206206
return new CallResponse<CallInfo>(info);
207207
}
208208

0 commit comments

Comments
 (0)