Author: solomax
Date: Thu May 17 14:42:23 2012
New Revision: 1339619
URL: http://svn.apache.org/viewvc?rev=1339619&view=rev
Log:
OPENMEETINGS-97 copy/pasted class is removed, wrong import is corrected
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/screen/webstart/RTMPSScreenShare.java
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java?rev=1339619&r1=1339618&r2=1339619&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/remote/red5/ScopeApplicationAdapter.java
Thu May 17 14:42:23 2012
@@ -29,10 +29,6 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.Timer;
-import java.util.TimerTask;
-import java.util.concurrent.ConcurrentLinkedQueue;
-import java.util.concurrent.Semaphore;
import org.openmeetings.app.OpenmeetingsVariables;
import org.openmeetings.app.conference.session.RoomClient;
@@ -56,8 +52,6 @@ import org.openmeetings.app.remote.FLVRe
import org.openmeetings.app.remote.WhiteBoardService;
import org.openmeetings.utils.math.CalendarPatterns;
import org.red5.client.net.rtmp.ClientExceptionHandler;
-import org.red5.client.net.rtmp.RTMPClient;
-import org.red5.io.utils.ObjectMap;
import org.red5.logging.Red5LoggerFactory;
import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IClient;
@@ -73,19 +67,10 @@ import org.red5.server.api.service.IServ
import org.red5.server.api.stream.IBroadcastStream;
import org.red5.server.api.stream.IStreamListener;
import org.red5.server.api.stream.IStreamPacket;
-import org.red5.server.messaging.IMessage;
-import org.red5.server.messaging.IMessageComponent;
-import org.red5.server.messaging.IPipe;
-import org.red5.server.messaging.OOBControlMessage;
-import org.red5.server.messaging.PipeConnectionEvent;
import org.red5.server.net.rtmp.event.IRTMPEvent;
-import org.red5.server.net.rtmp.event.Notify;
-import org.red5.server.net.rtmp.status.StatusCodes;
-import org.red5.server.stream.StreamState;
import org.red5.server.stream.StreamingProxy;
import org.red5.server.stream.message.RTMPMessage;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
public class ScopeApplicationAdapter extends ApplicationAdapter implements
@@ -138,200 +123,6 @@ public class ScopeApplicationAdapter ext
private static long broadCastCounter = 0;
public static boolean initComplete = false;
- //FIXME copy/pasted StreamingProxy necessary to set
ClientExceptionHandler
- private static class MyStreamingProxy extends StreamingProxy {
- private static Logger log = LoggerFactory
- .getLogger(StreamingProxy.class);
- private ConcurrentLinkedQueue<IMessage> frameBuffer = new
ConcurrentLinkedQueue<IMessage>();
- private String host;
- private int port;
- private String app;
- private RTMPClient rtmpClient;
- private StreamState state;
- private String publishName;
- private int streamId;
- private String publishMode;
- private final Semaphore lock = new Semaphore(1, true);
-
- // task timer
- private static Timer timer;
-
- public void init(ClientExceptionHandler exceptionHandler) {
- rtmpClient = new RTMPClient();
- rtmpClient.setExceptionHandler(exceptionHandler);
- setState(StreamState.STOPPED);
- // create a timer
- timer = new Timer();
- }
-
- public void start(String publishName, String publishMode,
- Object[] params) {
- setState(StreamState.CONNECTING);
- this.publishName = publishName;
- this.publishMode = publishMode;
- // construct the default params
- Map<String, Object> defParams = rtmpClient
- .makeDefaultConnectionParams(host,
port, app);
- defParams.put("swfUrl", "app:/Red5-StreamProxy.swf");
- // defParams.put("pageUrl",
String.format("http://%s:%d/%s", host, port, app));
- defParams.put("pageUrl", "");
- rtmpClient.setSwfVerification(true);
- // set this as the netstream handler
- rtmpClient.setStreamEventHandler(this);
- // connect the client
- rtmpClient.connect(host, port, defParams, this, params);
- }
-
- public void stop() {
- timer.cancel();
- if (state != StreamState.STOPPED) {
- rtmpClient.disconnect();
- }
- setState(StreamState.STOPPED);
- frameBuffer.clear();
- }
-
- private void createStream() {
- setState(StreamState.STREAM_CREATING);
- rtmpClient.createStream(this);
- }
-
- public void onPipeConnectionEvent(PipeConnectionEvent event) {
- log.debug("onPipeConnectionEvent: {}", event);
- }
-
- public void pushMessage(IPipe pipe, IMessage message)
- throws IOException {
- if (isPublished() && message instanceof RTMPMessage) {
- RTMPMessage rtmpMsg = (RTMPMessage) message;
- rtmpClient.publishStreamData(streamId, rtmpMsg);
- } else {
- log.trace("Adding message to buffer. Current
size: {}",
- frameBuffer.size());
- frameBuffer.add(message);
- }
- }
-
- public void onOOBControlMessage(IMessageComponent source, IPipe
pipe,
- OOBControlMessage oobCtrlMsg) {
- log.debug("onOOBControlMessage: {}", oobCtrlMsg);
- }
-
- /**
- * Called when bandwidth has been configured.
- */
- public void onBWDone() {
- log.debug("onBWDone");
- rtmpClient.onBWDone(null);
- }
-
- public void setHost(String host) {
- this.host = host;
- }
-
- public void setPort(int port) {
- this.port = port;
- }
-
- public void setApp(String app) {
- this.app = app;
- }
-
- public void onStreamEvent(Notify notify) {
- log.debug("onStreamEvent: {}", notify);
- ObjectMap<?, ?> map = (ObjectMap<?, ?>) notify.getCall()
- .getArguments()[0];
- String code = (String) map.get("code");
- log.debug("<:{}", code);
- if (StatusCodes.NS_PUBLISH_START.equals(code)) {
- setState(StreamState.PUBLISHED);
- IMessage message = null;
- while ((message = frameBuffer.poll()) != null) {
- rtmpClient.publishStreamData(streamId,
message);
- }
- } else if
(StatusCodes.NS_UNPUBLISHED_SUCCESS.equals(code)) {
- setState(StreamState.UNPUBLISHED);
- }
- }
-
- public void resultReceived(IPendingServiceCall call) {
- String method = call.getServiceMethodName();
- log.debug("resultReceived:> {}", method);
- if ("connect".equals(method)) {
- // rtmpClient.releaseStream(this, new Object[]
{ publishName });
- timer.schedule(new BandwidthStatusTask(),
2000L);
- } else if ("releaseStream".equals(method)) {
- // rtmpClient.invoke("FCPublish", new Object[]
{ publishName },
- // this);
- } else if ("createStream".equals(method)) {
- setState(StreamState.PUBLISHING);
- Object result = call.getResult();
- if (result instanceof Integer) {
- streamId = ((Integer)
result).intValue();
- log.debug("Publishing: {}", state);
- rtmpClient
- .publish(streamId,
publishName, publishMode, this);
- } else {
- rtmpClient.disconnect();
- setState(StreamState.STOPPED);
- }
- } else if ("FCPublish".equals(method)) {
-
- }
- }
-
- protected void setState(StreamState state) {
- try {
- lock.acquire();
- this.state = state;
- } catch (InterruptedException e) {
- log.warn("Exception setting state", e);
- } finally {
- lock.release();
- }
- }
-
- protected StreamState getState() {
- return state;
- }
-
- public void setConnectionClosedHandler(Runnable
connectionClosedHandler) {
- log.debug("setConnectionClosedHandler: {}",
connectionClosedHandler);
-
rtmpClient.setConnectionClosedHandler(connectionClosedHandler);
- }
-
- public void setExceptionHandler(ClientExceptionHandler
exceptionHandler) {
- log.debug("setExceptionHandler: {}", exceptionHandler);
- rtmpClient.setExceptionHandler(exceptionHandler);
- }
-
- public boolean isPublished() {
- return getState().equals(StreamState.PUBLISHED);
- }
-
- public boolean isRunning() {
- return !getState().equals(StreamState.STOPPED);
- }
-
- /**
- * Continues to check for onBWDone
- */
- private final class BandwidthStatusTask extends TimerTask {
-
- @Override
- public void run() {
- // check for onBWDone
- log.debug("Bandwidth check done: {}",
-
rtmpClient.isBandwidthCheckDone());
- // cancel this task
- this.cancel();
- // initate the stream creation
- createStream();
- }
-
- }
- }
-
public synchronized void resultReceived(IPendingServiceCall arg0) {
// TODO Auto-generated method stub
}
@@ -1028,11 +819,12 @@ public class ScopeApplicationAdapter ext
IScope scope = conn.getScope();
IBroadcastStream stream = getBroadcastStream(scope,
publishName);
IBroadcastScope bsScope = getBroadcastScope(scope, publishName);
- final MyStreamingProxy proxy = new MyStreamingProxy();
+ final StreamingProxy proxy = new StreamingProxy();
proxy.setHost(host);
proxy.setApp(app);
proxy.setPort(1935);
- proxy.init(new ClientExceptionHandler() {
+ proxy.init();
+ proxy.setExceptionHandler(new ClientExceptionHandler() {
public void handleException(Throwable
throwable) {
result[0] = false;
HashMap<String, Object> params = new
HashMap<String, Object>();
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/screen/webstart/RTMPSScreenShare.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/screen/webstart/RTMPSScreenShare.java?rev=1339619&r1=1339618&r2=1339619&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/screen/webstart/RTMPSScreenShare.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/screen/webstart/RTMPSScreenShare.java
Thu May 17 14:42:23 2012
@@ -18,7 +18,8 @@
*/
package org.openmeetings.screen.webstart;
-import org.apache.geronimo.mail.util.Hex;
+import org.apache.commons.codec.DecoderException;
+import org.apache.commons.codec.binary.Hex;
import org.red5.client.net.rtmp.ClientExceptionHandler;
import org.red5.client.net.rtmps.RTMPSClient;
import org.red5.server.api.service.IPendingServiceCall;
@@ -42,12 +43,12 @@ public class RTMPSScreenShare extends RT
core = new CoreScreenShare(this);
};
- public static void main(String[] args) {
+ public static void main(String[] args) throws DecoderException {
RTMPSScreenShare client = new RTMPSScreenShare();
if (args.length < 11) {
System.exit(0);
}
- client.setKeystoreBytes(Hex.decode(args[9]));
+ client.setKeystoreBytes(Hex.decodeHex(args[9].toCharArray()));
client.setKeyStorePassword(args[10]);
client.core.main(args);
}