| 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()
 
-         {
 
-         }
 
-     }
 
- }
 
 
  |