1- using System ;
2- using System . Collections . Generic ;
3- using System . Linq ;
4- using JacRed . Engine ;
1+ using JacRed . Engine ;
52using JacRed . Engine . CORE ;
63using JacRed . Models ;
74using JacRed . Models . Details ;
85using JacRed . Models . Sync . v2 ;
96using Microsoft . AspNetCore . Mvc ;
7+ using System ;
8+ using System . Collections . Generic ;
9+ using System . Linq ;
10+ using System . Threading ;
11+ using System . Threading . Tasks ;
1012
1113namespace JacRed . Controllers
1214{
1315 public class SyncController : BaseController
1416 {
15- private static readonly object masterDbCacheLock = new object ( ) ;
16- private static Dictionary < string , TorrentInfo > masterDbCache ;
17- private static DateTime masterDbCacheUpdated = DateTime . MinValue ;
17+ static Dictionary < string , TorrentInfo > masterDbCache ;
18+
19+ public static void Configuration ( )
20+ {
21+ masterDbCache = FileDB . masterDb . OrderBy ( i => i . Value . fileTime ) . ToDictionary ( k => k . Key , v => v . Value ) ;
22+
23+ ThreadPool . QueueUserWorkItem ( async _ =>
24+ {
25+ while ( true )
26+ {
27+ await Task . Delay ( TimeSpan . FromMinutes ( 10 ) ) ;
28+ try { masterDbCache = FileDB . masterDb . OrderBy ( i => i . Value . fileTime ) . ToDictionary ( k => k . Key , v => v . Value ) ; } catch { }
29+ }
30+ } ) ;
31+ }
32+
1833
1934 [ Route ( "/sync/conf" ) ]
20- public JsonResult Configuration ( )
35+ public JsonResult SyncConf ( )
2136 {
2237 return Json ( new
2338 {
@@ -52,19 +67,6 @@ public ActionResult FdbTorrents(long time, long start = -1, bool spidr = false)
5267 bool nextread = false ;
5368 int take = 2_000 , countread = 0 ;
5469 var collections = new List < Collection > ( take ) ;
55-
56- // Use static cache updated every 10 minutes
57- if ( masterDbCache == null || ( DateTime . Now - masterDbCacheUpdated ) > TimeSpan . FromMinutes ( 10 ) )
58- {
59- lock ( masterDbCacheLock )
60- {
61- if ( masterDbCache == null || ( DateTime . Now - masterDbCacheUpdated ) > TimeSpan . FromMinutes ( 10 ) )
62- {
63- masterDbCache = FileDB . masterDb . OrderBy ( i => i . Value . fileTime ) . ToDictionary ( k => k . Key , v => v . Value ) ;
64- masterDbCacheUpdated = DateTime . Now ;
65- }
66- }
67- }
6870
6971 foreach ( var item in masterDbCache . Where ( i => i . Value . fileTime > time ) )
7072 {
@@ -85,16 +87,18 @@ public ActionResult FdbTorrents(long time, long start = -1, bool spidr = false)
8587
8688 if ( t . Value . ffprobe == null || t . Value . languages == null )
8789 {
88- var _t = ( TorrentDetails ) t . Value . Clone ( ) ;
89-
90- var streams = TracksDB . Get ( _t . magnet , _t . types ) ;
90+ var streams = TracksDB . Get ( t . Value . magnet , t . Value . types , onlydb : true ) ;
9191 if ( streams != null )
9292 {
93+ var _t = ( TorrentDetails ) t . Value . Clone ( ) ;
9394 _t . ffprobe = streams ;
9495 _t . languages = TracksDB . Languages ( _t , streams ) ;
96+ torrent . TryAdd ( t . Key , _t ) ;
97+ }
98+ else
99+ {
100+ torrent . TryAdd ( t . Key , t . Value ) ;
95101 }
96-
97- torrent . TryAdd ( t . Key , _t ) ;
98102 }
99103 else
100104 {
@@ -137,19 +141,6 @@ public JsonResult Torrents(long time)
137141
138142 int take = 2_000 ;
139143 var torrents = new List < Models . Sync . v1 . Torrent > ( take + 1 ) ;
140-
141- // Use static cache updated every 10 minutes
142- if ( masterDbCache == null || ( DateTime . Now - masterDbCacheUpdated ) > TimeSpan . FromMinutes ( 10 ) )
143- {
144- lock ( masterDbCacheLock )
145- {
146- if ( masterDbCache == null || ( DateTime . Now - masterDbCacheUpdated ) > TimeSpan . FromMinutes ( 10 ) )
147- {
148- masterDbCache = FileDB . masterDb . OrderBy ( i => i . Value . fileTime ) . ToDictionary ( k => k . Key , v => v . Value ) ;
149- masterDbCacheUpdated = DateTime . Now ;
150- }
151- }
152- }
153144
154145 foreach ( var item in masterDbCache . Where ( i => i . Value . fileTime > time ) )
155146 {
@@ -158,7 +149,7 @@ public JsonResult Torrents(long time)
158149 var _t = ( TorrentDetails ) torrent . Value . Clone ( ) ;
159150 _t . updateTime = item . Value . updateTime ;
160151
161- var streams = TracksDB . Get ( _t . magnet , _t . types ) ;
152+ var streams = TracksDB . Get ( _t . magnet , _t . types , onlydb : true ) ;
162153 if ( streams != null )
163154 {
164155 _t . ffprobe = streams ;
0 commit comments