|
|||||||||
|
|
|||||||||
| Locking a file | |||||||||
You can lock a file for such purposes as maintaining a hit counter on a website, by using OmniMark's omvfs library.
To lock a file for such a hit counter, create a program like this one:
include "omvfs.xin"
process
local VFSFile counter-file
local stream hit-count
; set up a vfsfile for the counter
set counter-file to vfsOpen "counter.txt" for vfs-read-write
vfsLock counter-file
; read and increment the hit-count
set hit-count to "d" % vfsRead counter-file + 1
; output the hit-count
output hit-count
; output the updated counter
vfsMoveCursor counter-file to 0
set vfsWrite counter-file to hit-count
vfsUnlock counter-file
; a catch block for handling errors in this program
catch #external-exception
identity catch-id
message catch-msg
put #ERROR 'An error occurred while accessing a VFSFile'
put #ERROR '%g(catch-id) : %g(catch-msg)%n'
This program does the following:
hit-count, and the vfsFile counter-file.
counter-file to the file named "counter.txt" by using vfsOpen.
counter-file for the duration of this program.
hit-count by adding 1 to the contents of counter-file.
hit-count.
counter-file to the value of hit-count using vfsWrite, thus updating the file "c:\counter.txt".
counter-file with the omvfs library function vfsUnlock so another process can update it.
| ---- |