You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@reef.apache.org by we...@apache.org on 2015/02/06 21:33:26 UTC

[4/4] incubator-reef git commit: [REEF-142] Updated project structure for REEF.NET Examples

[REEF-142] Updated project structure for REEF.NET Examples

  This is to change .Net project structure for examples

    * Move project folders under cs
    * Rename projects to follow name convention
    * Update namespace for projects
    * Update csproj file for the references

JIRA:
  [REEF-142] https://issues.apache.org/jira/browse/REEF-142

Pull Request:
  This closes #70


Project: http://git-wip-us.apache.org/repos/asf/incubator-reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-reef/commit/a7df272d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-reef/tree/a7df272d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-reef/diff/a7df272d

Branch: refs/heads/master
Commit: a7df272d10ae1c00f259feb0a18a27586f685574
Parents: b6c4e98
Author: Julia Wang <jw...@yahoo.com>
Authored: Thu Feb 5 19:59:24 2015 -0800
Committer: Markus Weimer <we...@apache.org>
Committed: Fri Feb 6 12:31:18 2015 -0800

----------------------------------------------------------------------
 .../HelloTraceListener.cs                       |  48 +++
 ...g.Apache.REEF.Examples.HelloCLRBridge.csproj | 138 ++++++
 .../Properties/AssemblyInfo.cs                  |  55 +++
 .../AnotherHelloAllocatedEvaluatorHandler.cs    |  48 +++
 .../handlers/HelloActiveContextHandler.cs       |  83 ++++
 .../handlers/HelloAllocatedEvaluatorHandler.cs  | 132 ++++++
 .../handlers/HelloCompletedEvaluatorHandler.cs  |  59 +++
 .../HelloDriverRestartActiveContextHandler.cs   |  69 +++
 .../HelloDriverRestartRunningTaskHandler.cs     |  67 +++
 .../handlers/HelloEvaluatorRequestorHandler.cs  |  65 +++
 .../handlers/HelloFailedEvaluatorHandler.cs     |  68 +++
 .../handlers/HelloFailedTaskHandler.cs          |  67 +++
 .../handlers/HelloHttpHandler.cs                |  51 +++
 .../handlers/HelloRestartHandler.cs             |  48 +++
 .../handlers/HelloRunningTaskHandler.cs         |  65 +++
 .../handlers/HelloSimpleEventHandlers.cs        | 422 +++++++++++++++++++
 .../handlers/HelloStartHandler.cs               |  65 +++
 .../handlers/HelloTaskMessageHandler.cs         |  54 +++
 ...e.REEF.Examples.RetainedEvalCLRBridge.csproj | 122 ++++++
 .../Properties/AssemblyInfo.cs                  |  55 +++
 .../handler/RetainedEvalActiveContextHandler.cs |  56 +++
 .../RetainedEvalAllocatedEvaluatorHandler.cs    |  48 +++
 .../RetainedEvalEvaluatorRequestorHandler.cs    |  48 +++
 .../handler/RetainedEvalStartHandler.cs         |  90 ++++
 .../FailedTask/FailedTask.cs                    |  45 ++
 .../HelloTask/HelloService.cs                   |  58 +++
 .../HelloTask/HelloTask.cs                      | 124 ++++++
 .../HelloTask/HelloTaskMessage.cs               |  50 +++
 .../Org.Apache.REEF.Examples.Tasks.csproj       | 117 +++++
 .../Properties/AssemblyInfo.cs                  |  55 +++
 .../ShellTask/ShellTask.cs                      |  91 ++++
 .../StreamingTasks/StreamTask1.cs               |  67 +++
 .../StreamingTasks/StreamTask2.cs               |  51 +++
 .../Org.Apache.REEF.Tang.Examples/FileNames.cs  |   2 +-
 .../ClassHierarchy/TestClassHierarchy.cs        |   5 +-
 .../ClassHierarchy/TestSerilization.cs          |  22 +-
 .../Configuration/TestAvroConfiguration.cs      |   1 +
 .../Configuration/TestConfiguration.cs          |   9 +-
 .../Format/TestTaskConfiguration.cs             |  11 +-
 .../Injection/TestInjection.cs                  |   2 +
 .../Org.Apache.REEF.Tang.Tests.csproj           |   8 +-
 .../Org.Apache.REEF.Tang.Tools.csproj           |   8 +-
 lang/cs/Org.Apache.REEF.Tang.Tools/Program.cs   |   3 +
 lang/cs/ReefDotNet.sln                          |  60 +--
 .../CLRBridgeClient/CLRBridgeClient.cs          |   1 +
 .../CLRBridgeClient/CLRBridgeClient.csproj      |  20 +-
 .../HelloCLRBridge/HelloCLRBridge.csproj        | 138 ------
 .../HelloCLRBridge/HelloTraceListener.cs        |  48 ---
 .../HelloCLRBridge/Properties/AssemblyInfo.cs   |  55 ---
 .../AnotherHelloAllocatedEvaluatorHandler.cs    |  48 ---
 .../handlers/HelloActiveContextHandler.cs       |  82 ----
 .../handlers/HelloAllocatedEvaluatorHandler.cs  | 131 ------
 .../handlers/HelloCompletedEvaluatorHandler.cs  |  59 ---
 .../HelloDriverRestartActiveContextHandler.cs   |  69 ---
 .../HelloDriverRestartRunningTaskHandler.cs     |  67 ---
 .../handlers/HelloEvaluatorRequestorHandler.cs  |  65 ---
 .../handlers/HelloFailedEvaluatorHandler.cs     |  68 ---
 .../handlers/HelloFailedTaskHandler.cs          |  67 ---
 .../HelloCLRBridge/handlers/HelloHttpHandler.cs |  51 ---
 .../handlers/HelloRestartHandler.cs             |  48 ---
 .../handlers/HelloRunningTaskHandler.cs         |  65 ---
 .../handlers/HelloSimpleEventHandlers.cs        | 421 ------------------
 .../handlers/HelloStartHandler.cs               |  64 ---
 .../handlers/HelloTaskMessageHandler.cs         |  54 ---
 .../Properties/AssemblyInfo.cs                  |  55 ---
 .../RetainedEvalCLRBridge.csproj                | 122 ------
 .../handler/RetainedEvalActiveContextHandler.cs |  55 ---
 .../RetainedEvalAllocatedEvaluatorHandler.cs    |  48 ---
 .../RetainedEvalEvaluatorRequestorHandler.cs    |  48 ---
 .../handler/RetainedEvalStartHandler.cs         |  90 ----
 .../reef-tasks/Tasks/FailedTask/FailedTask.cs   |  44 --
 .../reef-tasks/Tasks/HelloTask/HelloService.cs  |  58 ---
 .../reef-tasks/Tasks/HelloTask/HelloTask.cs     | 123 ------
 .../Tasks/HelloTask/HelloTaskMessage.cs         |  49 ---
 .../reef-tasks/Tasks/Properties/AssemblyInfo.cs |  55 ---
 .../reef-tasks/Tasks/ShellTask/ShellTask.cs     |  90 ----
 .../Tasks/StreamingTasks/StreamTask1.cs         |  66 ---
 .../Tasks/StreamingTasks/StreamTask2.cs         |  50 ---
 .../Source/REEF/reef-tasks/Tasks/Tasks.csproj   | 117 -----
 .../ReefTests/Evaluator.Tests/EvaluatorTests.cs |   1 +
 .../Bridge/TestHelloBridgeHandlers.cs           |   1 +
 .../Bridge/TestSimpleEventHandlers.cs           |   2 +-
 .../Functional.Tests/Messaging/MessageTask.cs   |   1 +
 lang/cs/Tests/ReefTests/ReefTests.csproj        |  20 +-
 .../tang/ClassHierarchyDeserializationTest.java |   8 +-
 .../reef-tang/tang/src/test/resources/Event.bin | Bin 26176 -> 26176 bytes
 .../reef-tang/tang/src/test/resources/Task.bin  | Bin 131328 -> 132977 bytes
 87 files changed, 2781 insertions(+), 2755 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/HelloTraceListener.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/HelloTraceListener.cs b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/HelloTraceListener.cs
