Ejemplo n.º 1
0
 /// <summary>
 /// EPGデータ更新
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void _bgw_EpgData_DoWork(object sender, DoWorkEventArgs e)
 {
     DateTime lastUpdate1 = DateTime.Now;
     //
     int epgUpdatedCount1 = 0;
     int epgNotUpdatedCount1 = 0;
     foreach (RecLogItem rli1 in db_RecLog.select_Reserved())
     {
         if (rli1.epgEventInfoR != null && rli1.epgAlllowOverWrite)
         {
             EpgEventInfo epgEventInfo1 = getEpgEventInfo(
                 rli1.epgEventInfoR.original_network_id, rli1.epgEventInfoR.transport_stream_id, rli1.epgEventInfoR.service_id, rli1.epgEventInfoR.event_id);
             EpgEventInfoR epgEventInfoR1 = new EpgEventInfoR(epgEventInfo1, lastUpdate1);
             epgUpdatedCount1++;
             epgEventInfoR1.ID = rli1.epgEventInfoID;
             epgEventInfoR1.lastUpdate = lastUpdate1;
             db_RecLog.updateEpg(epgEventInfoR1);
         }
         else
         {
             epgNotUpdatedCount1++;
         }
     }
     //
     addDBLog("EPG更新(+" + epgUpdatedCount1 + ",-" + epgNotUpdatedCount1 + ") " + lastUpdate1.ToString(_timestampFormat));
 }
Ejemplo n.º 2
0
 void updateReserveInfo()
 {
     DateTime lastUpdate1 = DateTime.Now;
     //
     int reservedCount_New1 = 0;
     int reservedCount_Update1 = 0;
     foreach (ReserveData rd1 in CommonManager.Instance.DB.ReserveList.Values)
     {
         EpgEventInfo epgEventInfo1 = getEpgEventInfo(rd1.OriginalNetworkID, rd1.TransportStreamID, rd1.ServiceID, rd1.EventID);
         if (epgEventInfo1 == null)
         {
             // EPGデータが見つからない
             // 1.EpgEventInfo.eventIDが変更された
             // 2.放送が中止になった
             // 3.EPGデータ更新中
             continue;   // 無視する
             //epgEventInfo1 = new EpgEventInfo();
         }
         EpgEventInfoR epgEventInfoR1 = new EpgEventInfoR(epgEventInfo1, lastUpdate1);
         RecLogItem recLogItem1 = db_RecLog.exists(rd1);
         if (recLogItem1 == null)
         {
             // 新規登録
             reservedCount_New1++;
             RecLogItem recLogItem2 = new RecLogItem()
             {
                 lastUpdate = lastUpdate1,
                 epgEventInfoR = epgEventInfoR1
             };
             if (rd1.RecSetting.RecMode == 0x05)   // 録画モード:無効
             {
                 recLogItem2.recodeStatus = RecLogItem.RecodeStatuses.無効登録;
             }
             else
             {
                 recLogItem2.recodeStatus = RecLogItem.RecodeStatuses.予約済み;
             }
             db_RecLog.insert(recLogItem2);
         }
         else
         {
             //更新
             reservedCount_Update1++;
             recLogItem1.lastUpdate = lastUpdate1;
             if (rd1.RecSetting.RecMode == 0x05)   // 録画モード:無効
             {
                 if (recLogItem1.recodeStatus != RecLogItem.RecodeStatuses.無効登録)
                 {
                     recLogItem1.recodeStatus = RecLogItem.RecodeStatuses.無効登録;
                     reservedCount_New1++;
                 }
             }
             else
             {
                 if (recLogItem1.recodeStatus != RecLogItem.RecodeStatuses.予約済み)
                 {
                     recLogItem1.recodeStatus = RecLogItem.RecodeStatuses.予約済み;
                     reservedCount_New1++;
                 }
             }
             db_RecLog.update(recLogItem1);
         }
     }
     //
     // 予約削除 - 更新されなかったものを対象とする
     //
     List<RecLogItem> list_NotUpdated1 = db_RecLog.select_Reserved_NotUpdated(lastUpdate1);
     List<RecLogItem> list_Deleted1 = new List<RecLogItem>();
     List<RecLogItem> list_RecstatusUpdateErr1 = new List<RecLogItem>();
     foreach (RecLogItem item1 in list_NotUpdated1)
     {
         if (item1.epgEventInfoR != null && lastUpdate1 < item1.epgEventInfoR.start_time)
         {   // 未来に放送
             list_Deleted1.Add(item1);
         }
         else if (item1.recodeStatus == RecLogItem.RecodeStatuses.無効登録)
         {
             // 無効登録を削除
             list_Deleted1.Add(item1);
         }
         else
         {
             // 録画完了?
             list_RecstatusUpdateErr1.Add(item1);
         }
     }
     //
     if (0 < list_RecstatusUpdateErr1.Count)
     {
         addDBLog("ステータス更新失敗:" + list_RecstatusUpdateErr1.Count);
         foreach (RecLogItem logItem1 in list_RecstatusUpdateErr1)
         {
             RecFileInfo rfi1 = null;
             foreach (RecFileInfo rfi2 in CommonManager.Instance.DB.RecFileInfo.Values)
             {
                 if (logItem1.equals(rfi2))
                 {
                     rfi1 = rfi2;
                     break;
                 }
             }
             if (rfi1 != null)
             {
                 if ((RecEndStatus)rfi1.RecStatus == RecEndStatus.NORMAL)
                 {
                     logItem1.recodeStatus = RecLogItem.RecodeStatuses.録画完了;
                 }
                 else
                 {
                     logItem1.recodeStatus = RecLogItem.RecodeStatuses.録画異常;
                 }
             }
             else
             {
                 logItem1.recodeStatus = RecLogItem.RecodeStatuses.不明;
             }
             logItem1.lastUpdate = lastUpdate1;
             db_RecLog.update(logItem1);
         }
     }
     //
     int reservedCount_Removed1 = db_RecLog.delete(list_Deleted1.ToArray());
     //
     addDBLog("予約更新(+" + reservedCount_New1 + ",-" + reservedCount_Removed1 + ") " + lastUpdate1.ToString(_timestampFormat));
     //
     if (0 < reservedCount_New1 || 0 < reservedCount_Removed1)
     {
         _isReserveInfoChanged = true;
     }
 }