66 lines
2.2 KiB
Plaintext
66 lines
2.2 KiB
Plaintext
Program TstPFL;
|
|
|
|
{ Example for the nwLock unit / NwTP 0.6 API. (c) 1993,1995, R.Spronk }
|
|
|
|
{ Tests the following nwLock calls: (Physical File Locking)
|
|
|
|
ClearPhysicalFileSet
|
|
LogPhysicalFile
|
|
LockPhysicalFileSet
|
|
ReleasePhysicalFile
|
|
}
|
|
|
|
Uses nwFile,nwLock; { using this unit will automatically set the locmode to 1 }
|
|
|
|
Var FileName:string;
|
|
TimeOutTicks:word;
|
|
|
|
begin
|
|
TimeOutTicks:=360; {wait 20 seconds before locking process times out}
|
|
|
|
writeln('TSTLF: Test of logical file locking.');
|
|
writeln(' -Make sure the files referenced to in this example exist.');
|
|
writeln(' -Start the exe on 2 or more workstations & enjoy the effect.');
|
|
writeln;
|
|
|
|
{ Put the names of files-to-be-locked in the 'logged file set' }
|
|
FileName:='SYS:PUBLIC/SYSCON.EXE';
|
|
IF NOT LogPhysicalFile(FileName,LD_LOG,0)
|
|
then writeln('Logfile failed. Error# ',nwLock.result);
|
|
{ Note: The files specified have to exist, or an error 156 is
|
|
returned. Using EXE files instead of data files can be
|
|
a bit confusing in this example, but at least those
|
|
files are very likely to be there. }
|
|
FileName:='SYS:\PUBLIC\PCONSOLE.EXE';
|
|
IF NOT LogPhysicalFile(FileName,LD_LOG,0)
|
|
then writeln('Logfile failed. Error# ',nwLock.result);
|
|
{ Repeat logging process for other (if needed) }
|
|
|
|
|
|
{ Lock all files that are currently stored in the 'logged file set' }
|
|
writeln('Attempting to Lock files.. ');
|
|
IF NOT LockPhysicalFileSet(TimeOutTicks)
|
|
then writeln('LockFileSet (after TimeOut=20 sec) failed. Error# ',nwLock.result);
|
|
|
|
if nwlock.result=0 { locking of files was successful }
|
|
then begin
|
|
{ ---Update file, change file, etc.--- }
|
|
|
|
{ Readln to simulate update }
|
|
writeln('Now ''processing'' files. Press RETURN to release locks.');
|
|
readln;
|
|
|
|
{ Suppose we're done with the 1st datafile, but still need file #2:
|
|
-unlock 1 single file; keep in log }
|
|
IF NOT ReleasePhysicalFile('SYS:\PUBLIC\SYSCON.EXE')
|
|
then writeln('ReleaseFile Failed. Error# ',nwLock.result);
|
|
|
|
writeln('Now ''processing'' still locked file');
|
|
end;
|
|
|
|
{ unlock all files; clear 'logged file set' }
|
|
IF NOT ClearPhysicalFileSet
|
|
then writeln('ClearFileSet Failed. Error# ',nwLock.result);
|
|
|
|
end.
|