new file mode 100644
index 0000000..88dbe3b
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/HelloTraceListener.cs
@@ -0,0 +1,48 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using Org.Apache.REEF.Tang.Annotations;
+using System.Diagnostics;
+
+namespace Org.Apache.REEF.Examples.HelloCLRBridge
+{
+    /// <summary>
+    /// This is a sample implemenation on how custom trace listner can be implemented
+    /// </summary>
+    public class HelloTraceListener : TraceListener
+    {
+        private TraceListener _listener;
+
+        [Inject]
+        public HelloTraceListener()
+        {
+            _listener = new ConsoleTraceListener();
+        }
+
+        public override void Write(string message)
+        {
+            _listener.Write("[helloTrace]" + message );
+        }
+
+        public override void WriteLine(string message)
+        {
+            _listener.WriteLine("[helloTrace]" + message);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/Org.Apache.REEF.Examples.HelloCLRBridge.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/Org.Apache.REEF.Examples.HelloCLRBridge.csproj b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/Org.Apache.REEF.Examples.HelloCLRBridge.csproj
new file mode 100644
index 0000000..ea4fbf8
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/Org.Apache.REEF.Examples.HelloCLRBridge.csproj
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{A78DD8E8-31D0-4506-8738-DAA9DA86D55B}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Org.Apache.REEF.Examples.HelloCLRBridge</RootNamespace>
+    <AssemblyName>Org.Apache.REEF.Examples.HelloCLRBridge</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <RestorePackages>true</RestorePackages>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
+  </PropertyGroup>
+  <Import Project="$(SolutionDir)\Source\build.props" />
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>$(BinDir)\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>$(BinDir)\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>$(BinDir)\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>$(BinDir)\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="handlers\AnotherHelloAllocatedEvaluatorHandler.cs" />
+    <Compile Include="handlers\HelloActiveContextHandler.cs" />
+    <Compile Include="handlers\HelloAllocatedEvaluatorHandler.cs" />
+    <Compile Include="handlers\HelloCompletedEvaluatorHandler.cs" />
+    <Compile Include="handlers\HelloDriverRestartActiveContextHandler.cs" />
+    <Compile Include="handlers\HelloDriverRestartRunningTaskHandler.cs" />
+    <Compile Include="handlers\HelloEvaluatorRequestorHandler.cs" />
+    <Compile Include="handlers\HelloFailedEvaluatorHandler.cs" />
+    <Compile Include="handlers\HelloFailedTaskHandler.cs" />
+    <Compile Include="handlers\HelloHttpHandler.cs" />
+    <Compile Include="handlers\HelloRestartHandler.cs" />
+    <Compile Include="handlers\HelloRunningTaskHandler.cs" />
+    <Compile Include="handlers\HelloSimpleEventHandlers.cs" />
+    <Compile Include="handlers\HelloStartHandler.cs" />
+    <Compile Include="handlers\HelloTaskMessageHandler.cs" />
+    <Compile Include="HelloTraceListener.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Tang\Org.Apache.REEF.Tang.csproj">
+      <Project>{97dbb573-3994-417a-9f69-ffa25f00d2a6}</Project>
+      <Name>Org.Apache.REEF.Tang</Name>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Utilities\Org.Apache.REEF.Utilities.csproj">
+      <Project>{79e7f89a-1dfb-45e1-8d43-d71a954aeb98}</Project>
+      <Name>Org.Apache.REEF.Utilities</Name>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Common\Org.Apache.REEF.Common.csproj">
+      <Project>{545a0582-4105-44ce-b99c-b1379514a630}</Project>
+      <Name>Org.Apache.REEF.Common</Name>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Driver\Org.Apache.REEF.Driver.csproj">
+      <Project>{a6baa2a7-f52f-4329-884e-1bcf711d6805}</Project>
+      <Name>Org.Apache.REEF.Driver</Name>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Network\Org.Apache.REEF.Network.csproj">
+      <Project>{883ce800-6a6a-4e0a-b7fe-c054f4f2c1dc}</Project>
+      <Name>Org.Apache.REEF.Network</Name>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Wake\Org.Apache.REEF.Wake.csproj">
+      <Project>{cdfb3464-4041-42b1-9271-83af24cd5008}</Project>
+      <Name>Org.Apache.REEF.Wake</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\Org.Apache.REEF.Examples.Tasks\Org.Apache.REEF.Examples.Tasks.csproj">
+      <Project>{75503f90-7b82-4762-9997-94b5c68f15db}</Project>
+      <Name>Org.Apache.REEF.Examples.Tasks</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/Properties/AssemblyInfo.cs b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..fb84df6
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/Properties/AssemblyInfo.cs
@@ -0,0 +1,55 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Org.Apache.REEF.Examples.HelloCLRBridge")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Org.Apache.REEF.Examples.HelloCLRBridge")]
+[assembly: AssemblyCopyright("Copyright ©  2015")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("aedd2853-36a1-4a95-ac5c-1535374fa90c")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/AnotherHelloAllocatedEvaluatorHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/AnotherHelloAllocatedEvaluatorHandler.cs b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/AnotherHelloAllocatedEvaluatorHandler.cs
new file mode 100644
index 0000000..3a1e847
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/AnotherHelloAllocatedEvaluatorHandler.cs
@@ -0,0 +1,48 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using Org.Apache.REEF.Driver.Evaluator;
+using Org.Apache.REEF.Tang.Annotations;
+using System;
+
+namespace Org.Apache.REEF.Examples.HelloCLRBridge.Handlers
+{
+    public class AnotherHelloAllocatedEvaluatorHandler : IObserver<IAllocatedEvaluator>
+    {
+        [Inject]
+        public AnotherHelloAllocatedEvaluatorHandler()
+        {
+        }
+
+        public void OnNext(IAllocatedEvaluator allocatedEvaluator)
+        {
+            Console.WriteLine("I am just here for the ride.");
+        }
+
+        public void OnCompleted()
+        {
+            throw new NotImplementedException();
+        }
+
+        public void OnError(Exception error)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloActiveContextHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloActiveContextHandler.cs b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloActiveContextHandler.cs
new file mode 100644
index 0000000..d18ae44
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloActiveContextHandler.cs
@@ -0,0 +1,83 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using Org.Apache.REEF.Driver.Context;
+using Org.Apache.REEF.Driver.Evaluator;
+using Org.Apache.REEF.Tasks;
+using Org.Apache.REEF.Tang.Annotations;
+using Org.Apache.REEF.Tang.Formats;
+using Org.Apache.REEF.Tang.Interface;
+using Org.Apache.REEF.Tang.Util;
+using System;
+using System.Globalization;
+using Org.Apache.REEF.Examples.Tasks.HelloTask;
+
+namespace Org.Apache.REEF.Examples.HelloCLRBridge.Handlers
+{
+    public class HelloActiveContextHandler : IObserver<IActiveContext>
+    {
+        [Inject]
+        public HelloActiveContextHandler()
+        {
+        }
+
+        public void OnNext(IActiveContext activeContext)
+        {
+            Console.WriteLine(
+                string.Format(
+                    CultureInfo.InvariantCulture,
+                    "Active context {0} received from evaluator {1}",
+                    activeContext.Id,
+                    activeContext.EvaluatorId));
+
+            IEvaluatorDescriptor evaluatorDescriptor = activeContext.EvaluatorDescriptor;
+            string ipAddress = evaluatorDescriptor.NodeDescriptor.InetSocketAddress.Address.ToString();
+            int port = evaluatorDescriptor.NodeDescriptor.InetSocketAddress.Port;
+            string hostName = evaluatorDescriptor.NodeDescriptor.HostName;
+
+            Console.WriteLine(
+                string.Format(
+                CultureInfo.InvariantCulture, 
+                "The running evaluator is assigned with {0} MB of memory and is running at ip: {1} and port {2}, with hostname {3}", 
+                evaluatorDescriptor.Memory, 
+                ipAddress, 
+                port, 
+                hostName));
+
+            IConfiguration taskConfiguration = TaskConfiguration.ConfigurationModule
+                .Set(TaskConfiguration.Identifier, "bridgeCLRHelloTask_" + DateTime.Now.Ticks)
+                .Set(TaskConfiguration.Task, GenericType<HelloTask>.Class)
+                .Set(TaskConfiguration.OnMessage, GenericType<HelloTask.HelloDriverMessageHandler>.Class)
+                .Set(TaskConfiguration.OnSendMessage, GenericType<HelloTaskMessage>.Class)
+                .Build();
+
+            activeContext.SubmitTask(taskConfiguration);
+        }
+
+        public void OnError(Exception error)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void OnCompleted()
+        {
+            throw new NotImplementedException();
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloAllocatedEvaluatorHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloAllocatedEvaluatorHandler.cs b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloAllocatedEvaluatorHandler.cs
new file mode 100644
index 0000000..c07f809
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloAllocatedEvaluatorHandler.cs
@@ -0,0 +1,132 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using Org.Apache.REEF.Common.io;
+using Org.Apache.REEF.Driver.Bridge;
+using Org.Apache.REEF.Driver.Context;
+using Org.Apache.REEF.Driver.Evaluator;
+using Org.Apache.REEF.Network.Naming;
+using Org.Apache.REEF.Services;
+using Org.Apache.REEF.Tang.Annotations;
+using Org.Apache.REEF.Tang.Implementations.Configuration;
+using Org.Apache.REEF.Tang.Implementations.Tang;
+using Org.Apache.REEF.Tang.Interface;
+using Org.Apache.REEF.Tang.Util;
+using Org.Apache.REEF.Tasks;
+using Org.Apache.REEF.Utilities;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Net;
+using Org.Apache.REEF.Examples.Tasks.HelloTask;
+
+namespace Org.Apache.REEF.Examples.HelloCLRBridge.Handlers
+{
+    public class HelloAllocatedEvaluatorHandler : IObserver<IAllocatedEvaluator>
+    {
+        [Inject]
+        public HelloAllocatedEvaluatorHandler()
+        {
+        }
+
+        public void OnNext(IAllocatedEvaluator allocatedEvaluator)
+        {
+            string control = string.Empty;
+
+            ISet<string> arguments = ClrHandlerHelper.GetCommandLineArguments();
+
+            if (arguments != null && arguments.Any())
+            {
+                foreach (string argument in arguments)
+                {
+                    Console.WriteLine("testing argument: " + argument);
+                }
+
+                control = arguments.Last();
+            }
+
+            IEvaluatorDescriptor descriptor = allocatedEvaluator.GetEvaluatorDescriptor();
+
+            IConfiguration serviceConfiguration = ServiceConfiguration.ConfigurationModule
+                .Set(ServiceConfiguration.Services, GenericType<HelloService>.Class)
+                .Build();
+
+            IConfiguration contextConfiguration = ContextConfiguration.ConfigurationModule
+                .Set(ContextConfiguration.Identifier, "bridgeHelloCLRContextId_" + Guid.NewGuid().ToString("N"))
+                .Build();
+
+            IConfiguration taskConfiguration = TaskConfiguration.ConfigurationModule
+                .Set(TaskConfiguration.Identifier, "bridgeHelloCLRTaskId_" + Guid.NewGuid().ToString("N"))
+                .Set(TaskConfiguration.Task, GenericType<HelloTask>.Class)
+                .Set(TaskConfiguration.OnMessage, GenericType<HelloTask.HelloDriverMessageHandler>.Class)
+                .Set(TaskConfiguration.OnSendMessage, GenericType<HelloTaskMessage>.Class)
+                .Build();
+
+            IConfiguration mergedTaskConfiguration = taskConfiguration;
+
+            if (allocatedEvaluator.NameServerInfo != null)
+            {
+                IPEndPoint nameServerEndpoint = NetUtilities.ParseIpEndpoint(allocatedEvaluator.NameServerInfo);
+
+                IConfiguration nameClientConfiguration = TangFactory.GetTang().NewConfigurationBuilder(
+                    NamingConfiguration.ConfigurationModule
+                                       .Set(NamingConfiguration.NameServerAddress, nameServerEndpoint.Address.ToString())
+                                       .Set(NamingConfiguration.NameServerPort,
+                                            nameServerEndpoint.Port.ToString(CultureInfo.InvariantCulture))
+                                       .Build())
+                                                                    .BindImplementation(GenericType<INameClient>.Class,
+                                                                                        GenericType<NameClient>.Class)
+                                                                    .Build();
+
+                mergedTaskConfiguration = Configurations.Merge(taskConfiguration, nameClientConfiguration);
+            }
+
+            string ipAddress = descriptor.NodeDescriptor.InetSocketAddress.Address.ToString();
+            int port = descriptor.NodeDescriptor.InetSocketAddress.Port;
+            string hostName = descriptor.NodeDescriptor.HostName;
+            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "Alloated evaluator {0} with ip {1}:{2}. Hostname is {3}", allocatedEvaluator.Id, ipAddress, port, hostName));
+            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "Evaluator is assigned with {0} MB of memory and {1} cores.", descriptor.Memory, descriptor.VirtualCore));
+
+            if (control.Equals("submitContext", StringComparison.OrdinalIgnoreCase))
+            {
+                allocatedEvaluator.SubmitContext(contextConfiguration);
+            }
+            else if (control.Equals("submitContextAndServiceAndTask", StringComparison.OrdinalIgnoreCase))
+            {
+                allocatedEvaluator.SubmitContextAndServiceAndTask(contextConfiguration, serviceConfiguration, mergedTaskConfiguration);
+            }
+            else
+            {
+                // default behavior
+                allocatedEvaluator.SubmitContextAndTask(contextConfiguration, mergedTaskConfiguration);
+            }
+        }
+
+        public void OnCompleted()
+        {
+            throw new NotImplementedException();
+        }
+
+        public void OnError(Exception error)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloCompletedEvaluatorHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloCompletedEvaluatorHandler.cs b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloCompletedEvaluatorHandler.cs
new file mode 100644
index 0000000..7c4f650
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloCompletedEvaluatorHandler.cs
@@ -0,0 +1,59 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using Org.Apache.REEF.Driver.Context;
+using Org.Apache.REEF.Driver.Evaluator;
+using Org.Apache.REEF.Driver.Task;
+using Org.Apache.REEF.Utilities;
+using Org.Apache.REEF.Tang.Annotations;
+using System;
+using System.Globalization;
+
+namespace Org.Apache.REEF.Examples.HelloCLRBridge.Handlers
+{
+    /// <summary>
+    /// Sample implementaion of RunningTaskHandler
+    /// </summary>
+    public class HelloCompletedEvaluatorHandler : IObserver<ICompletedEvaluator>
+    {
+        [Inject]
+        public HelloCompletedEvaluatorHandler()
+        {
+        }
+
+        public void OnNext(ICompletedEvaluator completedEvaluator)
+        {
+            string messageStr = string.Format(
+                CultureInfo.InvariantCulture,
+                "HelloCompletedEvaluatorHandler: Evaluator [{0}] is done.",
+                completedEvaluator.Id);
+            Console.WriteLine(messageStr);
+        }
+
+        public void OnError(Exception error)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void OnCompleted()
+        {
+            throw new NotImplementedException();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloDriverRestartActiveContextHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloDriverRestartActiveContextHandler.cs b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloDriverRestartActiveContextHandler.cs
new file mode 100644
index 0000000..9494f96
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloDriverRestartActiveContextHandler.cs
@@ -0,0 +1,69 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using Org.Apache.REEF.Driver.Context;
+using Org.Apache.REEF.Driver.Evaluator;
+using Org.Apache.REEF.Tang.Annotations;
+using System;
+using System.Globalization;
+
+namespace Org.Apache.REEF.Examples.HelloCLRBridge.Handlers
+{
+    public class HelloDriverRestartActiveContextHandler : IObserver<IActiveContext>
+    {
+        [Inject]
+        public HelloDriverRestartActiveContextHandler()
+        {
+        }
+
+        public void OnNext(IActiveContext activeContext)
+        {
+            Console.WriteLine(
+                string.Format(
+                    CultureInfo.InvariantCulture,
+                    "Active context {0} received after driver restart, from evaluator {1}",
+                    activeContext.Id,
+                    activeContext.EvaluatorId));
+
+            IEvaluatorDescriptor evaluatorDescriptor = activeContext.EvaluatorDescriptor;
+            string ipAddress = evaluatorDescriptor.NodeDescriptor.InetSocketAddress.Address.ToString();
+            int port = evaluatorDescriptor.NodeDescriptor.InetSocketAddress.Port;
+            string hostName = evaluatorDescriptor.NodeDescriptor.HostName;
+
+            Console.WriteLine(
+                string.Format(
+                CultureInfo.InvariantCulture, 
+                "The running evaluator allocated by previous driver is assigned with {0} MB of memory and is running at ip: {1} and port {2}, with hostname {3}", 
+                evaluatorDescriptor.Memory, 
+                ipAddress, 
+                port, 
+                hostName));
+        }
+
+        public void OnError(Exception error)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void OnCompleted()
+        {
+            throw new NotImplementedException();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloDriverRestartRunningTaskHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloDriverRestartRunningTaskHandler.cs b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloDriverRestartRunningTaskHandler.cs
new file mode 100644
index 0000000..d2d30cf
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloDriverRestartRunningTaskHandler.cs
@@ -0,0 +1,67 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System;
+using System.Globalization;
+using Org.Apache.REEF.Driver.Context;
+using Org.Apache.REEF.Driver.Task;
+using Org.Apache.REEF.Utilities;
+using Org.Apache.REEF.Tang.Annotations;
+
+namespace Org.Apache.REEF.Examples.HelloCLRBridge.Handlers
+{
+    /// <summary>
+    /// Sample implementaion of RunningTaskHandler
+    /// </summary>
+    public class HelloDriverRestartRunningTaskHandler : IObserver<IRunningTask>
+    {
+        [Inject]
+        public HelloDriverRestartRunningTaskHandler()
+        {
+        }
+
+        public void OnNext(IRunningTask runningTask)
+        {
+            IActiveContext context = runningTask.ActiveContext;
+
+            Console.WriteLine(string.Format(
+                CultureInfo.InvariantCulture,
+                "HelloDriverRestartRunningTaskHandler: Task [{0}] is running after driver restart. Evaluator id: [{1}].",
+                runningTask.Id,
+                context.EvaluatorId));
+
+            runningTask.Send(ByteUtilities.StringToByteArrays(
+                string.Format(
+                CultureInfo.InvariantCulture,
+                "Hello, task {0}! Glad to know that you are still running in Evaluator {1} after driver restart!",
+                runningTask.Id,
+                context.EvaluatorId)));
+        }
+
+        public void OnError(Exception error)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void OnCompleted()
+        {
+            throw new NotImplementedException();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloEvaluatorRequestorHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloEvaluatorRequestorHandler.cs b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloEvaluatorRequestorHandler.cs
new file mode 100644
index 0000000..4f24e0f
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloEvaluatorRequestorHandler.cs
@@ -0,0 +1,65 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using Org.Apache.REEF.Driver.Bridge;
+using Org.Apache.REEF.Driver.Evaluator;
+using System;
+
+using Org.Apache.REEF.Tang.Annotations;
+
+namespace Org.Apache.REEF.Examples.HelloCLRBridge.Handlers
+{
+    public class HelloEvaluatorRequestorHandler : IObserver<IEvaluatorRequestor>
+    {
+        [Inject]
+        public HelloEvaluatorRequestorHandler()
+        {
+        }
+
+        public void OnNext(IEvaluatorRequestor evalutorRequestor)
+        {
+            int evaluatorsNumber = 1;
+            int memory = 512;
+            int core = 2;
+            string rack = "WonderlandRack";
+            string evaluatorBatchId = "evaluatorThatRequires512MBofMemory";
+            EvaluatorRequest request = new EvaluatorRequest(evaluatorsNumber, memory, core, rack, evaluatorBatchId);
+
+            evalutorRequestor.Submit(request);
+
+            evaluatorsNumber = 1;
+            memory = 1999;
+            core = 2;
+            rack = "WonderlandRack";
+            evaluatorBatchId = "evaluatorThatRequires1999MBofMemory";
+            request = new EvaluatorRequest(evaluatorsNumber, memory, core, rack, evaluatorBatchId);
+            evalutorRequestor.Submit(request);
+        }
+
+        public void OnCompleted()
+        {
+            throw new NotImplementedException();
+        }
+
+        public void OnError(Exception error)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloFailedEvaluatorHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloFailedEvaluatorHandler.cs b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloFailedEvaluatorHandler.cs
new file mode 100644
index 0000000..e9aa232
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloFailedEvaluatorHandler.cs
@@ -0,0 +1,68 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using Org.Apache.REEF.Driver.Bridge;
+using Org.Apache.REEF.Driver.Evaluator;
+using Org.Apache.REEF.Tang.Annotations;
+using System;
+
+namespace Org.Apache.REEF.Examples.HelloCLRBridge.Handlers
+{
+    public class HelloFailedEvaluatorHandler : IObserver<IFailedEvaluator>
+    {
+        private static int _failureCount = 0;
+
+        private static int _maxTrial = 2;
+
+        [Inject]
+        public HelloFailedEvaluatorHandler()
+        {
+        }
+
+        public void OnNext(IFailedEvaluator failedEvaluator)
+        {
+            Console.WriteLine("Receive a failed evaluator: " + failedEvaluator.Id);
+            if (++_failureCount < _maxTrial)
+            {
+                Console.WriteLine("Requesting another evaluator");
+                EvaluatorRequest newRequest = new EvaluatorRequest(1, 512, "somerack");
+                IEvaluatorRequestor requestor = failedEvaluator.GetEvaluatorRequetor();
+                if (failedEvaluator.GetEvaluatorRequetor() != null)
+                {
+                    requestor.Submit(newRequest);
+                }
+            }
+            else
+            {
+                Console.WriteLine("Exceed max retries number");
+                throw new Exception("Unrecoverable evaluator failure.");
+            }
+        }
+
+        public void OnError(Exception error)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void OnCompleted()
+        {
+            throw new NotImplementedException();
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloFailedTaskHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloFailedTaskHandler.cs b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloFailedTaskHandler.cs
new file mode 100644
index 0000000..7618f00
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloFailedTaskHandler.cs
@@ -0,0 +1,67 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using Org.Apache.REEF.Driver.Task;
+using Org.Apache.REEF.Utilities;
+using Org.Apache.REEF.Tang.Annotations;
+using System;
+using System.Globalization;
+
+namespace Org.Apache.REEF.Examples.HelloCLRBridge.Handlers
+{
+    public class HelloFailedTaskHandler : IObserver<IFailedTask>
+    {
+        [Inject]
+        public HelloFailedTaskHandler()
+        {
+        }
+
+        public void OnNext(IFailedTask failedTask)
+        {
+            string errorMessage = string.Format(
+                CultureInfo.InvariantCulture,
+                "Task [{0}] has failed caused by [{1}], with message [{2}] and description [{3}]. The raw data for failure is [{4}].",
+                failedTask.Id,
+                failedTask.Reason.IsPresent() ? failedTask.Reason.Value : string.Empty,
+                failedTask.Message,
+                failedTask.Description.IsPresent() ? failedTask.Description.Value : string.Empty,
+                failedTask.Data.IsPresent() ? ByteUtilities.ByteArrarysToString(failedTask.Data.Value) : string.Empty);
+
+            Console.WriteLine(errorMessage);
+
+            if (failedTask.GetActiveContext().IsPresent())
+            {
+                Console.WriteLine("Disposing the active context the failed task ran in.");
+
+                // we must do something here: either close the context or resubmit a task to the active context
+                failedTask.GetActiveContext().Value.Dispose();
+            }
+        }
+
+        public void OnCompleted()
+        {
+            throw new NotImplementedException();
+        }
+
+        public void OnError(Exception error)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloHttpHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloHttpHandler.cs b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloHttpHandler.cs
new file mode 100644
index 0000000..e1bf097
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloHttpHandler.cs
@@ -0,0 +1,51 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System.Globalization;
+using System.Net;
+using Org.Apache.REEF.Driver.Bridge;
+using Org.Apache.REEF.Utilities;
+using Org.Apache.REEF.Utilities.Logging;
+using Org.Apache.REEF.Tang.Annotations;
+
+namespace Org.Apache.REEF.Examples.HelloCLRBridge.Handlers
+{
+    public class HelloHttpHandler : IHttpHandler
+    {
+        private static readonly Logger LOGGER = Logger.GetLogger(typeof(HttpServerHandler));
+
+        [Inject]
+        public HelloHttpHandler()
+        {           
+        }
+
+        public string GetSpecification()
+        {
+            return "NRT"; //Client Example 
+        }
+
+        public void OnHttpRequest(ReefHttpRequest requet, ReefHttpResponse response)  
+        {
+            LOGGER.Log(Level.Info, string.Format(CultureInfo.CurrentCulture, "HelloHttpHandler OnHttpRequest: URL: {0}, QueryString: {1}, inputStream: {2}.", requet.Url, requet.Querystring, ByteUtilities.ByteArrarysToString(requet.InputStream)));
+            response.Status = HttpStatusCode.OK;
+            response.OutputStream =
+                ByteUtilities.StringToByteArrays("Byte array returned from HelloHttpHandler in CLR!!!");
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloRestartHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloRestartHandler.cs b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloRestartHandler.cs
new file mode 100644
index 0000000..6e72147
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloRestartHandler.cs
@@ -0,0 +1,48 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using Org.Apache.REEF.Tang.Annotations;
+using Org.Apache.REEF.Wake.Time;
+using System;
+
+namespace Org.Apache.REEF.Examples.HelloCLRBridge.Handlers
+{
+    public class HelloRestartHandler : IObserver<StartTime>
+    {
+        [Inject]
+        public HelloRestartHandler()
+        {
+        }
+
+        public void OnNext(StartTime value)
+        {
+            Console.WriteLine("Hello from CLR: we are informed that Driver has restarted at " + new DateTime(value.TimeStamp));
+        }
+
+        public void OnError(Exception error)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void OnCompleted()
+        {
+            throw new NotImplementedException();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloRunningTaskHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloRunningTaskHandler.cs b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloRunningTaskHandler.cs
new file mode 100644
index 0000000..07048e4
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloRunningTaskHandler.cs
@@ -0,0 +1,65 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System;
+using System.Globalization;
+using Org.Apache.REEF.Driver.Context;
+using Org.Apache.REEF.Driver.Task;
+using Org.Apache.REEF.Utilities;
+using Org.Apache.REEF.Tang.Annotations;
+
+namespace Org.Apache.REEF.Examples.HelloCLRBridge.Handlers
+{
+    /// <summary>
+    /// Sample implementaion of RunningTaskHandler
+    /// </summary>
+    public class HelloRunningTaskHandler : IObserver<IRunningTask>
+    {
+        [Inject]
+        public HelloRunningTaskHandler()
+        {
+        }
+
+        public void OnNext(IRunningTask runningTask)
+        {
+            IActiveContext context = runningTask.ActiveContext;
+
+            string messageStr = string.Format(
+                CultureInfo.InvariantCulture,
+                "HelloRunningTaskHandler: Task [{0}] is running. Evaluator id: [{1}].",
+                runningTask.Id,
+                context.EvaluatorId);
+            Console.WriteLine(messageStr);
+
+            byte[] message = ByteUtilities.StringToByteArrays(messageStr);
+
+            runningTask.Send(message);
+        }
+
+        public void OnError(Exception error)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void OnCompleted()
+        {
+            throw new NotImplementedException();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloSimpleEventHandlers.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloSimpleEventHandlers.cs b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloSimpleEventHandlers.cs
new file mode 100644
index 0000000..1e61c61
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloSimpleEventHandlers.cs
@@ -0,0 +1,422 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+using Org.Apache.REEF.Common.io;
+using Org.Apache.REEF.Driver;
+using Org.Apache.REEF.Driver.Bridge;
+using Org.Apache.REEF.Driver.Context;
+using Org.Apache.REEF.Driver.Evaluator;
+using Org.Apache.REEF.Driver.Task;
+using Org.Apache.REEF.Examples.Tasks.HelloTask;
+using Org.Apache.REEF.Network.Naming;
+using Org.Apache.REEF.Tasks;
+using Org.Apache.REEF.Utilities;
+using Org.Apache.REEF.Utilities.Logging;
+using Org.Apache.REEF.Tang.Annotations;
+using Org.Apache.REEF.Tang.Interface;
+using Org.Apache.REEF.Tang.Util;
+
+namespace Org.Apache.REEF.Examples.HelloCLRBridge.Handlers
+{
+    enum DriverStatus
+    {
+        Init = 0,
+        Idle = 1,
+        RunningTasks = 2,
+        CompleteTasks = 3
+    }
+
+    internal enum TaskStatus
+    {
+        Submitting = 0,
+        Running = 1,
+        Completed = 2
+    }
+
+    /// <summary>
+    /// A demo class that contains basic handlers. It runs given tasks and is able to get request from http server and start to ren the tasks again. 
+    /// It handle various http requests. It also monitoring task status and driver status.
+    /// </summary>
+    public class HelloSimpleEventHandlers :
+        IObserver<IEvaluatorRequestor>,
+        IObserver<IAllocatedEvaluator>,
+        IObserver<IActiveContext>,
+        IObserver<ICompletedTask>,
+        IObserver<IRunningTask>,
+        IObserver<IFailedTask>,
+        IObserver<IFailedEvaluator>,
+        IObserver<ICompletedEvaluator>,
+        IStartHandler,
+        IHttpHandler
+    {
+        private const int NumberOfTasks = 5;
+        private static readonly Logger LOGGER = Logger.GetLogger(typeof(HelloSimpleEventHandlers));
+        private IAllocatedEvaluator _allocatedEvaluator;
+        private IActiveContext _activeContext;
+        private IList<IActiveContext> _activeContexts = new List<IActiveContext>();
+        private DriverStatus driveStatus;
+        private TaskContext _taskContext;
+
+        [Inject]
+        public HelloSimpleEventHandlers()
+        {
+            LOGGER.Log(Level.Info, "HelloSimpleEventHandlers constructor");
+            CreateClassHierarchy();
+            Identifier = "HelloSimpleEventHandlers";
+            _taskContext = new TaskContext();
+            _taskContext.TotalTasks = NumberOfTasks;
+            driveStatus = DriverStatus.Init;
+        }
+
+        public string Identifier { get; set; }
+
+        public static string ParsePathInfo(string pathInfo)
+        {
+            string[] p = pathInfo.Split('/');
+            foreach (string s in p)
+            {
+                LOGGER.Log(Level.Info, s);
+            }
+            if (p.Length > 3)
+            {
+                return p[3];
+            }
+            return null;
+        }
+
+        public static void BuildHttpResponse(
+            ReefHttpResponse response,
+            HttpStatusCode httpStatusCode,
+            string strResponse)
+        {
+            response.Status = httpStatusCode;
+            response.OutputStream = ByteUtilities.StringToByteArrays(strResponse);
+        }
+
+        public static void BuildHttpResponse(
+            ReefHttpResponse response,
+            HttpStatusCode httpStatusCode,
+            byte[] bytesResponse)
+        {
+            response.Status = httpStatusCode;
+            response.OutputStream = bytesResponse;
+        }
+
+        public void OnNext(IEvaluatorRequestor evalutorRequestor)
+        {
+            using (LOGGER.LogFunction("HelloSimpleEventHandlers::evalutorRequestor received"))
+            {
+                int evaluatorsNumber = 2;
+                int memory = 1024 * 3;
+                int cpuCoreCount = 1;
+                string rack = "WonderlandRack";
+                string evaluatorBatchId = "evaluatorThatRequires3GBofMemory";
+                EvaluatorRequest request = new EvaluatorRequest(evaluatorsNumber, memory, cpuCoreCount, rack, evaluatorBatchId);
+
+                evalutorRequestor.Submit(request);
+            }
+        }
+
+        public void OnNext(IAllocatedEvaluator allocatedEvaluator)
+        {
+            string taskId = "Task_" + allocatedEvaluator.Id;
+            using (LOGGER.LogFunction("HelloSimpleEventHandlers::allocatedEvaluator received {0}.", taskId))
+            {
+                _allocatedEvaluator = allocatedEvaluator;
+
+                IConfiguration contextConfiguration = ContextConfiguration.ConfigurationModule.Set(ContextConfiguration.Identifier, "HelloSimpleEventHandlersContext_" + Guid.NewGuid().ToString("N")).Build();
+
+                allocatedEvaluator.SubmitContext(contextConfiguration);
+            }
+        }
+
+        public void OnNext(IActiveContext activeContext)
+        {
+            using (LOGGER.LogFunction("HelloSimpleEventHandlers::activeContext received"))
+            {
+                LOGGER.Log(Level.Info, string.Format(CultureInfo.InvariantCulture, "Received activeContext, EvaluatorId id: {0}", activeContext.EvaluatorId));
+                _activeContext = activeContext;
+                _activeContexts.Add(activeContext);
+                driveStatus = DriverStatus.RunningTasks;
+                SubmitNextTask(activeContext);
+            }
+        }
+
+        public void OnNext(ICompletedTask value)
+        {
+            using (LOGGER.LogFunction("HelloSimpleEventHandlers::CompletedTask received"))
+            {
+                LOGGER.Log(Level.Info, string.Format(CultureInfo.InvariantCulture, "Received CompletedTask: {0}, task id: {1}", value.Id, _taskContext.CurrentTaskId()));
+                _activeContext = value.ActiveContext;
+                _taskContext.UpdateTaskStatus(value.Id, TaskStatus.Completed);
+                _taskContext.TaskCompleted++;
+                SubmitNextTask(value.ActiveContext);
+            }
+        }
+
+        public void OnError(Exception error)
+        {
+            LOGGER.Log(Level.Error, string.Format(CultureInfo.InvariantCulture, "Exception in coral handlers Msg: {1} Stack: {2}", error.Message, error.StackTrace));
+        }
+
+        public void OnCompleted()
+        {
+        }
+
+        public void OnNext(IRunningTask value)
+        {
+           _taskContext.UpdateTaskStatus(_taskContext.CurrentTaskId(), TaskStatus.Running);
+        }
+
+        public void OnNext(IFailedTask value)
+        {           
+        }
+
+        public void OnNext(IFailedEvaluator value)
+        {            
+        }
+
+        public void OnNext(ICompletedEvaluator completedEvaluator)
+        {
+            string messageStr = string.Format(
+                CultureInfo.InvariantCulture,
+                "HelloSimpleEventHandlers: Evaluator [{0}] is done.",
+                completedEvaluator.Id);
+            Console.WriteLine(messageStr);
+        }
+
+        public string GetSpecification()
+        {
+            return "crystal";
+        }
+
+        public void OnHttpRequest(ReefHttpRequest request, ReefHttpResponse response)
+        {
+            string target = ParsePathInfo(request.PathInfo);
+            LOGGER.Log(Level.Info, "Target: " + target + ". PathInfo: " + request.PathInfo);
+            //if (target != null && target.ToLower(CultureInfo.CurrentCulture).Equals("driverstatus"))
+            if (target != null && target.Equals("driverstatus"))
+                {
+                LOGGER.Log(Level.Info, "Target: " + target + ". Driver status: " + driveStatus.ToString());
+                string msg = string.Format(CultureInfo.CurrentCulture, "Current Driver status: {0} ", driveStatus.ToString());
+                BuildHttpResponse(response, HttpStatusCode.OK, msg);
+                return;
+            }
+
+            if (target != null && target.Equals("taskstatus"))
+            {
+                LOGGER.Log(Level.Info, "Target: " + target + ". TaskStatus string: " + _taskContext.TaskStatusString());
+                BuildHttpResponse(response, HttpStatusCode.OK, _taskContext.TaskStatusString());
+                return;
+            }
+
+            if (target != null && target.ToLower(CultureInfo.CurrentCulture).Equals("run") && driveStatus == DriverStatus.Init)
+            {
+                BuildHttpResponse(response, HttpStatusCode.OK, "Driver is not ready, wait a few second then send request again!!!");
+                return;
+            }
+
+            if (target != null && target.ToLower(CultureInfo.CurrentCulture).Equals("run") && driveStatus == DriverStatus.RunningTasks)
+            {
+                string msg = string.Format(CultureInfo.CurrentCulture,
+                                           "A job is running. Please check driver status and then submit your job again.");
+                BuildHttpResponse(response, HttpStatusCode.OK, msg);
+                return;
+            }
+
+            if (target != null && target.ToLower(CultureInfo.CurrentCulture).Equals("run") && driveStatus == DriverStatus.Idle)
+            {
+                string numberOfTasks = getQueryValue(request.Querystring, "numberoftasks");
+                if (numberOfTasks == null)
+                {
+                    BuildHttpResponse(response, HttpStatusCode.OK, "Please specify number of tasks to run");
+                    return;
+                }
+
+                driveStatus = DriverStatus.RunningTasks;
+                using (LOGGER.LogFunction("HelloSimpleEventHandlers::Processing a new Job from web request"))
+                {
+                    _taskContext = new TaskContext();
+                    _taskContext.TotalTasks = int.Parse(numberOfTasks, CultureInfo.CurrentCulture);
+                    BuildHttpResponse(response, HttpStatusCode.OK, "Job from web request is submitted and is running!!!");
+                }
+
+                foreach (var c in _activeContexts)
+                {
+                    SubmitNextTask(c);
+                }
+                return;
+            }
+            BuildHttpResponse(response, HttpStatusCode.OK, "Unsupported query");
+        }
+
+        private static IDictionary<string, string> ParseQueryString(string queryString)
+        {
+            IDictionary<string, string> queryPairs = new Dictionary<string, string>();
+            if (queryString != null && queryString.Length > 0)
+            {
+                string[] queries = queryString.Split('&');
+                foreach (string query in queries)
+                {
+                    string[] pairs = query.Split('=');
+                    if (pairs.Length == 2 && !pairs[0].Equals(string.Empty) && !pairs[1].Equals(string.Empty))
+                    {
+                        queryPairs[pairs[0]] = pairs[1];
+                        LOGGER.Log(Level.Info, string.Format(CultureInfo.CurrentCulture, "query key: {0}, Query value: {1}.", pairs[0], pairs[1]));
+                    }
+                }
+            }
+            return queryPairs;
+        }
+
+        private static string getQueryValue(string queryString, string name)
+        {
+            IDictionary<string, string> pairs = ParseQueryString(queryString);
+            string v;
+            pairs.TryGetValue(name, out v);
+            return v;
+        }
+
+        private void CreateClassHierarchy()
+        {
+            HashSet<string> clrDlls = new HashSet<string>();
+            clrDlls.Add(typeof(IDriver).Assembly.GetName().Name);
+            clrDlls.Add(typeof(ITask).Assembly.GetName().Name);
+            clrDlls.Add(typeof(HelloTask).Assembly.GetName().Name);
+            clrDlls.Add(typeof(INameClient).Assembly.GetName().Name);
+            clrDlls.Add(typeof(NameClient).Assembly.GetName().Name);
+
+            ClrHandlerHelper.GenerateClassHierarchy(clrDlls);
+        }
+
+        private void SubmitNextTask(IActiveContext activeContext)
+        {
+            LOGGER.Log(Level.Info, "SubmitNextTask with evaluatorid: " + activeContext.EvaluatorId);
+            IConfiguration finalConfiguration = GetNextTaskConfiguration();
+            if (null != finalConfiguration)
+            {
+                LOGGER.Log(Level.Info, "Executing task id " + _taskContext.CurrentTaskId());
+                LOGGER.Log(Level.Info, string.Format(CultureInfo.InvariantCulture, "Submitting Task {0}", _taskContext.CurrentTaskId()));
+
+                activeContext.SubmitTask(finalConfiguration);
+            }
+            else
+            {
+                if (_taskContext.TaskCompleted == _taskContext.TotalTasks)
+                {
+                    LOGGER.Log(Level.Info, "All tasks submitted and completed, active context remian idle");
+                    driveStatus = DriverStatus.Idle;
+                }
+            }
+        }
+
+        private IConfiguration GetNextTaskConfiguration()
+        {
+            string nextTaskId = _taskContext.NextTaskId();
+            LOGGER.Log(Level.Info, "GetNextTaskConfiguration, nextTaskId: " + nextTaskId);
+            if (nextTaskId != null)
+            {
+                IConfiguration taskConfiguration = TaskConfiguration.ConfigurationModule
+                    .Set(TaskConfiguration.Identifier, nextTaskId)
+                    .Set(TaskConfiguration.Task, GenericType<HelloTask>.Class)
+                    .Set(TaskConfiguration.OnMessage, GenericType<HelloTask.HelloDriverMessageHandler>.Class)
+                    .Set(TaskConfiguration.OnSendMessage, GenericType<HelloTaskMessage>.Class)
+                    .Build();
+                return taskConfiguration;
+            }
+            return null;
+        }
+    }
+
+    class TaskContext
+    {
+        private IList<string> taskIds = new List<string>();
+
+        private IDictionary<string, TaskStatus> tasks = new Dictionary<string, TaskStatus>();
+
+        public TaskContext()
+        {
+            NextTaskIndex = 0;
+            TaskCompleted = 0;
+        }
+
+        public int TotalTasks { get; set; }
+
+        public int NextTaskIndex { get; set; }
+
+        public int TaskCompleted { get; set; }
+
+        public string NextTaskId()
+        {
+            Console.WriteLine("NextTaskId: " + NextTaskIndex);
+           if (NextTaskIndex < TotalTasks)
+           {
+               string id = "Jan7DemoTask_" + DateTime.Now.Ticks;
+               taskIds.Add(id);
+               tasks.Add(id, TaskStatus.Submitting);
+               NextTaskIndex++;
+               return id;
+           }
+           return null;
+        }
+
+        public string CurrentTaskId()
+        {
+            Console.WriteLine("CurrentTaskIndex: " + (NextTaskIndex - 1));
+            if (NextTaskIndex <= TotalTasks)
+            {
+                Console.WriteLine("CurrentTaskId: " + taskIds[NextTaskIndex - 1]);
+                return taskIds[NextTaskIndex - 1];
+            }
+            return null; //either not started or completed
+        }
+
+        public void UpdateTaskStatus(string taskId, TaskStatus status)
+        {
+            tasks[taskId] = status;
+        }
+
+        public string TaskStatusString()
+        {
+            Console.WriteLine("TaskStatusString 1, nextTaskIndex: " + NextTaskIndex);
+            StringBuilder sb = new StringBuilder();
+
+            if (tasks.Count > 0)
+            {
+                foreach (var pair in tasks)
+                {
+                    sb.AppendLine("Task id: " + pair.Key + " Task status: " + pair.Value.ToString());
+                }
+            }
+            else
+            {
+                sb.Append("No task is running yet");
+            }
+
+            return sb.ToString();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloStartHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloStartHandler.cs b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloStartHandler.cs
new file mode 100644
index 0000000..6234fec
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloStartHandler.cs
@@ -0,0 +1,65 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System.Collections.Generic;
+using Org.Apache.REEF.Common.io;
+using Org.Apache.REEF.Driver;
+using Org.Apache.REEF.Driver.bridge;
+using Org.Apache.REEF.Driver.Bridge;
+using Org.Apache.REEF.Examples.Tasks.HelloTask;
+using Org.Apache.REEF.Network.Naming;
+using Org.Apache.REEF.Tasks;
+using Org.Apache.REEF.Utilities.Logging;
+using Org.Apache.REEF.Tang.Annotations;
+
+namespace Org.Apache.REEF.Examples.HelloCLRBridge.Handlers
+{
+    public class HelloStartHandler : IStartHandler
+    {
+        private static readonly Logger LOGGER = Logger.GetLogger(typeof(HelloStartHandler));
+
+        [Inject]
+        public HelloStartHandler(HttpServerPort httpServerPort)
+        {
+            CreateClassHierarchy();
+            Identifier = "HelloStartHandler";
+            LOGGER.Log(Level.Info, "HttpPort received in HelloStartHandler: " + httpServerPort.PortNumber);
+        }
+
+        public HelloStartHandler(string id)
+        {
+            Identifier = id;
+            CreateClassHierarchy();
+        }
+
+        public string Identifier { get; set; }
+
+        private void CreateClassHierarchy()
+        {
+            HashSet<string> clrDlls = new HashSet<string>();
+            clrDlls.Add(typeof(IDriver).Assembly.GetName().Name);
+            clrDlls.Add(typeof(ITask).Assembly.GetName().Name);
+            clrDlls.Add(typeof(HelloTask).Assembly.GetName().Name);
+            clrDlls.Add(typeof(INameClient).Assembly.GetName().Name);
+            clrDlls.Add(typeof(NameClient).Assembly.GetName().Name);
+
+            ClrHandlerHelper.GenerateClassHierarchy(clrDlls);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloTaskMessageHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloTaskMessageHandler.cs b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloTaskMessageHandler.cs
new file mode 100644
index 0000000..e6675ef
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.HelloCLRBridge/handlers/HelloTaskMessageHandler.cs
@@ -0,0 +1,54 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System;
+using System.Globalization;
+using System.Text;
+using Org.Apache.REEF.Driver.Task;
+using Org.Apache.REEF.Tang.Annotations;
+
+namespace Org.Apache.REEF.Examples.HelloCLRBridge.Handlers
+{
+    public class HelloTaskMessageHandler : IObserver<ITaskMessage>
+    {
+        [Inject]
+        public HelloTaskMessageHandler()
+        {
+        }
+
+        public void OnNext(ITaskMessage taskMessage)
+        {
+            Console.WriteLine(string.Format(
+                CultureInfo.InvariantCulture,
+                "CLR HelloTaskMessageHandler received following message from Task: {0}, Message: {1}.",
+                taskMessage.TaskId,
+                Encoding.UTF8.GetString(taskMessage.Message)));           
+        }
+
+        public void OnCompleted()
+        {
+            throw new NotImplementedException();
+        }
+
+        public void OnError(Exception error)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.RetainedEvalCLRBridge/Org.Apache.REEF.Examples.RetainedEvalCLRBridge.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.RetainedEvalCLRBridge/Org.Apache.REEF.Examples.RetainedEvalCLRBridge.csproj b/lang/cs/Org.Apache.REEF.Examples.RetainedEvalCLRBridge/Org.Apache.REEF.Examples.RetainedEvalCLRBridge.csproj
new file mode 100644
index 0000000..3043ba7
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.RetainedEvalCLRBridge/Org.Apache.REEF.Examples.RetainedEvalCLRBridge.csproj
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{05EC65CF-848D-49AB-9E67-57C14EA63044}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Org.Apache.REEF.Examples.RetainedEvalCLRBridge</RootNamespace>
+    <AssemblyName>Org.Apache.REEF.Examples.RetainedEvalCLRBridge</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <RestorePackages>true</RestorePackages>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
+  </PropertyGroup>
+  <Import Project="$(SolutionDir)\Source\build.props" />
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>$(BinDir)\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>$(BinDir)\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>$(BinDir)\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>$(BinDir)\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="handler\RetainedEvalActiveContextHandler.cs" />
+    <Compile Include="handler\RetainedEvalAllocatedEvaluatorHandler.cs" />
+    <Compile Include="handler\RetainedEvalEvaluatorRequestorHandler.cs" />
+    <Compile Include="handler\RetainedEvalStartHandler.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Tang\Org.Apache.REEF.Tang.csproj">
+      <Project>{97dbb573-3994-417a-9f69-ffa25f00d2a6}</Project>
+      <Name>Org.Apache.REEF.Tang</Name>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Utilities\Org.Apache.REEF.Utilities.csproj">
+      <Project>{79e7f89a-1dfb-45e1-8d43-d71a954aeb98}</Project>
+      <Name>Org.Apache.REEF.Utilities</Name>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Common\Org.Apache.REEF.Common.csproj">
+      <Project>{545a0582-4105-44ce-b99c-b1379514a630}</Project>
+      <Name>Org.Apache.REEF.Common</Name>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Driver\Org.Apache.REEF.Driver.csproj">
+      <Project>{a6baa2a7-f52f-4329-884e-1bcf711d6805}</Project>
+      <Name>Org.Apache.REEF.Driver</Name>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\Org.Apache.REEF.Wake\Org.Apache.REEF.Wake.csproj">
+      <Project>{cdfb3464-4041-42b1-9271-83af24cd5008}</Project>
+      <Name>Org.Apache.REEF.Wake</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\Org.Apache.REEF.Examples.Tasks\Org.Apache.REEF.Examples.Tasks.csproj">
+      <Project>{75503f90-7b82-4762-9997-94b5c68f15db}</Project>
+      <Name>Org.Apache.REEF.Examples.Tasks</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/a7df272d/lang/cs/Org.Apache.REEF.Examples.RetainedEvalCLRBridge/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Examples.RetainedEvalCLRBridge/Properties/AssemblyInfo.cs b/lang/cs/Org.Apache.REEF.Examples.RetainedEvalCLRBridge/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..946ee33
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Examples.RetainedEvalCLRBridge/Properties/AssemblyInfo.cs
@@ -0,0 +1,55 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Org.Apache.REEF.Examples.RetainedEvalCLRBridge")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Org.Apache.REEF.Examples.RetainedEvalCLRBridge")]
+[assembly: AssemblyCopyright("Copyright ©  2015")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("636170aa-ea18-45bf-b345-83dae7fb6a03")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]