From: jreichen <jre...@us...> - 2011-01-15 21:11:20
|
Update of /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/httpls/segment In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv19275/src/sagex/streaming/httpls/segment Modified Files: SegmentManager.java Log Message: - Added a URL to allow clients to kill transcoding processes on the server - Added more logging detail Index: SegmentManager.java =================================================================== RCS file: /cvsroot/sageplugins/MediaStreaming/src/sagex/streaming/httpls/segment/SegmentManager.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** SegmentManager.java 5 Nov 2010 02:58:36 -0000 1.2 --- SegmentManager.java 15 Jan 2011 21:11:13 -0000 1.3 *************** *** 20,23 **** --- 20,24 ---- { private Map<String, SegmentProducer> segmentProducerMap = new LinkedHashMap<String, SegmentProducer>(); + private List<String> oldSegmentProducerList = new ArrayList<String>(); // TODO determine when the last segment has been sent private int currentIndex; *************** *** 26,29 **** --- 27,35 ---- public void addSegmentProducer(String conversionId, SegmentProducer segmentProducer) { + if (oldSegmentProducerList.contains(conversionId)) + { + Log.warn("SegmentManager.addSegmentProducer() Conversion Id is being reused."); + } + if (segmentProducerMap.containsKey(conversionId)) { *************** *** 33,43 **** segmentProducerMap.put(conversionId, segmentProducer); ! synchronized (this) { ! if (timer == null) ! { ! timer = new Timer("ffmpeg cleanup timer"); ! timer.schedule(new CleanupTask(), 5 * 60 * 1000, 1 * 60 * 1000); ! } } } --- 39,46 ---- segmentProducerMap.put(conversionId, segmentProducer); ! if (timer == null) { ! timer = new Timer("ffmpeg cleanup timer"); ! timer.schedule(new CleanupTask(), 5 * 60 * 1000, 1 * 60 * 1000); } } *************** *** 45,48 **** --- 48,56 ---- public SegmentProducer getSegmentProducer(String conversionId) { + if (oldSegmentProducerList.contains(conversionId)) + { + Log.warn("SegmentManager.getSegmentProducer() Conversion Id is being reused."); + } + SegmentProducer segmentProducer = segmentProducerMap.get(conversionId); *************** *** 57,65 **** } ! public List<SegmentProducer> removeSegmentProducers() { ! synchronized (this) { ! if (timer != null) { timer.cancel(); --- 65,78 ---- } ! public SegmentProducer removeSegmentProducer(String conversionId) { ! SegmentProducer segmentProducer = getSegmentProducer(conversionId); ! ! if (segmentProducer != null) { ! oldSegmentProducerList.add(conversionId); ! segmentProducerMap.remove(conversionId); ! ! if ((timer != null) && (segmentProducerMap.size() == 0)) { timer.cancel(); *************** *** 67,71 **** --- 80,97 ---- } } + + return segmentProducer; + } + + public List<SegmentProducer> removeSegmentProducers() + { + if (timer != null) + { + timer.cancel(); + timer = null; + } + List<SegmentProducer> segmentProducers = getSegmentProducers(); + oldSegmentProducerList.addAll(segmentProducerMap.keySet()); segmentProducerMap.clear(); return segmentProducers; *************** *** 93,99 **** synchronized (currentSegmentProducer) { - Log.debug("Segment Producer has been inactive for " + (now - currentSegmentProducer.getLastActivity()) / 1000 + " seconds"); if (now - currentSegmentProducer.getLastActivity() > 5 * 60 * 1000) // 5 minutes { try { --- 119,125 ---- synchronized (currentSegmentProducer) { if (now - currentSegmentProducer.getLastActivity() > 5 * 60 * 1000) // 5 minutes { + Log.debug("Segment Producer has been inactive for " + (now - currentSegmentProducer.getLastActivity()) / 1000 + " seconds. Removing producer."); try { *************** *** 106,112 **** --- 132,143 ---- } Log.debug("Map size before remove: " + segmentProducerMap.size()); + oldSegmentProducerList.add(currentEntry.getKey()); mapIterator.remove(); Log.debug("Map size after remove: " + segmentProducerMap.size()); } + else + { + Log.debug("Segment Producer has been inactive for " + (now - currentSegmentProducer.getLastActivity()) / 1000 + " seconds"); + } } } |