Files
harbour-core/tests/aliaslck.prg
Viktor Szakats 58faf91453 2016-01-14 19:17 UTC+0100 Viktor Szakats (vszakats users.noreply.github.com)
* *
    % remove brandings and homepage [1] from copyright header. Pass 1 - using script.
      [1] nobody has access to it anymore AFAIK - and it's also just
          a redirect since long
    ! update url in copyright header
    ; this should make the diff between 3.4 and 3.2 easier to manage
2016-01-14 19:18:17 +01:00

110 lines
2.0 KiB
Plaintext

/*
* demonstration/test code for file lock synchronization between
* aliased work areas
*
* Copyright 2008 Przemyslaw Czerpak <druzus / at / priv.onet.pl>
*
*/
proc main()
local cFile := "_tst"
if ! hb_dbExists( cFile )
dbCreate( cFile, { { "F", "C", 10, 0 } } )
use _tst exclusive
while LastRec() < 100
dbAppend()
enddo
close
endif
? "Test exclusive access"
select 1
use _tst exclusive alias tst1
? "neterr->", NetErr(), "used->", Used(), "alias->", Alias()
select 2
use _tst exclusive alias tst2
? "neterr->", NetErr(), "used->", Used(), "alias->", Alias()
if Used()
? "Error, exclusive mode in aliased work areas does not work"
else
? "OK"
endif
dbCloseAll()
wait
?
? "Test shared access"
select 1
use _tst shared alias tst1
? "neterr->", NetErr(), "used->", Used(), "alias->", Alias()
setLock(2)
setLock(4)
setLock(6)
setLock(7)
dspLock()
select 2
use _tst shared alias tst2
? "neterr->", NetErr(), "used->", Used(), "alias->", Alias()
setLock(1)
setLock(2)
setLock(3)
setLock(4)
setLock(5)
setLock(6)
setLock(7)
setLock(8)
setLock(9)
dspLock()
wait
?
select 1
? "unlock all in", Alias()
dbUnlock()
dspLock()
select 2
? "lock 10 records in", Alias()
setLock(1)
setLock(2)
setLock(3)
setLock(4)
setLock(5)
setLock(6)
setLock(7)
setLock(8)
setLock(9)
dspLock()
wait
?
? "unlock 3, 5, 9 in", Alias()
dbRUnlock(3)
dbRUnlock(5)
dbRUnlock(9)
dspLock()
select 1
? "lock 10 records in", Alias()
setLock(1)
setLock(2)
setLock(3)
setLock(4)
setLock(5)
setLock(6)
setLock(7)
setLock(8)
setLock(9)
dspLock()
wait
dbCloseAll()
hb_dbDrop( cFile )
return
proc setLock( n )
? "locking record: " + hb_ntos( n ) + " ->", dbRLock( n )
return
proc dspLock()
local n
? Alias(), "active locks:"
for each n in dbRLockList()
?? "", hb_ntos( n )
next
return