Permalink
Browse files

import 5526a6f490db, official Rx 2.1 release.

  • Loading branch information...
1 parent 287eca3 commit 4d702d6c69ca2645a61a2978b527027aaed4b997 @atsushieno atsushieno committed Feb 8, 2013
@@ -88,7 +88,7 @@
<CreateItem Include="@(Flavor)" AdditionalMetadata="Properties=Configuration=%(Flavor.Configuration)%3BPlatform=Any CPU%3BOutDir=$(LayoutOutputFolder)\%(Flavor.Configuration)\">
<Output TaskParameter="Include" ItemName="ProjectToBuild" />
</CreateItem>
- <CreateItem Include="Setup\BuildAll.proj" AdditionalMetadata="Properties=BinariesLayoutFolder=$(LayoutOutputFolder)%3BOutDir=$(SetupOutputFolder)" Condition=" '$(BuildSetup)' == '1' ">
+ <CreateItem Include="..\..\Private\Setup\BuildAll.proj" AdditionalMetadata="Properties=BinariesLayoutFolder=$(LayoutOutputFolder)%3BOutDir=$(SetupOutputFolder)" Condition=" '$(BuildSetup)' == '1' ">
<Output TaskParameter="Include" ItemName="SetupToBuild" />
</CreateItem>
</Target>
@@ -1 +1,5 @@
-msbuild BuildAll.proj /p:BuildSetup=1 /p:BuildNumber=0.9.0.0 /p:RxRelease=EXPERIMENTAL
+@REM msbuild BuildAll.proj /p:BuildSetup=1 /p:BuildNumber=2.0.30116.0 /p:RxRelease=EXPERIMENTAL
+
+@REM I've had good success with /t:Rebuild. But will omit it for speed.
+@REM msbuild BuildAll.proj /t:Rebuild /p:BuildSetup=1 /p:SignedBuild=1 /p:BuildNumber=2.1.30201.0 /p:RxRelease=RTM
+msbuild BuildAll.proj /p:BuildSetup=1 /p:SignedBuild=1 /p:BuildNumber=2.1.30201.0 /p:RxRelease=RTM
@@ -93,7 +93,7 @@
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile78</TargetFrameworkProfile>
<NoStdLib>true</NoStdLib>
- <SignKeyEnhanced>true</SignKeyEnhanced>
+ <!-- <SignKeyEnhanced>true</SignKeyEnhanced> Disabled due to CLR signing bug w/ SHA2 keys blocking Windows Phone 8 apps from being signed. -->
</PropertyGroup>
<PropertyGroup Condition=" '$(BuildTarget)' == '45' ">
@@ -102,7 +102,7 @@
<NoStdLib>true</NoStdLib>
<BuildPlatform>DESKTOPCLR</BuildPlatform>
<BuildFlavor>DESKTOPCLR45</BuildFlavor>
- <SignKeyEnhanced>true</SignKeyEnhanced>
+ <!-- <SignKeyEnhanced>true</SignKeyEnhanced> Disabled due to CLR signing bug w/ SHA2 keys blocking Windows Phone 8 apps from being signed. -->
</PropertyGroup>
<PropertyGroup Condition=" '$(BuildTarget)' == '8' ">
@@ -113,7 +113,7 @@
<BuildPlatform>WINDOWS</BuildPlatform>
<BuildFlavor>WINDOWS8</BuildFlavor>
<DefaultLanguage>en-US</DefaultLanguage>
- <SignKeyEnhanced>true</SignKeyEnhanced>
+ <!-- <SignKeyEnhanced>true</SignKeyEnhanced> Disabled due to CLR signing bug w/ SHA2 keys blocking Windows Phone 8 apps from being signed. -->
</PropertyGroup>
<PropertyGroup Condition=" '$(BuildTarget)' == '40' ">
@@ -153,7 +153,7 @@
<BuildPlatform>WINDOWS_PHONE</BuildPlatform>
<BuildFlavor>WINDOWS_PHONE8</BuildFlavor>
<NoStdLib>true</NoStdLib>
- <SignKeyEnhanced>true</SignKeyEnhanced>
+ <!-- <SignKeyEnhanced>true</SignKeyEnhanced> Disabled due to CLR signing bug w/ SHA2 keys blocking Windows Phone 8 apps from being signed. -->
</PropertyGroup>
<PropertyGroup Condition=" '$(BuildTarget)' == 'XBLV' ">
@@ -65,6 +65,20 @@ public static Recorded<Notification<T>> OnCompleted<T>(long ticks)
}
/// <summary>
+ /// Factory method for an OnCompleted notification record at a given time.
+ /// </summary>
+ /// <typeparam name="T">The element type for the resulting notification object.</typeparam>
+ /// <param name="dummy">An unused instance of type T, to force the compiler to infer that T as part of the method's return value.</param>
+ /// <param name="ticks">Recorded virtual time the OnCompleted notification occurs.</param>
+ /// <returns>Recorded OnCompleted notification.</returns>
+ /// <remarks>This overload is used for anonymous types - by passing in an instance of the type, the compiler can infer the
+ /// anonymous type without you having to try naming the type.</remarks>
+ public static Recorded<Notification<T>> OnCompleted<T>(T dummy, long ticks)
+ {
+ return new Recorded<Notification<T>>(ticks, Notification.CreateOnCompleted<T>());
+ }
+
+ /// <summary>
/// Factory method for an OnError notification record at a given time with a given error.
/// </summary>
/// <typeparam name="T">The element type for the resulting notification object.</typeparam>
@@ -97,6 +111,44 @@ public static Recorded<Notification<T>> OnError<T>(long ticks, Func<Exception, b
}
/// <summary>
+ /// Factory method for an OnError notification record at a given time with a given error.
+ /// </summary>
+ /// <typeparam name="T">The element type for the resulting notification object.</typeparam>
+ /// <param name="dummy">An unused instance of type T, to force the compiler to infer that T as part of the method's return value.</param>
+ /// <param name="ticks">Recorded virtual time the OnError notification occurs.</param>
+ /// <param name="exception">Recorded exception stored in the OnError notification.</param>
+ /// <returns>Recorded OnError notification.</returns>
+ /// <exception cref="ArgumentNullException"><paramref name="exception"/> is null.</exception>
+ /// <remarks>This overload is used for anonymous types - by passing in an instance of the type, the compiler can infer the
+ /// anonymous type without you having to try naming the type.</remarks>
+ public static Recorded<Notification<T>> OnError<T>(T dummy, long ticks, Exception exception)
+ {
+ if (exception == null)
+ throw new ArgumentNullException("exception");
+
+ return new Recorded<Notification<T>>(ticks, Notification.CreateOnError<T>(exception));
+ }
+
+ /// <summary>
+ /// Factory method for writing an assert that checks for an OnError notification record at a given time, using the specified predicate to check the exception.
+ /// </summary>
+ /// <typeparam name="T">The element type for the resulting notification object.</typeparam>
+ /// <param name="dummy">An unused instance of type T, to force the compiler to infer that T as part of the method's return value.</param>
+ /// <param name="ticks">Recorded virtual time the OnError notification occurs.</param>
+ /// <param name="predicate">Predicate function to check the OnError notification value against an expected exception.</param>
+ /// <returns>Recorded OnError notification with a predicate to assert a given exception.</returns>
+ /// <exception cref="ArgumentNullException"><paramref name="predicate"/> is null.</exception>
+ /// <remarks>This overload is used for anonymous types - by passing in an instance of the type, the compiler can infer the
+ /// anonymous type without you having to try naming the type.</remarks>
+ public static Recorded<Notification<T>> OnError<T>(T dummy, long ticks, Func<Exception, bool> predicate)
+ {
+ if (predicate == null)
+ throw new ArgumentNullException("predicate");
+
+ return new Recorded<Notification<T>>(ticks, new OnErrorPredicate<T>(predicate));
+ }
+
+ /// <summary>
/// Factory method for a subscription record based on a given subscription and disposal time.
/// </summary>
/// <param name="start">Virtual time indicating when the subscription was created.</param>
View
@@ -1,11 +1,18 @@
-Build Instructions
+To build all flavors of Rx, you will need several different SDK's installed:
-In order to be able to build all configurations listed in the Visual Studio solution, the following
-components need to be installed:
- * Windows Phone 8 SDK (https://dev.windowsphone.com/en-us/downloadsdk)
- * Visual Studio SDK for building VS extensions, VSIX (http://www.microsoft.com/en-us/download/details.aspx?id=30668)
- * Windows Installer Xml (WiX) toolset (http://wix.codeplex.com)
+Visual Studio 2012
+Windows Phone 8 SDK (create.msdn.com)
+Windows Phone 7.1 SDK (create.msdn.com)
+Silverlight 4 SDK
+Microsoft Silverlight 4 Tools for Visual Studio 2010
+Xbox XNA Game Studio 4.0*
- To build the XNA components, you need to install the Xbox XNA Game Studio 4.0.
- Instructions on how install the required XNA components on Windows 8 are available at the
- following link: http://blogs.msdn.com/b/astebner/archive/2012/02/29/10274694.aspx
+* Note: Installing Xbox XNA Game Studio is tricky on Windows 8, as you must install some other dependencies first.
+ More information can be found here: http://blogs.msdn.com/b/astebner/archive/2012/02/29/10274694.aspx
+
+For building installers and Visual Studio extensions, we need the following installed:
+Visual Studio 2012 SDK
+Windows Installer XML (WiX) toolset (wix.codeplex.com), preferably version 3.5.
+
+
+Note: the XNA Game Studio build has not been actively maintained and may not build. Feel free to fix it!
View
@@ -45,10 +45,10 @@ Global
GlobalSection(TeamFoundationVersionControl) = preSolution
SccNumberOfProjects = 1
SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
- SccTeamFoundationServer = https://tfs1.interop.msftlabs.com/tfs/interop%20team%20projects
+ SccTeamFoundationServer = http://tfs1:8085/tfs/interop%20team%20projects
SccProjectUniqueName0 = Playground\\Playground.csproj
SccProjectName0 = Playground
- SccAuxPath0 = https://tfs1.interop.msftlabs.com/tfs/interop%20team%20projects
+ SccAuxPath0 = http://tfs1:8085/tfs/interop%20team%20projects
SccLocalPath0 = Playground
SccProvider0 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
EndGlobalSection
@@ -694,10 +694,15 @@ internal interface IQueryLanguage
IObservable<TResult> Select<TSource, TResult>(IObservable<TSource> source, Func<TSource, int, TResult> selector);
IObservable<TOther> SelectMany<TSource, TOther>(IObservable<TSource> source, IObservable<TOther> other);
IObservable<TResult> SelectMany<TSource, TResult>(IObservable<TSource> source, Func<TSource, IObservable<TResult>> selector);
+ IObservable<TResult> SelectMany<TSource, TResult>(IObservable<TSource> source, Func<TSource, int, IObservable<TResult>> selector);
IObservable<TResult> SelectMany<TSource, TCollection, TResult>(IObservable<TSource> source, Func<TSource, IObservable<TCollection>> collectionSelector, Func<TSource, TCollection, TResult> resultSelector);
+ IObservable<TResult> SelectMany<TSource, TCollection, TResult>(IObservable<TSource> source, Func<TSource, int, IObservable<TCollection>> collectionSelector, Func<TSource, int, TCollection, int, TResult> resultSelector);
IObservable<TResult> SelectMany<TSource, TResult>(IObservable<TSource> source, Func<TSource, IObservable<TResult>> onNext, Func<Exception, IObservable<TResult>> onError, Func<IObservable<TResult>> onCompleted);
+ IObservable<TResult> SelectMany<TSource, TResult>(IObservable<TSource> source, Func<TSource, int, IObservable<TResult>> onNext, Func<Exception, int, IObservable<TResult>> onError, Func<int, IObservable<TResult>> onCompleted);
IObservable<TResult> SelectMany<TSource, TResult>(IObservable<TSource> source, Func<TSource, IEnumerable<TResult>> selector);
+ IObservable<TResult> SelectMany<TSource, TResult>(IObservable<TSource> source, Func<TSource, int, IEnumerable<TResult>> selector);
IObservable<TResult> SelectMany<TSource, TCollection, TResult>(IObservable<TSource> source, Func<TSource, IEnumerable<TCollection>> collectionSelector, Func<TSource, TCollection, TResult> resultSelector);
+ IObservable<TResult> SelectMany<TSource, TCollection, TResult>(IObservable<TSource> source, Func<TSource, int, IEnumerable<TCollection>> collectionSelector, Func<TSource, int, TCollection, int, TResult> resultSelector);
IObservable<TSource> Skip<TSource>(IObservable<TSource> source, int count);
IObservable<TSource> SkipWhile<TSource>(IObservable<TSource> source, Func<TSource, bool> predicate);
IObservable<TSource> SkipWhile<TSource>(IObservable<TSource> source, Func<TSource, int, bool> predicate);
@@ -511,6 +511,30 @@ public static IObservable<TSource> StartWith<TSource>(this IObservable<TSource>
/// </summary>
/// <typeparam name="TSource">The type of the elements in the source sequence.</typeparam>
/// <param name="source">Source sequence to prepend values to.</param>
+ /// <param name="values">Values to prepend to the specified sequence.</param>
+ /// <returns>The source sequence prepended with the specified values.</returns>
+ /// <exception cref="ArgumentNullException"><paramref name="source"/> or <paramref name="values"/> is null.</exception>
+ public static IObservable<TSource> StartWith<TSource>(this IObservable<TSource> source, IEnumerable<TSource> values)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (values == null)
+ throw new ArgumentNullException("values");
+
+ TSource[] valueArray = values as TSource[];
+ if (valueArray == null)
+ {
+ List<TSource> valueList = new List<TSource>(values);
+ valueArray = valueList.ToArray();
+ }
+ return s_impl.StartWith<TSource>(source, valueArray);
+ }
+
+ /// <summary>
+ /// Prepends a sequence of values to an observable sequence.
+ /// </summary>
+ /// <typeparam name="TSource">The type of the elements in the source sequence.</typeparam>
+ /// <param name="source">Source sequence to prepend values to.</param>
/// <param name="scheduler">Scheduler to emit the prepended values on.</param>
/// <param name="values">Values to prepend to the specified sequence.</param>
/// <returns>The source sequence prepended with the specified values.</returns>
@@ -527,6 +551,33 @@ public static IObservable<TSource> StartWith<TSource>(this IObservable<TSource>
return s_impl.StartWith<TSource>(source, scheduler, values);
}
+ /// <summary>
+ /// Prepends a sequence of values to an observable sequence.
+ /// </summary>
+ /// <typeparam name="TSource">The type of the elements in the source sequence.</typeparam>
+ /// <param name="source">Source sequence to prepend values to.</param>
+ /// <param name="scheduler">Scheduler to emit the prepended values on.</param>
+ /// <param name="values">Values to prepend to the specified sequence.</param>
+ /// <returns>The source sequence prepended with the specified values.</returns>
+ /// <exception cref="ArgumentNullException"><paramref name="source"/> or <paramref name="scheduler"/> or <paramref name="values"/> is null.</exception>
+ public static IObservable<TSource> StartWith<TSource>(this IObservable<TSource> source, IScheduler scheduler, IEnumerable<TSource> values)
+ {
+ if (source == null)
+ throw new ArgumentNullException("source");
+ if (scheduler == null)
+ throw new ArgumentNullException("scheduler");
+ if (values == null)
+ throw new ArgumentNullException("values");
+
+ TSource[] valueArray = values as TSource[];
+ if (valueArray == null)
+ {
+ List<TSource> valueList = new List<TSource>(values);
+ valueArray = valueList.ToArray();
+ }
+ return s_impl.StartWith<TSource>(source, scheduler, valueArray);
+ }
+
#endregion
#region + TakeLast +
Oops, something went wrong.

0 comments on commit 4d702d6

Please sign in to comment.