Example #1
0
        public IAsyncReactiveQbservable <TrafficInfo> GetRealTrafficInfoObservable(TrafficParameters parameters)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }

            bool hasValidRoute = (!string.IsNullOrEmpty(parameters.StartAddress) && !string.IsNullOrEmpty(parameters.EndAddress)) ||
                                 (!string.IsNullOrEmpty(parameters.RouteId));

            if (!hasValidRoute)
            {
                throw new ArgumentException(string.Format(
                                                "Invalid TrafficParameters: Either [start address:{0} and end address{1}] OR [routeid:{2}] must be provided",
                                                parameters.StartAddress,
                                                parameters.EndAddress,
                                                parameters.RouteId));
            }

            var tuple = new Tuple <string, string, string, int, int>(
                parameters.StartAddress,
                parameters.EndAddress,
                parameters.RouteId,
                parameters.FlowParameters == null ? int.MaxValue : parameters.FlowParameters.NotificationThresholdInSeconds,
                parameters.FlowParameters == null ? int.MaxValue : parameters.FlowParameters.RenotificationThresholdInSeconds);

            return(GetObservable <TrafficParameters, TrafficInfo>(Constants.Observable.Real.TrafficInfo.Uri)(parameters));
        }
Example #2
0
        public IAsyncReactiveQbservable <TrafficInfo> GetTrafficInfoObservable(TrafficParameters parameters)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException(nameof(parameters));
            }

            bool hasValidRoute = (!string.IsNullOrEmpty(parameters.StartAddress) && !string.IsNullOrEmpty(parameters.EndAddress)) ||
                                 (!string.IsNullOrEmpty(parameters.RouteId));

            if (!hasValidRoute)
            {
                throw new ArgumentException(string.Format(
                                                "Invalid TrafficParameters: Either [start address:{0} and end address{1}] OR [routeid:{2}] must be provided",
                                                parameters.StartAddress,
                                                parameters.EndAddress,
                                                parameters.RouteId));
            }

            // TODO: Make a note for a design review - this logic won't execute
            //       if the GetTrafficInfoObservable is used in an inner position,
            //       e.g. inside a SelectMany.
            var tuple = new Tuple <string, string, string, int, int>(
                parameters.StartAddress,
                parameters.EndAddress,
                parameters.RouteId,
                parameters.FlowParameters == null ? int.MaxValue : parameters.FlowParameters.NotificationThresholdInSeconds,
                parameters.FlowParameters == null ? int.MaxValue : parameters.FlowParameters.RenotificationThresholdInSeconds);

            return(GetObservable <TrafficParameters, TrafficInfo>(Constants.Observable.Synthetic.TrafficInfo.Uri)(parameters));
        }