public static async void Start(this ReservationComponent self)
        {
            var proxy = Game.Scene.GetComponent <CacheProxyComponent>();

            self.MemorySync               = proxy.GetMemorySyncSolver <Reservation>();
            self.MemorySync.onCreate     += self.OnCreated;
            self.MemorySync.onWillDelete += self.OnWillDeleted;

            var reservations = await ReservationDataHelper.GetAll();

            for (int i = 0; i < reservations.Count; i++)
            {
                if (reservations[i].allData == null)
                {
                    await ReservationDataHelper.Remove(reservations[i].uid);

                    continue;
                }

                // 解析預約
                ReservationAllData allData          = new ReservationAllData();
                CodedInputStream   codedInputStream = new CodedInputStream(reservations[i].allData.Bytes);
                allData.MergeFrom(codedInputStream);

                // 判斷是否過期
                if (DateTime.UtcNow.Ticks > allData.AwakeUTCTimeTick)
                {
                    await ReservationDataHelper.Remove(reservations[i].uid);

                    continue;
                }

                // 實體化預約
                await self.CreateReservation(allData);
            }
        }
Beispiel #2
0
 public override async void Destroy(Reservation self)
 {
     //刪除DB
     await ReservationDataHelper.Remove(self.allData.ReservationId);
 }