public int GetActiveThreadCount() { Lock(); Logfile.Write("Active Threads " + m_nActivePostCopyThreads); int lnReturn = m_nActivePostCopyThreads; Unlock(); return lnReturn; }
/* * Remove a File from the Receiver FS */ public boolean Rm(DvrFile poFile) throws Exception { if (!poFile.isRecNo()) { System.out.println("File has no unique Record Number (Not implemented)"); return false; } Lock(); Logfile.Write("Removing File " + poFile); boolean lbOk = false; ByteArrayOutputStream loLowLevelCommand = new ByteArrayOutputStream(); DataOutputStream loCommand = new DataOutputStream(loLowLevelCommand); byte lbResponse = 0; try { loCommand.writeByte(0x17); loCommand.writeShort(poFile.getRecNo()); write(loLowLevelCommand.toByteArray()); lbResponse = readbyte(); if (lbResponse == 1) { lbOk = true; poFile.m_oParent.m_oFiles.remove(poFile); } else System.out.println("Error in Receiver Response (RM Command) " + lbResponse); } catch (IOException e) { e.printStackTrace(); } Unlock(); return lbOk; }
public String GetReceiverInfo() { Lock(); String lcName = ""; String lcLang = ""; write(Header.PT_GETSYSINFO); try { byte[] laFlags = new byte[5]; readbyte(laFlags); byte[] laLang = new byte[3]; readbyte(laLang); lcName = readstring(); ack(); } catch (IOException e) { e.printStackTrace(); } finally { Unlock(); } return lcName; }
public void run() { try { Runtime loRt = Runtime.getRuntime(); String[] lcCommand = new String[] {m_cCommand, m_cDstFile, String.valueOf(m_oFile.getIndex())}; // Logfile.Write("Execute: "+lcCommand); Process loProc = loRt.exec(lcCommand); try { int lnExitCode = loProc.waitFor(); m_oProcessor.Lock(); Logfile.Write("PostCopyScript exited with Exit Code " + lnExitCode); m_oProcessor.m_nActivePostCopyThreads--; m_oProcessor.Unlock(); } catch (InterruptedException e) { e.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); } }
/* * Download a File from the Reciever to the * Destination File specified in pcDstFile */ public boolean Download(DvrFile poFile, String pcDstFile) { /* * Parameter Checks */ if (pcDstFile.endsWith("/")) { pcDstFile = pcDstFile + poFile.getUniqueFileName(); } String lcPostCopyAction = Props.Get("POSTCOPYSCRIPT"); int lnPostCopyThreads = Integer.parseInt(Props.Get("POSTCOPYTHREADCOUNT")); boolean lbStartDownload = false; boolean lbPostCopyAction = false; boolean lbReturn = false; if (lcPostCopyAction.equals("")) { Lock(); } else { lbPostCopyAction = true; do { Lock(); if (m_nActivePostCopyThreads < lnPostCopyThreads) { m_nActivePostCopyThreads++; lbStartDownload = true; } else { Unlock(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } while (!lbStartDownload); } /* * Socket Streams */ ByteArrayOutputStream loSocketWriteLow = new ByteArrayOutputStream(); DataOutputStream loSocketWrite = new DataOutputStream(loSocketWriteLow); String laDstFiles[]; try { Logfile.Write("Copy File " + poFile.getFileName() + " to " + pcDstFile); if (poFile.m_nType == 1) { write(new byte[] {Header.PT_GETFILE_BYNAME, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}); readbyte(); write(poFile.m_oParent.m_cRemoteName.getBytes("CP1252")); readbyte(); ping(); write(poFile.getFileName().getBytes("CP1252")); readbyte(); laDstFiles = new String[] {pcDstFile}; readstream_singlepart(createdstfile(pcDstFile)); } else { loSocketWrite.writeByte(Header.PT_GETFILE_BYRECNO); // Download Command; loSocketWrite.writeShort(poFile.getIndex()); // File Index loSocketWrite.writeLong(0); // Start Position (maybe!!) write(loSocketWriteLow.toByteArray()); // Send Message to DVR byte lbResponse = readbyte(); long lnFileSize = readlong(); byte lbFileCount = readbyte(); BufferedOutputStream[] laWrite = new BufferedOutputStream[lbFileCount]; laDstFiles = new String[lbFileCount]; for (int i = 0; i < laWrite.length; i++) { byte lbFileNo = readbyte(); laDstFiles[i] = pcDstFile + "." + readstring().toLowerCase(); laWrite[lbFileNo] = createdstfile(laDstFiles[i]); } write(Header.PT_ACK); readstream_multipart(laWrite); } Logfile.Write("Transfer Complete"); if (lbPostCopyAction) { PostCopy loPostCopy = new PostCopy(lcPostCopyAction, poFile, laDstFiles[0], this); loPostCopy.start(); } lbReturn = true; } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { Unlock(); } return lbReturn; }
public void OpenDir(DvrDirectory poDir) { if (poDir.m_bIsOpen) return; Lock(); try { Calendar loCalendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); byte[] laGetDir = new byte[] // Command {Header.PT_GETDIR, 0, (byte) (poDir.m_oParent == null ? 0 : 1)}; write(laGetDir); // Send readack(); if (poDir.m_oParent != null) { write(poDir.m_cRemoteName); readbyte(); ping(); } short lnAnzElements = readshort(); short lnIndex = 0; String lcFileName = ""; long lnSize = 0; int lnTimeStamp = 0; while (lnAnzElements > 0) { loCalendar.set(1999, 12, 01, 00, 00, 00); byte lbType = readbyte(); byte lbIsDir = 0; switch (lbType) { case 0: // Directory lbIsDir = readbyte(); lcFileName = readstring(); poDir.m_oDirectorys.add(new DvrDirectory(poDir, lcFileName, lcFileName, null)); break; case 1: // Binary lcFileName = readstring(); lnSize = readlong(); lnTimeStamp = readint(); loCalendar.add(Calendar.SECOND, lnTimeStamp); poDir.m_oFiles.add( new DvrFile(poDir, lcFileName, lnSize, (short) -1, lbType, loCalendar.getTime())); break; case 3: // TS Radio case 4: // TS File Record SD Quality case 7: // TS File Record HD Quality lbIsDir = readbyte(); lnIndex = readbyte(); lcFileName = readstring(); lnSize = readlong(); lnTimeStamp = readint(); loCalendar.add(Calendar.SECOND, lnTimeStamp); poDir.m_oFiles.add( new DvrFile(poDir, lcFileName, lnSize, lnIndex, lbType, loCalendar.getTime())); break; case 9: // USB Memory Stick lbIsDir = readbyte(); String lcDescription = readstring(); String lcName = readstring(); poDir.m_oDirectorys.add( new DvrDirectory(poDir, lcName, lcName.substring(1), lcDescription)); break; default: throw new IOException("Unknown RecordType " + lbType); } lnAnzElements--; } } catch (IOException e) { e.printStackTrace(); } finally { Unlock(); } poDir.m_bIsOpen = true; }