01: /*
02: * This file is not part of the ItsNat framework.
03: *
04: * Original source code use and closed source derivatives are authorized
05: * to third parties with no restriction or fee.
06: * The original source code is owned by the author.
07: *
08: * This program is distributed AS IS in the hope that it will be useful,
09: * but WITHOUT ANY WARRANTY; without even the implied warranty of
10: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11: *
12: * Author: Jose Maria Arranz Santamaria
13: * (C) Innowhere Software Services S.L., Spanish company, year 2007
14: */
15:
16: package org.itsnat.feashow.features.core;
17:
18: import java.util.Date;
19: import org.itsnat.core.ClientDocument;
20: import org.itsnat.core.ItsNatServletRequest;
21: import org.itsnat.core.event.RemoteControlCometEvent;
22: import org.itsnat.core.event.RemoteControlEvent;
23: import org.itsnat.core.event.RemoteControlEventListener;
24: import org.itsnat.core.event.RemoteControlTimerEvent;
25: import org.itsnat.feashow.*;
26:
27: public class RemoteControlSupervision implements
28: RemoteControlEventListener {
29: public RemoteControlSupervision() {
30: }
31:
32: public void handleRequest(RemoteControlEvent event) {
33: int phase = event.getPhase();
34:
35: if (phase == RemoteControlEvent.REQUEST) {
36: if (event instanceof RemoteControlTimerEvent) {
37: RemoteControlTimerEvent timerEvent = (RemoteControlTimerEvent) event;
38: boolean accepted = (timerEvent.getRefreshInterval() >= 3000);
39: event.setAccepted(accepted);
40: } else if (event instanceof RemoteControlCometEvent) {
41: event.setAccepted(true);
42: }
43: } else if (phase == RemoteControlEvent.OBSERVED_INVALID) {
44: ItsNatServletRequest request = event
45: .getItsNatServletRequest();
46: ClientDocument observer = request.getClientDocument();
47: observer
48: .addCodeToSend("alert('Observed document was destroyed');");
49: } else if (phase == RemoteControlEvent.REFRESH) {
50: ItsNatServletRequest request = event
51: .getItsNatServletRequest();
52: ClientDocument observer = request.getClientDocument();
53: Date initDate = observer.getCreationDate();
54: Date currentDate = new Date();
55: int limitMilisec = 15 * 60 * 1000; // 15 minutes (to avoid a long monitoring session)
56: if (currentDate.getTime() - initDate.getTime() > limitMilisec) {
57: observer
58: .addCodeToSend("alert('Remote Control Timeout');\n");
59: event.setAccepted(false);
60: }
61: }
62: // RemoteControlEvent.LOAD & UNLOAD : nothing to do
63: }
64: }
|