You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2020/10/30 03:02:41 UTC
[openmeetings] branch master updated: [OPENMEETINGS-2239] code
clean-up
This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git
The following commit(s) were added to refs/heads/master by this push:
new 2807167 [OPENMEETINGS-2239] code clean-up
2807167 is described below
commit 2807167a7a571f700f9f27d63468ba6681b4a93b
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Fri Oct 30 09:43:09 2020 +0700
[OPENMEETINGS-2239] code clean-up
---
.../org/apache/openmeetings/core/remote/KStream.java | 17 +++++++++++------
.../apache/openmeetings/core/sip/ISipCallbacks.java | 3 ++-
.../org/apache/openmeetings/core/sip/SipManager.java | 17 ++++++++++++++++-
.../openmeetings/core/sip/SipStackProcessor.java | 19 ++++++++++++-------
.../org/apache/openmeetings/web/app/Application.java | 2 +-
5 files changed, 42 insertions(+), 16 deletions(-)
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
index 8410cd3..650ecbe 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
@@ -179,10 +179,8 @@ public class KStream extends AbstractStream implements ISipCallbacks {
sipProcessor = kHandler.getSipManager().createSipStackProcessor(
randomUUID().toString()
, kRoom.getRoom()
- , this); // TODO check this
- sipProcessor.ifPresent(ssp -> {
- ssp.register();
- });
+ , this);
+ sipProcessor.ifPresent(SipStackProcessor::register);
if (kRoom.isRecording()) {
startRecord();
}
@@ -545,8 +543,15 @@ public class KStream extends AbstractStream implements ISipCallbacks {
}
@Override
- public void onRegister() {
+ public void onRegisterOk() {
rtpEndpoint = getRtpEndpoint(pipeline);
- sipProcessor.get().invite(kRoom.getRoom(), sdpOffer);
+ outgoingMedia.connect(rtpEndpoint, MediaType.AUDIO); //TODO VIDEO
+ sipProcessor.get().invite(kRoom.getRoom(), null);
+ }
+
+ @Override
+ public void onInviteOk(String sdp) {
+ String answer = rtpEndpoint.processOffer(sdp);
+ sipProcessor.get().invite(kRoom.getRoom(), answer);
}
}
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/sip/ISipCallbacks.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/sip/ISipCallbacks.java
index a11fc98..a04f275 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/sip/ISipCallbacks.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/sip/ISipCallbacks.java
@@ -19,5 +19,6 @@
package org.apache.openmeetings.core.sip;
public interface ISipCallbacks {
- void onRegister();
+ void onRegisterOk();
+ void onInviteOk(String sdp);
}
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/sip/SipManager.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/sip/SipManager.java
index 4c42e88..c55463b 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/sip/SipManager.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/sip/SipManager.java
@@ -21,6 +21,7 @@ package org.apache.openmeetings.core.sip;
import static org.apache.openmeetings.util.OmFileHelper.SIP_USER_ID;
import static org.apache.openmeetings.util.OpenmeetingsVariables.isSipEnabled;
+import java.util.BitSet;
import java.util.Optional;
import java.util.function.Function;
@@ -84,6 +85,7 @@ public class SipManager implements ISipManager {
private ManagerConnectionFactory factory;
private String sipUserPicture;
+ private BitSet ports;
@PostConstruct
public void init() {
@@ -93,6 +95,7 @@ public class SipManager implements ISipManager {
, managerPort
, managerUser
, managerPass);
+ ports = new BitSet(maxLocalWsPort - minLocalWsPort);
}
}
@@ -273,6 +276,18 @@ public class SipManager implements ISipManager {
log.warn("Asterisk is not configured or denied in room #{}", r.getId());
return Optional.empty();
}
- return Optional.of(new SipStackProcessor(this, name, minLocalWsPort, callbacks)); /// FIXME TODO
+ int port;
+ synchronized (ports) {
+ int free = ports.nextClearBit(0);
+ ports.flip(free);
+ port = minLocalWsPort + free;
+ }
+ return Optional.of(new SipStackProcessor(this, name, port, callbacks));
+ }
+
+ void freePort(int port) {
+ synchronized (ports) {
+ ports.clear(port - minLocalWsPort);
+ }
}
}
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/sip/SipStackProcessor.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/sip/SipStackProcessor.java
index 483f148..36f1a2d 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/sip/SipStackProcessor.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/sip/SipStackProcessor.java
@@ -106,7 +106,9 @@ public class SipStackProcessor implements SipListenerExt {
final Properties properties = new Properties();
properties.setProperty("javax.sip.STACK_NAME", name);
- //properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "32");
+ if (log.isTraceEnabled()) {
+ properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "32");
+ }
properties.setProperty("gov.nist.javax.sip.LOG_MESSAGE_CONTENT", "true");
properties.setProperty("gov.nist.javax.sip.MESSAGE_PROCESSOR_FACTORY", NioMessageProcessorFactory.class.getName());
sipStack = new SipStackImpl(properties);
@@ -186,7 +188,9 @@ public class SipStackProcessor implements SipListenerExt {
break;
case OK:
if (REGISTER.equals(prevReq.getMethod())) {
- callbacks.onRegister();
+ callbacks.onRegisterOk();
+ } else if (INVITE.equals(prevReq.getMethod())) {
+ callbacks.onInviteOk(new String((byte[])resp.getContent()));
}
break;
case TRYING:
@@ -248,8 +252,6 @@ public class SipStackProcessor implements SipListenerExt {
reqCons.accept(request);
- log.debug("sendRequest: \n\n{}", request);
-
ClientTransaction trans = sipProvider.getNewClientTransaction(request);
trans.sendRequest();
} catch (Exception e) {
@@ -315,15 +317,18 @@ public class SipStackProcessor implements SipListenerExt {
, req -> {
try {
addAllow(req);
- req.addHeader(headerFactory.createContentLengthHeader(sdp.length()));
- req.setContent(sdp, headerFactory.createContentTypeHeader("application", "sdp"));
+ if (sdp != null) {
+ req.addHeader(headerFactory.createContentLengthHeader(sdp.length()));
+ req.setContent(sdp, headerFactory.createContentTypeHeader("application", "sdp"));
+ }
} catch (Exception e) {
- log.error("fail to create allow header", e);
+ log.error("fail patch invite request", e);
}
});
}
public void destroy() {
sipStack.stop();
+ manager.freePort(localWsPort);
}
}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index 8adf62f..d1ba947 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -285,7 +285,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
if (sc != null) {
sc.setDefaultMaxSessionIdleTimeout(60 * 1000L); // should be enough, should it be configurable?
}
- getHeaderResponseDecorators().add(response -> new FilteringHeaderResponse(response));
+ getHeaderResponseDecorators().add(FilteringHeaderResponse::new);
super.init();
final IBootstrapSettings settings = new BootstrapSettings();
settings.setThemeProvider(new BootswatchThemeProvider(BootswatchTheme.Sandstone));//FIXME TODO new SingleThemeProvider(new MaterialDesignTheme())