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
# }