public override FindRecordingResultList GetRecordingSearchResults(string SearchToken, int MinResults, bool MinResultsSpecified, int MaxResults, bool MaxResultsSpecified, string WaitTime) { RecordingSearchSession session = SearchSessionManager.Instance.GetSession(SearchToken) as RecordingSearchSession; if (session != null) { IList <RecordingInformation> data = (IList <RecordingInformation>)session.Data; // all data received if (data.Count == 0) { CommonUtils.ReturnFault(new string[] { "Sender", "InvalidArgVal", "InvalidToken" }); return(null); } FindRecordingResultList list = new FindRecordingResultList(); Random rnd = new Random(); int cnt = Math.Min(rnd.Next(1, 4), data.Count); rnd = new Random(); int sleep = rnd.Next(1, 3); System.Threading.Thread.Sleep(400 * sleep + 450); list.RecordingInformation = new RecordingInformation[cnt]; for (int i = 0; i < cnt; i++) { list.RecordingInformation[i] = data[0]; data.RemoveAt(0); } session.ResultsSent = session.ResultsSent + cnt; list.SearchState = data.Count > 0 ? SearchState.Searching : SearchState.Completed; if (data.Count == 0) { SearchSessionManager.Instance.Sessions.Remove(session); } return(list); } else { CommonUtils.ReturnFault(new string[] { "Sender", "InvalidArgVal", "InvalidToken" }); return(null); } }
public override string FindRecordings(SearchScope Scope, int MaxMatches, bool MaxMatchesSpecified, string KeepAliveTime) { string token = SearchSessionManager.Instance.GetNextToken(); int keepAliveTime = 0; string strKeepAlive = KeepAliveTime.Substring(2, KeepAliveTime.Length - 3); keepAliveTime = int.Parse(strKeepAlive); if (KeepAliveTime.EndsWith("M")) { keepAliveTime = keepAliveTime * 60; } RecordingSearchSession session = new RecordingSearchSession() { KeepAlive = keepAliveTime, Token = token, Started = System.DateTime.Now, LastRequest = System.DateTime.Now }; //SearchStorage.Instance.ClearRecordings(); //SearchStorage.Instance.ChangeRecordingsGeneration(); List <RecordingInformation> filtered; if (Scope != null) { string filter = Scope.RecordingInformationFilter; if (filter.Contains("Video")) { filtered = SearchStorage.Instance.Recordings.Where( R => R.Track.Where(T => T.TrackType == Search.TrackType.Video).Count() > 0).ToList(); } else if (filter.Contains("Audio")) { filtered = SearchStorage.Instance.Recordings.Where( R => R.Track.Where(T => T.TrackType == Search.TrackType.Audio).Count() > 0).ToList(); } else if (filter.Contains("Metadata")) { filtered = SearchStorage.Instance.Recordings.Where( R => R.Track.Where(T => T.TrackType == Search.TrackType.Metadata).Count() > 0).ToList(); } else { filtered = SearchStorage.Instance.Recordings; } } else { filtered = SearchStorage.Instance.Recordings; } List <RecordingInformation> list; if (MaxMatchesSpecified) { list = new List <RecordingInformation>(); for (int i = 0; i < Math.Min(MaxMatches, filtered.Count); i++) { list.Add(SearchStorage.Instance.Recordings[i]); } } else { list = new List <RecordingInformation>(filtered); } session.Data = list; SearchSessionManager.Instance.Sessions.Add(session); return(token); }