swirl
Guide to OmniMark 7   OmniMark home
docs home 
IndexConceptsTasksSyntaxLibrariesLegacy LibrariesErrors
 
     

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:

    import "omvfs.xmd" prefixed by vfs.
    process
       local vfs.file counter-file
       local stream hit-count

       ; set up a vfs.file for the counter
       set counter-file to vfs.open "counter.txt" for vfs.read-write-mode

       vfs.lock counter-file

       ; read and increment the hit-count
       set hit-count to "d" % vfs.read counter-file + 1

       ; output the hit-count
       output hit-count

       ; output the updated counter
       vfs.move-cursor counter-file to 0
       set vfs.write counter-file to hit-count
       vfs.unlock 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 vfs file'
          put #ERROR '%g(catch-id) : %g(catch-msg)%n'

This program does the following:

  1. Creates the stream hit-count, and the VFS file counter-file.
  2. Sets counter-file to the file named "counter.txt" by using open.
  3. Uses the omvfs library function lock to lock counter-file for the duration of this program.
  4. Increments hit-count by adding 1 to the contents of counter-file.
  5. Outputs hit-count.
  6. Sets counter-file to the value of hit-count using write, thus updating the file "c:\counter.txt".
  7. At the end, unlocks counter-file with the omvfs library function unlock so another process can update it.

       
 

Top [ INDEX ] [ CONCEPTS ] [ TASKS ] [ SYNTAX ] [ LIBRARIES ] [ LEGACYLIBRARIES ] [ ERRORS ]

OmniMark 7.1.2 Documentation Generated: June 28, 2005 at 5:44:38 pm
If you have any comments about this section of the documentation, send email to [email protected]

Copyright © Stilo Corporation, 1988-2005.