Class: RubySMB::Field::FileTime
- Inherits:
-
BinData::Primitive
- Object
- BinData::Primitive
- RubySMB::Field::FileTime
- Defined in:
- lib/ruby_smb/field/file_time.rb
Overview
Represents a Windows FILETIME structure as defined in 2.3.3 FILETIME.aspx)
Direct Known Subclasses
Constant Summary collapse
- EPOCH_DIFF_100NS =
Difference between the Windows and Unix epochs, in 100ns intervals
116_444_736_000_000_000
- NS_MULTIPLIER =
10_000_000
Instance Method Summary collapse
-
#get ⇒ BinData::Bit64
Gets the value of the field.
-
#set(value) ⇒ Object
Sets the value of the field from a DateTime,Time,Integer, or object that can be converted to an integer.
-
#to_datetime ⇒ DateTime
Returns the value of the field as a DateTime.
-
#to_time ⇒ Time
Returns the value of the field as a Time.
Instance Method Details
#get ⇒ BinData::Bit64
Gets the value of the field
17 18 19 |
# File 'lib/ruby_smb/field/file_time.rb', line 17 def get val end |
#set(value) ⇒ Object
Sets the value of the field from a DateTime,Time,Integer, or object that can be converted to an integer. Datetime and Time objects get converted to account for the Windows/Unix Epoch difference. Any other parameter passed in will be assumed to already be correct.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/ruby_smb/field/file_time.rb', line 28 def set(value) case value when DateTime set(value.to_time) when Time time_int = value.to_i time_int *= NS_MULTIPLIER adjusted_epoch = time_int + EPOCH_DIFF_100NS set(adjusted_epoch) when Integer self.val = value else self.val = value.to_i end val end |
#to_datetime ⇒ DateTime
Returns the value of the field as a DateTime
48 49 50 51 |
# File 'lib/ruby_smb/field/file_time.rb', line 48 def to_datetime time = to_time time.to_datetime end |
#to_time ⇒ Time
Returns the value of the field as a Time
56 57 58 59 60 61 |
# File 'lib/ruby_smb/field/file_time.rb', line 56 def to_time windows_int = val adjusted_epoch = windows_int - EPOCH_DIFF_100NS unix_int = adjusted_epoch / NS_MULTIPLIER Time.at unix_int end |