functions/objectcache.ps1
# <# # .Synopsis # Stores an object in in-memory cache. The object is valid as long as lockfile has not changed # #> # function set-cachedobject([Parameter(Mandatory=$true)]$lockfile, [Parameter(Mandatory=$true)]$object) { # if (!(test-path $lockfile)) { throw "lock file '$lockfile' not found" } # $f = gi $lockfile # $ts = $f.LastWriteTimeUtc # $global:cache[$lockfile] = @{ # ts = $ts # value = $object # file = (gi $lockfile).FullName # } # } # <# # .Synopsis # Returns an object from in-memory cache that is locked by specified lockfile. # If lockfile was modified since the object was cached, returns $null. # #> # function get-cachedobject([Parameter(Mandatory=$true)]$lockfile) { # if (!(test-path $lockfile)) { throw "lock file '$lockfile' not found" } # if ($global:cache[$lockfile] -ne $null) { # $f = gi $lockfile # $ts = $f.LastWriteTimeUtc # if ($ts -le $global:cache[$lockfile].ts) { # return $global:cache[$lockfile] # } # } # return $null # } |