# HG changeset patch # User Jaroslav Tulach # Date 1213430071 -7200 # Node ID a773f1bc5ba121e3a2f0e8195199378e6688b17c # Parent 5c7a65ed657ad7453a5a7cc5edd1a14afacb4f70 Racecondition tests diff -r 5c7a65ed657a -r a773f1bc5ba1 samples/deadlock/src/org/apidesign/deadlock/startuplock/CLIHandler.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/deadlock/src/org/apidesign/deadlock/startuplock/CLIHandler.java Sat Jun 14 09:54:31 2008 +0200 @@ -0,0 +1,34 @@ +package org.apidesign.deadlock.startuplock; + +import java.io.DataOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.ServerSocket; + +public final class CLIHandler { + // BEGIN: cli.vision + public static int start(File lockFile) throws IOException { + if (lockFile.exists ()) { + // read the port number and connect to it + int alive = readPortNumber(lockFile); + if (alive != -1) { + // exit + return alive; + } + } + // otherwise try to create the file yourself + lockFile.createNewFile(); + DataOutputStream os = new DataOutputStream(new FileOutputStream(lockFile)); + ServerSocket server = new ServerSocket(); + int p = server.getLocalPort(); + os.writeInt(p); + + return p; + } + // END: cli.vision + + private static int readPortNumber(File lockFile) throws IOException { + return -1; + } +} diff -r 5c7a65ed657a -r a773f1bc5ba1 samples/deadlock/src/org/apidesign/deadlock/startuplock/CLIHandlerBlocking.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/deadlock/src/org/apidesign/deadlock/startuplock/CLIHandlerBlocking.java Sat Jun 14 09:54:31 2008 +0200 @@ -0,0 +1,47 @@ +package org.apidesign.deadlock.startuplock; + +import java.io.DataOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.ServerSocket; +import java.util.logging.Level; +import java.util.logging.Logger; + +public final class CLIHandlerBlocking { + // BEGIN: cli.real + public static int start(File lockFile) throws IOException { + enterState(10); + if (lockFile.exists ()) { + // read the port number and connect to it + enterState(11); + int alive = readPortNumber(lockFile); + if (alive != -1) { + // exit + return alive; + } + } + // otherwise try to create the file yourself + enterState(20); + lockFile.createNewFile(); + DataOutputStream os = new DataOutputStream(new FileOutputStream(lockFile)); + ServerSocket server = new ServerSocket(); + enterState(21); + int p = server.getLocalPort(); + enterState(22); + os.writeInt(p); + enterState(23); + + return p; + } + // END: cli.real + + private static Logger LOG = Logger.getLogger(CLIHandlerBlocking.class.getName()); + private static void enterState(int state) { + LOG.log(Level.FINEST, "enterState {0}", state); + } + + private static int readPortNumber(File lockFile) throws IOException { + return -1; + } +}