Module OMK::Common;

       Usefull common methods.


       readFiletoHashOmk()

             Read file that contains hash data, with or without lock, and optionally also

             json. 

             args:

 file (a full path),

               format (optional, 'nmis' or 'json', if not set: guess from file extension

or assume nmis), lock (optional, defaults false),

cache (optional, default false, IFF set return the material from cache -

but this is LIVE and SHARED data! you have to use Clone if your app needs

to change anything in this structure!)

             returns:

undef on error (sets error_string), (hash reference, filehandle) if lock,

(hash reference) otherwise.

 

       writeHashtoFileOmk()

             write hash structure to a file, as json or nmis/perl dump

             args:

file (a full path), data (hash ref), both required

handle (optional, open filehandle, if present it's expected to be locked

 and NO locking takes place!

format (optional, 'nmis' or 'json', if not present format is guessed from

file extension)

cache (optional, if set to 1 data is fed to setOmkCache)


             attention: if format is not given, and the file arg doesn't have an extension,

             then the extension .nmis is automatically added!


             returns: (status, error), with status 1 being good.


       getUnixTime()

             Returns unix epoch seconds in utc.

 

             arg:

takes anything that time::parsedate understands, plus an optional timezone argument

and returns full seconds (ie. unix epoch seconds in utc)

 

             if no timezone is given, the configured timezone omkd_display_timezone or local is used.

 

             attention: parsedate by itself does NOT understand the iso8601 format with timezone Z or

             with negative offset; relative time specs also don't work well with timezones OR dst changes!

 

       parseDatetime()

             Convert an iso8601/rfc3339 time into (fractional!) unix epoch seconds 

               YYYY-MM-DDTHH:MM:SS.SSS, millis are optional

               also allowed: timezone suffixes Z, +NN, -NN, +NNMM, -NNMM, +NN:MM, -NN:MM

 

             returns: undef if the input string is invalid

             note: timezone suffixes ARE parsed and taken into account! if no tz suffix is present, use the local timezone