Merge pull request #2982 from ritzalam/guard-against-NaN-in-presentation-messages
Guard against na n in presentation messages
This commit is contained in:
commit
c58767e74e
@ -1,21 +1,21 @@
|
||||
/**
|
||||
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
|
||||
*
|
||||
* Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation; either version 3.0 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along
|
||||
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
|
||||
*
|
||||
* Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||
* Foundation; either version 3.0 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along
|
||||
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
package org.bigbluebutton.red5.service;
|
||||
|
||||
import java.util.Map;
|
||||
@ -28,118 +28,134 @@ import org.bigbluebutton.red5.BigBlueButtonSession;
|
||||
import org.bigbluebutton.red5.Constants;
|
||||
|
||||
public class PresentationService {
|
||||
private static Logger log = Red5LoggerFactory.getLogger( PresentationService.class, "bigbluebutton" );
|
||||
|
||||
private PresentationApplication presentationApplication;
|
||||
private static Logger log = Red5LoggerFactory.getLogger( PresentationService.class, "bigbluebutton" );
|
||||
|
||||
public void removePresentation(Map<String, Object> msg) {
|
||||
String presentationID = (String) msg.get("presentationID");
|
||||
|
||||
IScope scope = Red5.getConnectionLocal().getScope();
|
||||
presentationApplication.removePresentation(scope.getName(), presentationID);
|
||||
}
|
||||
|
||||
public void getSlideInfo() {
|
||||
IScope scope = Red5.getConnectionLocal().getScope();
|
||||
log.debug("Getting slide info for meeting [{}]", scope.getName());
|
||||
presentationApplication.getSlideInfo(scope.getName(), getBbbSession().getInternalUserID());
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
IScope scope = Red5.getConnectionLocal().getScope();
|
||||
presentationApplication.clear(scope.getName());
|
||||
}
|
||||
|
||||
public void getPresentationInfo() {
|
||||
IScope scope = Red5.getConnectionLocal().getScope();
|
||||
log.debug("Getting presentation info for meeting [{}]", scope.getName());
|
||||
presentationApplication.getPresentationInfo(scope.getName(), getBbbSession().getInternalUserID());
|
||||
}
|
||||
|
||||
public void gotoSlide(Map<String, Object> msg) {
|
||||
String pageId = (String) msg.get("page");
|
||||
|
||||
IScope scope = Red5.getConnectionLocal().getScope();
|
||||
log.debug("Got GotoSlide for meeting [{}] page=[{}]", scope.getName(), pageId);
|
||||
private PresentationApplication presentationApplication;
|
||||
|
||||
presentationApplication.gotoSlide(scope.getName(), pageId);
|
||||
}
|
||||
|
||||
public void sharePresentation(Map<String, Object> msg) {
|
||||
String presentationID = (String) msg.get("presentationID");
|
||||
Boolean share = (Boolean) msg.get("share");
|
||||
|
||||
IScope scope = Red5.getConnectionLocal().getScope();
|
||||
presentationApplication.sharePresentation(scope.getName(), presentationID, share);
|
||||
}
|
||||
|
||||
public void sendCursorUpdate(Map<String, Object> msg) {
|
||||
IScope scope = Red5.getConnectionLocal().getScope();
|
||||
|
||||
Double xPercent;
|
||||
if (msg.get("xPercent") instanceof Integer) {
|
||||
Integer tempXOffset = (Integer) msg.get("xPercent");
|
||||
xPercent = tempXOffset.doubleValue();
|
||||
} else {
|
||||
xPercent = (Double) msg.get("xPercent");
|
||||
}
|
||||
public void removePresentation(Map<String, Object> msg) {
|
||||
String presentationID = (String) msg.get("presentationID");
|
||||
|
||||
Double yPercent;
|
||||
|
||||
if (msg.get("yPercent") instanceof Integer) {
|
||||
Integer tempYOffset = (Integer) msg.get("yPercent");
|
||||
yPercent = tempYOffset.doubleValue();
|
||||
} else {
|
||||
yPercent = (Double) msg.get("yPercent");
|
||||
}
|
||||
|
||||
presentationApplication.sendCursorUpdate(scope.getName(), xPercent, yPercent);
|
||||
}
|
||||
|
||||
public void resizeAndMoveSlide(Map<String, Object> msg) {
|
||||
Double xOffset;
|
||||
if (msg.get("xOffset") instanceof Integer) {
|
||||
Integer tempXOffset = (Integer) msg.get("xOffset");
|
||||
xOffset = tempXOffset.doubleValue();
|
||||
} else {
|
||||
xOffset = (Double) msg.get("xOffset");
|
||||
}
|
||||
IScope scope = Red5.getConnectionLocal().getScope();
|
||||
presentationApplication.removePresentation(scope.getName(), presentationID);
|
||||
}
|
||||
|
||||
Double yOffset;
|
||||
|
||||
if (msg.get("yOffset") instanceof Integer) {
|
||||
Integer tempYOffset = (Integer) msg.get("yOffset");
|
||||
yOffset = tempYOffset.doubleValue();
|
||||
} else {
|
||||
yOffset = (Double) msg.get("yOffset");
|
||||
}
|
||||
|
||||
Double widthRatio;
|
||||
if (msg.get("widthRatio") instanceof Integer) {
|
||||
Integer tempWRatio = (Integer) msg.get("widthRatio");
|
||||
widthRatio = tempWRatio.doubleValue();
|
||||
} else {
|
||||
widthRatio = (Double) msg.get("widthRatio");
|
||||
}
|
||||
|
||||
|
||||
Double heightRatio;
|
||||
if (msg.get("heightRatio") instanceof Integer) {
|
||||
Integer tempHRatio = (Integer) msg.get("heightRatio");
|
||||
heightRatio = tempHRatio.doubleValue();
|
||||
} else {
|
||||
heightRatio = (Double) msg.get("heightRatio");
|
||||
}
|
||||
|
||||
IScope scope = Red5.getConnectionLocal().getScope();
|
||||
presentationApplication.resizeAndMoveSlide(scope.getName(), xOffset, yOffset, widthRatio, heightRatio);
|
||||
}
|
||||
public void getSlideInfo() {
|
||||
IScope scope = Red5.getConnectionLocal().getScope();
|
||||
log.debug("Getting slide info for meeting [{}]", scope.getName());
|
||||
presentationApplication.getSlideInfo(scope.getName(), getBbbSession().getInternalUserID());
|
||||
}
|
||||
|
||||
public void setPresentationApplication(PresentationApplication a) {
|
||||
presentationApplication = a;
|
||||
}
|
||||
|
||||
private BigBlueButtonSession getBbbSession() {
|
||||
return (BigBlueButtonSession) Red5.getConnectionLocal().getAttribute(Constants.SESSION);
|
||||
}
|
||||
public void clear() {
|
||||
IScope scope = Red5.getConnectionLocal().getScope();
|
||||
presentationApplication.clear(scope.getName());
|
||||
}
|
||||
|
||||
public void getPresentationInfo() {
|
||||
IScope scope = Red5.getConnectionLocal().getScope();
|
||||
log.debug("Getting presentation info for meeting [{}]", scope.getName());
|
||||
presentationApplication.getPresentationInfo(scope.getName(), getBbbSession().getInternalUserID());
|
||||
}
|
||||
|
||||
public void gotoSlide(Map<String, Object> msg) {
|
||||
String pageId = (String) msg.get("page");
|
||||
|
||||
IScope scope = Red5.getConnectionLocal().getScope();
|
||||
log.debug("Got GotoSlide for meeting [{}] page=[{}]", scope.getName(), pageId);
|
||||
|
||||
presentationApplication.gotoSlide(scope.getName(), pageId);
|
||||
}
|
||||
|
||||
public void sharePresentation(Map<String, Object> msg) {
|
||||
String presentationID = (String) msg.get("presentationID");
|
||||
Boolean share = (Boolean) msg.get("share");
|
||||
|
||||
IScope scope = Red5.getConnectionLocal().getScope();
|
||||
presentationApplication.sharePresentation(scope.getName(), presentationID, share);
|
||||
}
|
||||
|
||||
public void sendCursorUpdate(Map<String, Object> msg) {
|
||||
IScope scope = Red5.getConnectionLocal().getScope();
|
||||
|
||||
Double xPercent;
|
||||
if (msg.get("xPercent") instanceof Integer) {
|
||||
Integer tempXOffset = (Integer) msg.get("xPercent");
|
||||
xPercent = tempXOffset.doubleValue();
|
||||
} else {
|
||||
xPercent = (Double) msg.get("xPercent");
|
||||
}
|
||||
|
||||
Double yPercent;
|
||||
|
||||
if (msg.get("yPercent") instanceof Integer) {
|
||||
Integer tempYOffset = (Integer) msg.get("yPercent");
|
||||
yPercent = tempYOffset.doubleValue();
|
||||
} else {
|
||||
yPercent = (Double) msg.get("yPercent");
|
||||
}
|
||||
|
||||
presentationApplication.sendCursorUpdate(scope.getName(), xPercent, yPercent);
|
||||
}
|
||||
|
||||
public void resizeAndMoveSlide(Map<String, Object> msg) {
|
||||
Double xOffset;
|
||||
if (msg.get("xOffset") instanceof Integer) {
|
||||
Integer tempXOffset = (Integer) msg.get("xOffset");
|
||||
xOffset = tempXOffset.doubleValue();
|
||||
} else {
|
||||
xOffset = (Double) msg.get("xOffset");
|
||||
}
|
||||
if (Double.isNaN(xOffset)) {
|
||||
log.warn("resizeAndMoveSlide came with xOffset as NaN, setting it to 0");
|
||||
xOffset = 0.0;
|
||||
}
|
||||
|
||||
Double yOffset;
|
||||
|
||||
if (msg.get("yOffset") instanceof Integer) {
|
||||
Integer tempYOffset = (Integer) msg.get("yOffset");
|
||||
yOffset = tempYOffset.doubleValue();
|
||||
} else {
|
||||
yOffset = (Double) msg.get("yOffset");
|
||||
}
|
||||
if (Double.isNaN(yOffset)) {
|
||||
log.warn("resizeAndMoveSlide came with yOffset as NaN, setting it to 0");
|
||||
yOffset = 0.0;
|
||||
}
|
||||
|
||||
Double widthRatio;
|
||||
if (msg.get("widthRatio") instanceof Integer) {
|
||||
Integer tempWRatio = (Integer) msg.get("widthRatio");
|
||||
widthRatio = tempWRatio.doubleValue();
|
||||
} else {
|
||||
widthRatio = (Double) msg.get("widthRatio");
|
||||
}
|
||||
if (Double.isNaN(widthRatio)) {
|
||||
log.warn("resizeAndMoveSlide came with widthRatio as NaN, setting it to 100");
|
||||
widthRatio = 100.0;
|
||||
}
|
||||
|
||||
|
||||
Double heightRatio;
|
||||
if (msg.get("heightRatio") instanceof Integer) {
|
||||
Integer tempHRatio = (Integer) msg.get("heightRatio");
|
||||
heightRatio = tempHRatio.doubleValue();
|
||||
} else {
|
||||
heightRatio = (Double) msg.get("heightRatio");
|
||||
}
|
||||
if (Double.isNaN(heightRatio)) {
|
||||
log.warn("resizeAndMoveSlide came with heightRatio as NaN, setting it to 100");
|
||||
heightRatio = 100.0;
|
||||
}
|
||||
|
||||
IScope scope = Red5.getConnectionLocal().getScope();
|
||||
presentationApplication.resizeAndMoveSlide(scope.getName(), xOffset, yOffset, widthRatio, heightRatio);
|
||||
}
|
||||
|
||||
public void setPresentationApplication(PresentationApplication a) {
|
||||
presentationApplication = a;
|
||||
}
|
||||
|
||||
private BigBlueButtonSession getBbbSession() {
|
||||
return (BigBlueButtonSession) Red5.getConnectionLocal().getAttribute(Constants.SESSION);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user