public override void DeleteRecordingJob(string JobToken) { GetRecordingJobsResponseItem job = Search.SearchStorage.Instance.RecordingJobs.Where(j => j.JobToken == JobToken).FirstOrDefault(); if (job == null) { ReturnFault(new string[] { "Sender", "InvalidArgVal", "NoRecordingJob" }); } else { Search.SearchStorage.Instance.RecordingJobs.Remove(job); } }
public RecordingJobConfiguration GetRecordingJobConfiguration(string token) { RecordingJobConfiguration config = null; GetRecordingJobsResponseItem item = RecordingJobs.Where(j => j.JobToken == token).FirstOrDefault(); if (item != null) { config = item.JobConfiguration; } return(config); }
public override string CreateRecordingJob(ref RecordingJobConfiguration JobConfiguration) { if (Search.SearchStorage.Instance.RecordingJobs.Count > 5) { ReturnFault(new string[] { "Receiver", "Action", "MaxRecordingJobs" }); } GetRecordingJobsResponseItem job = new GetRecordingJobsResponseItem(); job.JobToken = "job" + Guid.NewGuid().ToString().Substring(0, 8); job.JobConfiguration = JobConfiguration; if (JobConfiguration.Source != null) { foreach (RecordingJobSource source in JobConfiguration.Source) { if (source.AutoCreateReceiverSpecified && source.AutoCreateReceiver) { Receiver.Receiver receiver = new Receiver.Receiver(); receiver.Token = Guid.NewGuid().ToString(); receiver.Configuration = new CameraWebService.Receiver.ReceiverConfiguration(); receiver.Configuration.StreamSetup = new CameraWebService.Receiver.StreamSetup(); receiver.Configuration.MediaUri = string.Empty; receiver.Configuration.StreamSetup.Stream = CameraWebService.Receiver.StreamType.RTPUnicast; receiver.Configuration.StreamSetup.Transport = new CameraWebService.Receiver.Transport(); receiver.Configuration.StreamSetup.Transport.Protocol = CameraWebService.Receiver.TransportProtocol.RTSP; source.SourceToken = new SourceReference(); source.SourceToken.Token = receiver.Token; source.SourceToken.Type = "http://www.onvif.org/ver10/schema/Receiver"; Search.SearchStorage.Instance.Receivers.Add(receiver); } } } Search.SearchStorage.Instance.RecordingJobs.Add(job); Search.SearchStorage.Instance.JobStates.Add(job.JobToken, JobConfiguration.Mode); return(job.JobToken); }
private void CompareJobStates(GetRecordingJobsResponseItem job, RecordingJobStateInformation jobState) { StringBuilder logger = new StringBuilder(); bool ok = true; if (job.JobConfiguration.RecordingToken != jobState.RecordingToken) { ok = false; logger.Append(string.Format(" Recording tokens in JobResponse and in JobStateResponse are different{0}", Environment.NewLine)); } if (job.JobConfiguration.Source != null && jobState.Sources != null) { var jobStateSourceList = jobState.Sources; var jobSourceList = job.JobConfiguration.Source; foreach (var source in jobSourceList) { var jobStateSource = jobStateSourceList.FirstOrDefault( s => s.SourceToken.Token == source.SourceToken.Token && s.SourceToken.Type == source.SourceToken.Type); if (jobStateSource == null) { ok = false; logger.Append(string.Format( " Source list in GetRecordingJobStateResponse doesn't contain " + "source with SourceToken='{0}' and Type='{1}'{2}", source.SourceToken.Token, source.SourceToken.Type, Environment.NewLine)); } else { if (source.Tracks == null && (jobStateSource.Tracks == null || jobStateSource.Tracks.Track == null)) { if (jobStateSource.Tracks == null || jobStateSource.Tracks.Track == null) { ok = false; logger.Append(string.Format( " Recording job source '{0}' in GetRecordingJobStateResponse don't contain track list{1}", jobStateSource.SourceToken.Token, Environment.NewLine)); } if (source.Tracks == null) { ok = false; logger.Append(string.Format( " Recording job source '{0}' in GetRecordingJobsResponse don't contain track list{1}", source.SourceToken.Token, Environment.NewLine)); } } else { var jobStateTrackList = jobStateSource.Tracks.Track; var jobTrackList = source.Tracks; foreach (var track in jobTrackList) { var jobStateTrack = jobStateTrackList.FirstOrDefault( t => t.SourceTag == track.SourceTag && t.Destination == track.Destination); if (jobStateTrack == null) { ok = false; logger.Append(string.Format( " Source {0} in GetRecordingJobStateResponse doesn't " + "contain track with Tag='{1}' and Destination='{2}' which is " + "contained in GetRecordingJobsResponse{3}", source.SourceToken.Token, track.SourceTag, track.Destination, Environment.NewLine)); } } foreach (var track in jobStateTrackList) { var jobTrack = jobTrackList.FirstOrDefault( t => t.SourceTag == track.SourceTag && t.Destination == track.Destination); if (jobTrack == null) { ok = false; logger.Append(string.Format( " Source {0} in GetRecordingJobsResponse doesn't " + "contain track with Tag='{1}' and Destination='{2}' which is " + "contained in GetRecordingJobStateResponse{3}", source.SourceToken.Token, track.SourceTag, track.Destination, Environment.NewLine)); } } } } } foreach (var source in jobStateSourceList) { var jobSource = jobSourceList.FirstOrDefault(s => s.SourceToken.Token == source.SourceToken.Token && s.SourceToken.Type == source.SourceToken.Type); if (jobSource == null) { ok = false; logger.Append(string.Format( " Source list in GetRecordingJobsResponse doesn't contain " + "source with SourceToken='{0}' and Type='{1}'{2}", source.SourceToken.Token, source.SourceToken.Type, Environment.NewLine)); } } } else { if (job.JobConfiguration.Source == null && jobState.Sources != null) { ok = false; logger.Append(string.Format(" Job with token = '{0}' in GetRecordingJobsResponse" + " doesn't contain Source list{1}", job.JobToken, Environment.NewLine)); } if (jobState.Sources == null && job.JobConfiguration.Source != null) { ok = false; logger.Append(string.Format(" Job with token = '{0}' in GetRecordingJobStateResponse doesn't contain Source list{1}", job.JobToken, Environment.NewLine)); } } Assert(ok, logger.ToStringTrimNewLine(), "Validate RecordingJobStateResponse"); }