Exemplo n.º 1
0
        public static void Hook(string[] providers, Func<StreamIdentity, StreamPubSubMatch[]> matcher)
        {
            var runtimeType = typeof(SiloHost).Assembly.GetType("Orleans.Runtime.Providers.SiloProviderRuntime");
            var runtime = runtimeType.GetProperty("Instance").GetValue(null);

            var grainBasedPubSubField = runtimeType
                .GetField("grainBasedPubSub",
                          BindingFlags.Instance | BindingFlags.NonPublic);

            var combinedGrainBasedAndImplicitPubSub = runtimeType
                .GetField("combinedGrainBasedAndImplicitPubSub",
                          BindingFlags.Instance | BindingFlags.NonPublic);

            Debug.Assert(grainBasedPubSubField != null);
            Debug.Assert(combinedGrainBasedAndImplicitPubSub != null);

            var streamPubSub = (IStreamPubSub) grainBasedPubSubField.GetValue(runtime);
            var wrapper = new StreamPubSubWrapper(providers, streamPubSub, matcher);
            combinedGrainBasedAndImplicitPubSub.SetValue(runtime, wrapper);
        }
Exemplo n.º 2
0
        public static void Hook(string[] providers, Func <StreamIdentity, StreamPubSubMatch[]> matcher)
        {
            var runtimeType = typeof(SiloHost).Assembly.GetType("Orleans.Runtime.Providers.SiloProviderRuntime");
            var runtime     = runtimeType.GetProperty("Instance").GetValue(null);

            var grainBasedPubSubField = runtimeType
                                        .GetField("grainBasedPubSub",
                                                  BindingFlags.Instance | BindingFlags.NonPublic);

            var combinedGrainBasedAndImplicitPubSub = runtimeType
                                                      .GetField("combinedGrainBasedAndImplicitPubSub",
                                                                BindingFlags.Instance | BindingFlags.NonPublic);

            Debug.Assert(grainBasedPubSubField != null);
            Debug.Assert(combinedGrainBasedAndImplicitPubSub != null);

            var streamPubSub = (IStreamPubSub)grainBasedPubSubField.GetValue(runtime);
            var wrapper      = new StreamPubSubWrapper(providers, streamPubSub, matcher);

            combinedGrainBasedAndImplicitPubSub.SetValue(runtime, wrapper);
        }