/** * Fires specified event * * @param event the event to fire. */ private void fireEvent(RecorderEventImpl event) { eventSender.event = event; scheduler.submit(eventSender, PriorityQueueScheduler.INPUT_QUEUE); }
@Override public long perform() { final long currentTime = scheduler.getClock().getTime(); final long idleTime = currentTime - lastPacketData; // Abort recording operation if user did not speak during initial detection period if (preSpeechTimer > 0 && !speechDetected && idleTime > preSpeechTimer) { qualifier = RecorderEvent.NO_SPEECH; scheduler.submit(killRecording, PriorityQueueScheduler.INPUT_QUEUE); return 0; } // Abort recording operation if user did not speak for a while if (postSpeechTimer > 0 && speechDetected && idleTime > postSpeechTimer) { qualifier = RecorderEvent.SUCCESS; scheduler.submit(killRecording, PriorityQueueScheduler.INPUT_QUEUE); return 0; } // Abort recording if maximum time limit is reached final long duration = currentTime - startTime; if (maxRecordTime > 0 && duration >= maxRecordTime) { qualifier = RecorderEvent.MAX_DURATION_EXCEEDED; scheduler.submit(killRecording, PriorityQueueScheduler.INPUT_QUEUE); return 0; } scheduler.submitHeatbeat(this); return 0; }
public Worker(int queueNumber) { super(); this.queueNumber=queueNumber; initialTime=scheduler.getClock().getTime(); }
@Override public void activate() { this.lastPacketData = scheduler.getClock().getTime(); this.startTime = scheduler.getClock().getTime(); output.start(); oobOutput.start(); if (this.postSpeechTimer > 0 || this.preSpeechTimer > 0 || this.maxRecordTime > 0) { scheduler.submitHeatbeat(this.heartbeat); } // send event fireEvent(recorderStarted); }
public void restart() { ttl = heartbeatTime * 600; scheduler.submitHeatbeat(this); }
@Override public void stop() throws IllegalStateException { if (!this.started) { throw new IllegalStateException("Media Server already stopped"); } if (log.isInfoEnabled()) { log.info("Stopping UDP Manager"); } udpManager.stop(); if (heartbeat != null) { heartbeat.cancel(); } for (ServerManager controller : managers.values()) { log.info("Deactivating controller " + controller.getControlProtocol().name()); controller.deactivate(); } if (log.isInfoEnabled()) { log.info("Stopping scheduler"); } scheduler.stop(); if (log.isInfoEnabled()) { log.info("Stopped media server instance "); } }
public Worker(int queueNumber) { super(); this.queueNumber=queueNumber; initialTime=scheduler.getClock().getTime(); }
@Override public long perform() { ttl--; if (ttl == 0) { log.info("Global hearbeat is still alive"); restart(); } else { scheduler.submitHeatbeat(this); } return 0; } }
public void start() { mixCount = 0; started = true; scheduler.submit(mixer, PriorityQueueScheduler.MIXER_MIX_QUEUE); }
public void reinit() { initialTime=scheduler.getClock().getTime(); }
public void start() { mixCount = 0; started = true; scheduler.submit(mixer, PriorityQueueScheduler.MIXER_MIX_QUEUE); }
public void reinit() { initialTime=scheduler.getClock().getTime(); }
@Override public void onMediaTransfer(Frame frame) throws IOException { // extract data data = frame.getData(); offset = frame.getOffset(); len = frame.getLength(); byteBuffer.clear(); byteBuffer.limit(len - offset); byteBuffer.put(data, offset, len - offset); byteBuffer.rewind(); RecorderFileSink snk = sink.get(); if (snk != null) snk.write(byteBuffer); if (this.postSpeechTimer > 0 || this.preSpeechTimer > 0) { // detecting voice activity if (this.voiceDetector.detect(data, offset, len)) { this.lastPacketData = scheduler.getClock().getTime(); if(!this.speechDetected) { fireEvent(new RecorderEventImpl(RecorderEvent.SPEECH_DETECTED, this)); } this.speechDetected = true; } } else { this.lastPacketData = scheduler.getClock().getTime(); } }
protected void fireEvent(Collection<DtmfEventImpl> evts) { eventSender.events.addAll(evts); // schedule event delivery scheduler.submit(eventSender, PriorityQueueScheduler.INPUT_QUEUE); }
protected void fireEvent(DtmfEventImpl evt) { eventSender.events.add(evt); // schedule event delivery scheduler.submit(eventSender, PriorityQueueScheduler.INPUT_QUEUE); }