Example #1
0
        /// <summary>
        /// Writes the specified <paramref name="value"/> using the specified <paramref name="writer"/>.
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="value">The value.</param>
        public async Task WriteValueAsync(AsyncBinaryWriter writer, T value)
        {
            Guard.NotNull(writer, nameof(writer));
            Guard.NotNull(value, nameof(value));

            var internalValue = new UIntPalmValue(this.Length);
            var data          = (uint)(int)(object)value;

            await internalValue.WriteValueAsync(writer, data);
        }
        /// <summary>
        /// Writes the specified <paramref name="value"/> using the specified <paramref name="writer"/>.
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="value">The value.</param>
        public async Task WriteValueAsync(AsyncBinaryWriter writer, DateTimeOffset?value)
        {
            Guard.NotNull(writer, nameof(writer));

            DateTimeOffset baseDateTime = this.WriteAsUnixTimeStamp
                ? new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero)
                : new DateTimeOffset(1904, 1, 1, 0, 0, 0, TimeSpan.Zero);

            var secondsSinceUnixTimestamp = value != null
                ? (uint)(value.Value - baseDateTime).TotalSeconds
                : 0U;

            var internalValue = new UIntPalmValue(4);
            await internalValue.WriteValueAsync(writer, secondsSinceUnixTimestamp);
        }