123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- using System;
- namespace InABox.DigitalMatter
- {
- public interface IDMObject
- {
- void Decode(byte[] data);
- byte[] Encode();
- }
- public abstract class DMObject : DMBuffer, IDMObject
- {
- public void Decode(byte[] data)
- {
- Buffer = data;
- BeforeDecode();
- DoDecode();
- AfterDecode();
- }
- public byte[] Encode()
- {
- Reset();
- BeforeEncode();
- DoEncode();
- AfterEncode();
- return Buffer;
- }
- protected uint SecondsSince2013UTC()
- {
- var epoch = new DateTime(2013, 1, 1);
- var utc = DateTime.Now.ToUniversalTime();
- var elapsed = utc - epoch;
- return (uint)elapsed.TotalSeconds;
- }
- public DateTime TimeStampToDateTime(uint timestamp)
- {
- return new DateTime(2013, 1, 1).AddSeconds(timestamp).ToLocalTime();
- }
- protected virtual void BeforeEncode()
- {
- }
- protected abstract void DoEncode();
- protected virtual void AfterEncode()
- {
- }
- protected virtual void BeforeDecode()
- {
- }
- protected abstract void DoDecode();
- protected virtual void AfterDecode()
- {
- }
- }
- }
|