summaryrefslogtreecommitdiff
path: root/qadevOOo/runner/convwatch/SimpleFileSemaphore.java
diff options
context:
space:
mode:
Diffstat (limited to 'qadevOOo/runner/convwatch/SimpleFileSemaphore.java')
-rw-r--r--qadevOOo/runner/convwatch/SimpleFileSemaphore.java189
1 files changed, 189 insertions, 0 deletions
diff --git a/qadevOOo/runner/convwatch/SimpleFileSemaphore.java b/qadevOOo/runner/convwatch/SimpleFileSemaphore.java
new file mode 100644
index 000000000000..9d608bdb332b
--- /dev/null
+++ b/qadevOOo/runner/convwatch/SimpleFileSemaphore.java
@@ -0,0 +1,189 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package convwatch;
+
+import java.io.File;
+import java.io.RandomAccessFile;
+import helper.OSHelper;
+
+public class SimpleFileSemaphore /* extends *//* implements */
+{
+ String m_sInternSemaphoreFile;
+ File m_aInternSemaphoreFile;
+ GlobalLogWriter m_aLog;
+
+ public static void sleep( int _nSeconds)
+ {
+ // wait a second here
+ try
+ {
+ java.lang.Thread.sleep(_nSeconds * 1000);
+ }
+ catch (java.lang.InterruptedException e2)
+ {
+ }
+ }
+
+ public SimpleFileSemaphore() throws IllegalArgumentException
+ {
+ String sInternFileName;
+ if (OSHelper.isWindows())
+ {
+ sInternFileName = "C:/Temp/ConvwatchOOoSemaphore.txt";
+ }
+ else if (OSHelper.isUnix())
+ {
+ sInternFileName = "/tmp/ConvwatchOOoSemaphore.txt";
+ }
+ else
+ {
+ m_sInternSemaphoreFile = null;
+ throw new IllegalArgumentException("Unknown System, can't initialise SimpleFileSemaphore");
+ }
+
+ m_sInternSemaphoreFile = sInternFileName;
+ m_aInternSemaphoreFile = new File(sInternFileName);
+ }
+
+ public File getSemaphoreFile()
+ {
+ return m_aInternSemaphoreFile;
+ }
+// ------------------------------------------------------------------------------
+// wait until resource is available
+ public void P(File _aSemaphore)
+ {
+ int nCount = 0;
+ int nCheckLoop = 1;
+
+ while ( nCheckLoop == 1)
+ {
+ // check if resource is available, if not, wait.
+ if ( _aSemaphore.exists() )
+ {
+ m_aLog.get().println( "Active wait since " + nCount + "sec..");
+ nCount ++;
+ sleep( 1 );
+ }
+ else
+ {
+ sleep( 1 );
+ if ( _aSemaphore.exists() )
+ {
+ // ups
+ m_aLog.get().println( "ups...");
+ }
+ else
+ {
+ nCheckLoop = 0;
+ }
+ }
+ }
+
+ // block resource by ourself
+ try
+ {
+ RandomAccessFile aWriter = new RandomAccessFile(_aSemaphore, "rw");
+ aWriter.writeByte((int)1);
+ aWriter.close();
+ }
+
+ catch (java.io.FileNotFoundException fne)
+ {
+ m_aLog.get().println( "caught: FileNotFoundException");
+ }
+ catch(java.io.IOException ie)
+ {
+ m_aLog.get().println( "caught: IOException");
+ }
+ }
+
+// ------------------------------------------------------------------------------
+// block a resource
+ public void V(File _aSemaphore)
+ {
+
+ if ( _aSemaphore.exists() )
+ {
+ _aSemaphore.delete();
+ }
+ else
+ {
+ m_aLog.get().println("Could be a problem here? No resource block found.");
+ }
+ }
+
+ // --------------------------------- Unit test ---------------------------------
+
+ private static boolean SEMAPHORE_SHOULD_EXIST = true;
+ private static boolean SEMAPHORE_SHOULD_NOT_EXIST = false;
+
+ private static void assure(boolean _b, String _sText)
+ {
+ System.out.print(_sText);
+ System.out.print(" ");
+ if (_b)
+ {
+ System.out.println("ok");
+ }
+ else
+ {
+ System.out.println("FAILED");
+ }
+ }
+
+ private static void testSemaphoreFile(SimpleFileSemaphore a, boolean _bShouldFileExists)
+ {
+ System.out.println("Check if semaphore file exists.");
+ File aSemaphoreFile = a.getSemaphoreFile();
+ if (aSemaphoreFile.exists())
+ {
+ System.out.println("Name is: " + aSemaphoreFile.getAbsolutePath());
+ assure(_bShouldFileExists == SEMAPHORE_SHOULD_EXIST, "Semaphore should exist!");
+ }
+ else
+ {
+ assure(_bShouldFileExists == SEMAPHORE_SHOULD_NOT_EXIST, "Semaphore should not exist!");
+ }
+ }
+
+ public static void main( String[] argv )
+ {
+ SimpleFileSemaphore a = new SimpleFileSemaphore();
+
+ testSemaphoreFile(a, SEMAPHORE_SHOULD_NOT_EXIST);
+
+ a.P(a.getSemaphoreFile());
+
+ testSemaphoreFile(a, SEMAPHORE_SHOULD_EXIST);
+
+ a.V(a.getSemaphoreFile());
+
+ testSemaphoreFile(a, SEMAPHORE_SHOULD_NOT_EXIST);
+ }
+}