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/05 22:06:04 UTC

[43/51] [partial] incubator-reef git commit: [REEF-131] Towards the new .Net project structure This is to change .Net project structure for Tang, Wake, REEF utilities, Common and Driver:

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/IHttpMessage.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/IHttpMessage.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/IHttpMessage.cs
new file mode 100644
index 0000000..155d7ab
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/IHttpMessage.cs
@@ -0,0 +1,33 @@
+/**
+ * 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.
+ */
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public interface IHttpMessage
+    {
+        string GetRequestString();
+        
+        void SetQueryResult(string responseString);
+
+        byte[] GetQueryReuestData();
+
+        void SetQueryResponseData(byte[] responseData);
+        
+        void SetUriSpecification(string uriSpecification);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/ReefHttpRequest.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/ReefHttpRequest.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/ReefHttpRequest.cs
new file mode 100644
index 0000000..97c0465
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/ReefHttpRequest.cs
@@ -0,0 +1,49 @@
+/**
+ * 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;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public enum HttpMethod
+    {
+        Post,
+        Put,
+        Get,
+        Delete
+    }
+
+    public class ReefHttpRequest
+    {
+        public HttpMethod Method { get; set; }
+
+        public string Url { get; set; }
+
+        public string Querystring { get; set; }
+
+        public byte[] InputStream { get; set; }
+
+        public string PathInfo { get; set; }
+
+        public string Tostring()
+        {
+            return string.Format(CultureInfo.InvariantCulture, "Url: {0}, query string {1}", Url, Querystring);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/ReefHttpResponse.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/ReefHttpResponse.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/ReefHttpResponse.cs
new file mode 100644
index 0000000..73b64cc
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/ReefHttpResponse.cs
@@ -0,0 +1,30 @@
+/**
+ * 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.Net;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public class ReefHttpResponse
+    {
+        public byte[] OutputStream { get; set; }
+
+        public HttpStatusCode Status { get; set; }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IActiveContextClr2Java.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IActiveContextClr2Java.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IActiveContextClr2Java.cs
new file mode 100644
index 0000000..3a57b0a
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IActiveContextClr2Java.cs
@@ -0,0 +1,36 @@
+/**
+ * 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;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public interface IActiveContextClr2Java : IClr2Java
+    {
+        void SubmitTask(string taskConfigStr);
+        
+        void Close();
+
+        string GetId();
+
+        string GetEvaluatorId();
+
+        IEvaluatorDescriptor GetEvaluatorDescriptor();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IAllocatedEvaluaotrClr2Java.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IAllocatedEvaluaotrClr2Java.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IAllocatedEvaluaotrClr2Java.cs
new file mode 100644
index 0000000..9bf6c09
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IAllocatedEvaluaotrClr2Java.cs
@@ -0,0 +1,42 @@
+/**
+ * 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;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public interface IAllocatedEvaluaotrClr2Java : IClr2Java
+    {
+        void SubmitContextAndTask(string contextConfigStr, string taskConfigStr);
+
+        void SubmitContext(string contextConfigStr);
+
+        void SubmitContextAndService(string contextConfigStr, string serviceConfigStr);
+
+        void SubmitContextAndServiceAndTask(string contextConfigStr, string serviceConfigStr, string taskConfigStr);
+
+        void Close();
+
+        string GetId();
+
+        string GetNameServerInfo();
+
+        IEvaluatorDescriptor GetEvaluatorDescriptor();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IClosedContextClr2Java.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IClosedContextClr2Java.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IClosedContextClr2Java.cs
new file mode 100644
index 0000000..88b1ca2
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IClosedContextClr2Java.cs
@@ -0,0 +1,34 @@
+/**
+ * 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;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public interface IClosedContextClr2Java : IClr2Java
+    {        
+        string GetId();
+
+        string GetEvaluatorId();
+
+        IEvaluatorDescriptor GetEvaluatorDescriptor();
+
+        IActiveContextClr2Java GetParentContext();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IClr2Java.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IClr2Java.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IClr2Java.cs
new file mode 100644
index 0000000..ec565cd
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IClr2Java.cs
@@ -0,0 +1,26 @@
+/**
+ * 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.
+ */
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public interface IClr2Java
+    {
+        void OnError(string message);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/ICompletedEvaluatorClr2Java.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/ICompletedEvaluatorClr2Java.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/ICompletedEvaluatorClr2Java.cs
new file mode 100644
index 0000000..a80c2fd
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/ICompletedEvaluatorClr2Java.cs
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public interface ICompletedEvaluatorClr2Java : IClr2Java
+    {
+        /// <summary>
+        /// evaluator id
+        /// </summary>
+        /// <returns>id of the completed evaluator</returns>
+        string GetId();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/ICompletedTaskClr2Java.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/ICompletedTaskClr2Java.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/ICompletedTaskClr2Java.cs
new file mode 100644
index 0000000..25024b3
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/ICompletedTaskClr2Java.cs
@@ -0,0 +1,28 @@
+/**
+ * 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.
+ */
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public interface ICompletedTaskClr2Java : IClr2Java
+    {
+        IActiveContextClr2Java GetActiveContext();
+        
+        string GetId();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IContextMessageClr2Java.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IContextMessageClr2Java.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IContextMessageClr2Java.cs
new file mode 100644
index 0000000..c98f03e
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IContextMessageClr2Java.cs
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public interface IContextMessageClr2Java : IClr2Java
+    {
+        byte[] Get();
+
+        string GetId();
+
+        string GetMessageSourceId();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IEvaluatorRequestorClr2Java.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IEvaluatorRequestorClr2Java.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IEvaluatorRequestorClr2Java.cs
new file mode 100644
index 0000000..2ff1198
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IEvaluatorRequestorClr2Java.cs
@@ -0,0 +1,28 @@
+/**
+ * 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;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public interface IEvaluatorRequestorClr2Java : IClr2Java
+    {
+        void Submit(IEvaluatorRequest evaluatorRequest);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IFailedContextClr2Java.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IFailedContextClr2Java.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IFailedContextClr2Java.cs
new file mode 100644
index 0000000..db145aa
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IFailedContextClr2Java.cs
@@ -0,0 +1,36 @@
+/**
+ * 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;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public interface IFailedContextClr2Java : IClr2Java
+    {        
+        string GetId();
+
+        string GetEvaluatorId();
+
+        string GetParentId();
+
+        IEvaluatorDescriptor GetEvaluatorDescriptor();
+
+        IActiveContextClr2Java GetParentContext();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IFailedEvaluatorClr2Java.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IFailedEvaluatorClr2Java.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IFailedEvaluatorClr2Java.cs
new file mode 100644
index 0000000..2199ab3
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IFailedEvaluatorClr2Java.cs
@@ -0,0 +1,30 @@
+/**
+ * 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;
+
+namespace Org.Apache.REEF.Driver
+{
+    public interface IFailedEvaluatorClr2Java
+    {
+        IEvaluatorRequestorClr2Java GetEvaluatorRequestor();
+
+        string GetId();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IFailedTaskClr2Java.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IFailedTaskClr2Java.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IFailedTaskClr2Java.cs
new file mode 100644
index 0000000..eb9c7a7
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IFailedTaskClr2Java.cs
@@ -0,0 +1,28 @@
+/**
+ * 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.
+ */
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public interface IFailedTaskClr2Java : IClr2Java
+    {
+        IActiveContextClr2Java GetActiveContext();
+
+        string GetString();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IHttpServerBridgeClr2Java.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IHttpServerBridgeClr2Java.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IHttpServerBridgeClr2Java.cs
new file mode 100644
index 0000000..816aa35
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IHttpServerBridgeClr2Java.cs
@@ -0,0 +1,34 @@
+/**
+ * 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.
+ */
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public interface IHttpServerBridgeClr2Java : IClr2Java
+    {
+        string GetQueryString();
+
+        void SetQueryResult(string queryResult);
+
+        byte[] GetQueryRequestData();
+
+        void SetQueryResponseData(byte[] responseData);
+
+        void SetUriSpecification(string uriSpecification);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IRunningTaskClr2Java.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IRunningTaskClr2Java.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IRunningTaskClr2Java.cs
new file mode 100644
index 0000000..4afbf2a
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/IRunningTaskClr2Java.cs
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public interface IRunningTaskClr2Java : IClr2Java
+    {
+        IActiveContextClr2Java GetActiveContext();
+
+        string GetId();
+
+        void Send(byte[] message);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/ISuspendedTaskClr2Java.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/ISuspendedTaskClr2Java.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/ISuspendedTaskClr2Java.cs
new file mode 100644
index 0000000..612bc10
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/ISuspendedTaskClr2Java.cs
@@ -0,0 +1,42 @@
+/**
+ * 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.
+ */
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public interface ISuspendedTaskClr2Java : IClr2Java
+    {
+        /// <summary>
+        /// get active context the task is running in
+        /// </summary>
+        /// <returns>active context</returns>
+        IActiveContextClr2Java GetActiveContext();
+
+        /// <summary>
+        /// get suspsended task id
+        /// </summary>
+        /// <returns>suspsended task id</returns>
+        string GetId();
+
+        /// <summary>
+        /// get the message
+        /// </summary>
+        /// <returns>suspended task message</returns>
+        byte[] Get();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/ITaskMessageClr2Java.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/ITaskMessageClr2Java.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/ITaskMessageClr2Java.cs
new file mode 100644
index 0000000..62ba763
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/clr2java/ITaskMessageClr2Java.cs
@@ -0,0 +1,26 @@
+/**
+ * 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.
+ */
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public interface ITaskMessageClr2Java : IClr2Java
+    {
+        string GetId();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/events/ActiveContext.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/events/ActiveContext.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/events/ActiveContext.cs
new file mode 100644
index 0000000..9236141
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/events/ActiveContext.cs
@@ -0,0 +1,117 @@
+/**
+ * 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.Utilities;
+using Org.Apache.REEF.Utilities.Logging;
+using Org.Apache.REEF.Tang.Formats;
+using Org.Apache.REEF.Tang.Interface;
+using System;
+using System.Runtime.Serialization;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    [DataContract]
+    internal class ActiveContext : IActiveContext
+    {
+        private static readonly Logger LOGGER = Logger.GetLogger(typeof(ActiveContext));
+
+        private readonly AvroConfigurationSerializer _serializer;
+
+        public ActiveContext(IActiveContextClr2Java clr2Java)
+        {
+            InstanceId = Guid.NewGuid().ToString("N");
+            Clr2Java = clr2Java;
+            _serializer = new AvroConfigurationSerializer();
+        }
+
+        [DataMember]
+        public string InstanceId { get; set; }
+
+        public string Id
+        {
+            get
+            {
+                return Clr2Java.GetId();
+            }
+
+            set
+            {
+            }
+        }
+
+        public string EvaluatorId
+        {
+            get
+            {
+                return Clr2Java.GetEvaluatorId();
+            }
+
+            set
+            {
+            }
+        }
+
+        public Optional<string> ParentId { get; set; }
+
+        public IEvaluatorDescriptor EvaluatorDescriptor
+        {
+            get
+            {
+                return Clr2Java.GetEvaluatorDescriptor();
+            }
+
+            set
+            {
+            }
+        }
+
+        private IActiveContextClr2Java Clr2Java { get; set; }
+
+        public void SubmitTask(IConfiguration taskConfiguration)
+        {
+            LOGGER.Log(Level.Info, "ActiveContext::SubmitTask");
+            string task = _serializer.ToString(taskConfiguration);
+            LOGGER.Log(Level.Info, "serialized taskConfiguration: " + task);
+            Clr2Java.SubmitTask(task);
+        }
+
+        public void Dispose()
+        {
+            LOGGER.Log(Level.Info, "ActiveContext::Dispose");
+            Clr2Java.Close();
+        }
+
+        public void SubmitContext(IConfiguration contextConfiguration)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void SubmitContextAndService(IConfiguration contextConfiguration, IConfiguration serviceConfiguration)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void SendMessage(byte[] message)
+        {
+            throw new NotImplementedException();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/events/AllocatedEvaluator.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/events/AllocatedEvaluator.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/events/AllocatedEvaluator.cs
new file mode 100644
index 0000000..10175e3
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/events/AllocatedEvaluator.cs
@@ -0,0 +1,175 @@
+/**
+ * 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.Catalog;
+using Org.Apache.REEF.Common.Evaluator;
+using Org.Apache.REEF.Driver.Evaluator;
+using Org.Apache.REEF.Utilities.Logging;
+using Org.Apache.REEF.Tang.Formats;
+using Org.Apache.REEF.Tang.Interface;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Net;
+using System.Runtime.Serialization;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    [DataContract]
+    internal class AllocatedEvaluator : IAllocatedEvaluator
+    {
+        private static readonly Logger LOGGER = Logger.GetLogger(typeof(AllocatedEvaluator));
+        
+        private readonly AvroConfigurationSerializer _serializer;
+
+        private IEvaluatorDescriptor _evaluatorDescriptor;
+
+        public AllocatedEvaluator(IAllocatedEvaluaotrClr2Java clr2Java)
+        {
+            InstanceId = Guid.NewGuid().ToString("N");
+            _serializer = new AvroConfigurationSerializer();
+            Clr2Java = clr2Java;
+            Id = Clr2Java.GetId();
+            ProcessNewEvaluator();
+
+            NameServerInfo = Clr2Java.GetNameServerInfo();
+        }
+
+        [DataMember]
+        public string InstanceId { get; set; }
+
+        public string Id { get; set; }
+
+        public string EvaluatorBatchId { get; set; }
+
+        public EvaluatorType Type { get; set; }
+
+        public string NameServerInfo { get; set; }
+
+        [DataMember]
+        private IAllocatedEvaluaotrClr2Java Clr2Java { get; set; }
+
+        public void SubmitContext(IConfiguration contextConfiguration)
+        {
+            LOGGER.Log(Level.Info, "AllocatedEvaluator::SubmitContext");
+            string context = _serializer.ToString(contextConfiguration);
+            LOGGER.Log(Level.Info, "serialized contextConfiguration: " + context);
+            Clr2Java.SubmitContext(context);
+        }
+
+        public void SubmitContextAndTask(IConfiguration contextConfiguration, IConfiguration taskConfiguration)
+        {
+            LOGGER.Log(Level.Info, "AllocatedEvaluator::SubmitContextAndTask");
+
+            string context = _serializer.ToString(contextConfiguration);
+            string task = _serializer.ToString(taskConfiguration);
+
+            LOGGER.Log(Level.Info, "serialized contextConfiguration: " + context);
+            LOGGER.Log(Level.Info, "serialized taskConfiguration: " + task);
+
+            Clr2Java.SubmitContextAndTask(context, task);
+        }
+
+        public void SubmitContextAndService(IConfiguration contextConfiguration, IConfiguration serviceConfiguration)
+        {
+            LOGGER.Log(Level.Info, "AllocatedEvaluator::SubmitContextAndService");
+
+            string context = _serializer.ToString(contextConfiguration);
+            string service = _serializer.ToString(serviceConfiguration);
+
+            LOGGER.Log(Level.Info, "serialized contextConfiguration: " + context);
+            LOGGER.Log(Level.Info, "serialized serviceConfiguration: " + service);
+
+            Clr2Java.SubmitContextAndService(context, service);
+        }
+
+        public void SubmitContextAndServiceAndTask(IConfiguration contextConfiguration, IConfiguration serviceConfiguration, IConfiguration taskConfiguration)
+        {
+            LOGGER.Log(Level.Info, "AllocatedEvaluator::SubmitContextAndServiceAndTask");
+
+            string context = _serializer.ToString(contextConfiguration);
+            string service = _serializer.ToString(serviceConfiguration);
+            string task = _serializer.ToString(taskConfiguration);
+
+            LOGGER.Log(Level.Info, "serialized contextConfiguration: " + context);
+            LOGGER.Log(Level.Info, "serialized serviceConfiguration: " + service);
+            LOGGER.Log(Level.Info, "serialized taskConfiguration: " + task);
+
+            Clr2Java.SubmitContextAndServiceAndTask(context, service, task);
+        }
+
+        public IEvaluatorDescriptor GetEvaluatorDescriptor()
+        {
+            return _evaluatorDescriptor;
+        }
+
+        public void Dispose()
+        {
+            Clr2Java.Close();
+        }
+
+        public INodeDescriptor GetNodeDescriptor()
+        {
+            throw new NotImplementedException();
+        }
+
+        public void AddFile(string file)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void AddLibrary(string file)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void AddFileResource(string file)
+        {
+            throw new NotImplementedException();
+        }
+
+        private void ProcessNewEvaluator()
+        {
+            _evaluatorDescriptor = Clr2Java.GetEvaluatorDescriptor();
+            lock (EvaluatorRequestor.Evaluators)
+            {
+                foreach (KeyValuePair<string, IEvaluatorDescriptor> pair in EvaluatorRequestor.Evaluators)
+                {
+                    if (pair.Value.Equals(_evaluatorDescriptor))
+                    {
+                        string key = pair.Key;
+                        EvaluatorRequestor.Evaluators.Remove(key);
+                        string assignedId = key.Substring(0, key.LastIndexOf('_'));
+                        string message = string.Format(
+                            CultureInfo.InvariantCulture,
+                            "Received evalautor [{0}] of memory {1}MB that matches request of {2}MB with batch id [{3}].",
+                            Id,
+                            _evaluatorDescriptor.Memory,
+                            pair.Value.Memory,
+                            assignedId);
+
+                        LOGGER.Log(Level.Verbose, message);
+                        EvaluatorBatchId = assignedId;
+                        break;
+                    }
+                }
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/events/ClosedContext.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/events/ClosedContext.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/events/ClosedContext.cs
new file mode 100644
index 0000000..9ea7d41
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/events/ClosedContext.cs
@@ -0,0 +1,98 @@
+/**
+ * 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.Utilities;
+using System;
+using System.Runtime.Serialization;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public class ClosedContext : IClosedContext
+    {
+        private string _id;
+
+        private string _evaluatorId;
+
+        public ClosedContext(IClosedContextClr2Java clr2java)
+        {
+            InstanceId = Guid.NewGuid().ToString("N");
+            _id = clr2java.GetId();
+            _evaluatorId = clr2java.GetEvaluatorId();
+        }
+
+        [DataMember]
+        public string InstanceId { get; set; }
+
+        public string Id
+        {
+            get
+            {
+                return _id;
+            }
+
+            set
+            {
+            }
+        }
+
+        public string EvaluatorId
+        {
+            get
+            {
+                return _evaluatorId;
+            }
+
+            set
+            {
+            }
+        }
+
+        public Optional<string> ParentId { get; set; }
+
+        public IEvaluatorDescriptor EvaluatorDescriptor
+        {
+            get
+            {
+                return ClosedContextClr2JavaClr2Java.GetEvaluatorDescriptor();
+            }
+
+            set
+            {
+            }
+        }
+
+        public IActiveContext ParentContext
+        {
+            get
+            {
+                return new ActiveContext(ParentContextClr2Java);
+            }
+
+            set
+            {
+            }
+        }
+
+        private IActiveContextClr2Java ParentContextClr2Java { get; set; }
+
+        private IClosedContextClr2Java ClosedContextClr2JavaClr2Java { get; set; }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/events/CompletedEvaluator.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/events/CompletedEvaluator.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/events/CompletedEvaluator.cs
new file mode 100644
index 0000000..7c8866d
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/events/CompletedEvaluator.cs
@@ -0,0 +1,60 @@
+/**
+ * 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 System;
+using System.Runtime.Serialization;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    [DataContract]
+    internal class CompletedEvaluator : ICompletedEvaluator
+    {
+        private string _instanceId;
+
+        public CompletedEvaluator(ICompletedEvaluatorClr2Java clr2Java)
+        {
+            _instanceId = Guid.NewGuid().ToString("N");
+            CompletedEvaluatorClr2Java = clr2Java;
+        }
+
+        [DataMember]
+        public string InstanceId
+        {
+            get { return _instanceId; }
+            set { _instanceId = value; }
+        }
+
+        [DataMember]
+        public string Id
+        {
+            get
+            {
+                return CompletedEvaluatorClr2Java.GetId();
+            }
+
+            set
+            {
+            }
+        }
+
+        [DataMember]
+        public ICompletedEvaluatorClr2Java CompletedEvaluatorClr2Java { get; set; }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/events/CompletedTask.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/events/CompletedTask.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/events/CompletedTask.cs
new file mode 100644
index 0000000..c9cf19f
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/events/CompletedTask.cs
@@ -0,0 +1,75 @@
+/**
+ * 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.Task;
+using Org.Apache.REEF.Utilities.Logging;
+using System;
+using System.Runtime.Serialization;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    [DataContract]
+    internal class CompletedTask : ICompletedTask
+    {
+        private static readonly Logger LOGGER = Logger.GetLogger(typeof(CompletedTask));
+
+        internal CompletedTask(ICompletedTaskClr2Java completedTaskClr2Java)
+        {
+            InstanceId = Guid.NewGuid().ToString("N");
+            CompletedTaskClr2Java = completedTaskClr2Java;
+            ActiveContextClr2Java = completedTaskClr2Java.GetActiveContext();
+        }
+
+        [DataMember]
+        public string InstanceId { get; set; }
+
+        public byte[] Message { get; set; }
+
+        public string Id
+        {
+            get
+            {
+                return CompletedTaskClr2Java.GetId();
+            }
+
+            set
+            {
+            }
+        }
+
+        public IActiveContext ActiveContext
+        {
+            get
+            {
+                return new ActiveContext(ActiveContextClr2Java);
+            }
+
+            set
+            {
+            }
+        }
+
+        [DataMember]
+        private ICompletedTaskClr2Java CompletedTaskClr2Java { get; set; }
+
+        [DataMember]
+        private IActiveContextClr2Java ActiveContextClr2Java { get; set; }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/events/ContextMessage.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/events/ContextMessage.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/events/ContextMessage.cs
new file mode 100644
index 0000000..4afbcdc
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/events/ContextMessage.cs
@@ -0,0 +1,53 @@
+/**
+ * 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.Context;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public class ContextMessage : IContextMessage
+    {
+        private readonly string _messageSourcId;
+        private readonly byte[] _bytes;
+        private readonly string _id;
+
+        public ContextMessage(IContextMessageClr2Java clr2Java)
+        {
+            _messageSourcId = clr2Java.GetMessageSourceId();
+            _bytes = clr2Java.Get();
+            _id = clr2Java.GetId();
+        }
+
+        public string Id
+        {
+            get { return _id; }
+            set { }
+        }
+
+        public string MessageSourceId
+        {
+            get { return _messageSourcId; }
+        }
+
+        public byte[] Message
+        {
+            get { return _bytes; }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/events/EvaluatorRequstor.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/events/EvaluatorRequstor.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/events/EvaluatorRequstor.cs
new file mode 100644
index 0000000..f63c42a
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/events/EvaluatorRequstor.cs
@@ -0,0 +1,95 @@
+/**
+ * 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.Catalog;
+using Org.Apache.REEF.Common.Evaluator;
+using Org.Apache.REEF.Driver.Evaluator;
+using Org.Apache.REEF.Utilities.Diagnostics;
+using Org.Apache.REEF.Utilities.Logging;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Runtime.Serialization;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    [DataContract]
+    internal class EvaluatorRequestor : IEvaluatorRequestor
+    {
+        private static readonly Logger LOGGER = Logger.GetLogger(typeof(EvaluatorRequestor));
+
+        private static Dictionary<string, IEvaluatorDescriptor> _evaluators;
+        
+        public EvaluatorRequestor(IEvaluatorRequestorClr2Java clr2Java)
+        {
+            InstanceId = Guid.NewGuid().ToString("N");
+            Clr2Java = clr2Java;
+        }
+
+        public static Dictionary<string, IEvaluatorDescriptor> Evaluators
+        {
+            get
+            {
+                if (_evaluators == null)
+                {
+                    _evaluators = new Dictionary<string, IEvaluatorDescriptor>();
+                }
+                return _evaluators;
+            }
+        }
+
+        public IResourceCatalog ResourceCatalog { get; set; }
+
+        [DataMember]
+        public string InstanceId { get; set; }
+
+        [DataMember]
+        private IEvaluatorRequestorClr2Java Clr2Java { get; set; }
+
+        public void Submit(IEvaluatorRequest request)
+        {
+            LOGGER.Log(Level.Info, string.Format(CultureInfo.InvariantCulture, "Submitting request for {0} evaluators and {1} MB memory and  {2} core to rack {3}.", request.Number, request.MemoryMegaBytes, request.VirtualCore, request.Rack));
+
+            lock (Evaluators)
+            {
+                for (int i = 0; i < request.Number; i++)
+                {
+                    EvaluatorDescriptorImpl descriptor = new EvaluatorDescriptorImpl(new NodeDescriptorImpl(), EvaluatorType.CLR, request.MemoryMegaBytes, request.VirtualCore);
+                    descriptor.Rack = request.Rack;
+                    string key = string.Format(CultureInfo.InvariantCulture, "{0}_{1}", request.EvaluatorBatchId, i);
+                    try
+                    {
+                        _evaluators.Add(key, descriptor);
+                    }
+                    catch (ArgumentException e)
+                    {
+                        Exceptions.Caught(e, Level.Error, string.Format(CultureInfo.InvariantCulture, "EvaluatorBatchId [{0}] already exists.", key), LOGGER);
+                        Exceptions.Throw(new InvalidOperationException("Cannot use evaluator id " + key, e), LOGGER);
+                    }
+                }
+            }
+            
+            Clr2Java.Submit(request);
+        }
+
+        public void Dispose()
+        {
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/events/FailedContext.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/events/FailedContext.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/events/FailedContext.cs
new file mode 100644
index 0000000..9e0dcc2
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/events/FailedContext.cs
@@ -0,0 +1,110 @@
+/**
+ * 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.Utilities;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public class FailedContext : IFailedContext
+    {
+        private string _id;
+
+        private string _evaluatorId;
+
+        private string _parentId;
+
+        public FailedContext(IFailedContextClr2Java clr2Java)
+        {
+            _id = clr2Java.GetId();
+            _evaluatorId = clr2Java.GetEvaluatorId();
+            _parentId = clr2Java.GetParentId();
+            FailedContextClr2Java = clr2Java;
+        }
+
+        public string Id
+        {
+            get
+            {
+                return _id;
+            }
+
+            set
+            {
+            }
+        }
+
+        public string EvaluatorId
+        {
+            get
+            {
+                return _evaluatorId;
+            }
+
+            set
+            {
+            }
+        }
+
+        public Optional<string> ParentId
+        {
+            get
+            {
+                return string.IsNullOrEmpty(_parentId) ? 
+                    Optional<string>.Empty() : 
+                    Optional<string>.Of(_parentId);
+            }
+
+            set
+            {
+            }
+        }
+
+        public IEvaluatorDescriptor EvaluatorDescriptor
+        {
+            get
+            {
+                return FailedContextClr2Java.GetEvaluatorDescriptor();
+            }
+
+            set
+            {
+            }
+        }
+
+        public Optional<IActiveContext> ParentContext
+        {
+            get
+            {
+                IActiveContextClr2Java context = FailedContextClr2Java.GetParentContext();
+                if (context != null)
+                {
+                    return Optional<IActiveContext>.Of(new ActiveContext(context));
+                }
+                else
+                {
+                    return Optional<IActiveContext>.Empty();
+                }
+            }
+        }
+
+        private IFailedContextClr2Java FailedContextClr2Java { get; set; }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/events/FailedEvaluator.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/events/FailedEvaluator.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/events/FailedEvaluator.cs
new file mode 100644
index 0000000..a21c071
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/events/FailedEvaluator.cs
@@ -0,0 +1,72 @@
+/**
+ * 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.Exceptions;
+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.Utilities.Diagnostics;
+using Org.Apache.REEF.Utilities.Logging;
+using System;
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    [DataContract]
+    internal class FailedEvaluator : IFailedEvaluator
+    {
+        private static readonly Logger LOGGER = Logger.GetLogger(typeof(FailedEvaluator));
+
+        public FailedEvaluator(IFailedEvaluatorClr2Java clr2Java)
+        {
+            InstanceId = Guid.NewGuid().ToString("N");
+            FailedEvaluatorClr2Java = clr2Java;
+            EvaluatorRequestorClr2Java = FailedEvaluatorClr2Java.GetEvaluatorRequestor();
+            Id = FailedEvaluatorClr2Java.GetId();
+        }
+
+        [DataMember]
+        public string InstanceId { get; set; }
+
+        public string Id { get; set; }
+
+        public EvaluatorException EvaluatorException { get; set; }
+
+        public List<FailedContext> FailedContexts { get; set; }
+
+        public Optional<IFailedTask> FailedTask { get; set; }
+
+        [DataMember]
+        private IFailedEvaluatorClr2Java FailedEvaluatorClr2Java { get; set; }
+
+        [DataMember]
+        private IEvaluatorRequestorClr2Java EvaluatorRequestorClr2Java { get; set; }
+
+        public IEvaluatorRequestor GetEvaluatorRequetor()
+        {
+            if (EvaluatorRequestorClr2Java == null)
+            {
+                Exceptions.Throw(new InvalidOperationException("EvaluatorRequestorClr2Java not initialized."), LOGGER);
+            }
+            return new EvaluatorRequestor(EvaluatorRequestorClr2Java);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/events/FailedTask.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/events/FailedTask.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/events/FailedTask.cs
new file mode 100644
index 0000000..0e0623a
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/events/FailedTask.cs
@@ -0,0 +1,140 @@
+/**
+ * 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.Task;
+using Org.Apache.REEF.Utilities;
+using Org.Apache.REEF.Utilities.Diagnostics;
+using Org.Apache.REEF.Utilities.Logging;
+using System;
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public class FailedTask : IFailedTask
+    {
+        private static readonly Logger LOGGER = Logger.GetLogger(typeof(FailedTask));
+        
+        public FailedTask(IFailedTaskClr2Java failedTaskClr2Java)
+        {
+            InstanceId = Guid.NewGuid().ToString("N");
+            Parse(failedTaskClr2Java);
+            FailedTaskClr2Java = failedTaskClr2Java;
+            ActiveContextClr2Java = failedTaskClr2Java.GetActiveContext();
+        }
+
+        public Optional<string> Reason { get; set; }
+
+        [DataMember]
+        public string InstanceId { get; set; }
+
+        public string Id { get; set; }
+
+        public string Message { get; set; }
+
+        public Optional<string> Description { get; set; }
+
+        public Optional<Exception> Cause { get; set; }
+
+        public Optional<byte[]> Data { get; set; }
+
+        [DataMember]
+        private IFailedTaskClr2Java FailedTaskClr2Java { get; set; }
+
+        [DataMember]
+        private IActiveContextClr2Java ActiveContextClr2Java { get; set; }
+
+        /// <summary>
+        /// Access the context the task ran (and crashed) on, if it could be recovered.
+        /// An ActiveContext is given when the task fails but the context remains alive.
+        /// On context failure, the context also fails and is surfaced via the FailedContext event.
+        /// Note that receiving an ActiveContext here is no guarantee that the context (and evaluator)
+        /// are in a consistent state. Application developers need to investigate the reason available
+        /// via getCause() to make that call.
+        /// return the context the Task ran on.
+        /// </summary>
+        public Optional<IActiveContext> GetActiveContext()
+        {
+            IActiveContext activeContext = new ActiveContext(ActiveContextClr2Java);
+            return ActiveContextClr2Java == null ? Optional<IActiveContext>.Empty() : Optional<IActiveContext>.Of(activeContext);
+        }
+
+        public Exception AsError()
+        {
+            throw new NotImplementedException();
+        }
+
+        private void Parse(IFailedTaskClr2Java failedTaskClr2Java)
+        {
+            string serializedInfo = failedTaskClr2Java.GetString();
+            LOGGER.Log(Level.Verbose, "serialized failed task: " + serializedInfo);
+            Dictionary<string, string> settings = new Dictionary<string, string>();
+            string[] components = serializedInfo.Split(',');
+            foreach (string component in components)
+            {
+                string[] pair = component.Trim().Split('=');
+                if (pair == null || pair.Length != 2)
+                {
+                    Exceptions.Throw(new ArgumentException("invalid component to be used as key-value pair:", component), LOGGER);
+                }
+                settings.Add(pair[0], pair[1]);
+            }
+
+            string id;
+            if (!settings.TryGetValue("Identifier", out id))
+            {
+                Exceptions.Throw(new ArgumentException("cannot find Identifier entry."), LOGGER);
+            }
+            Id = id;
+
+            string msg;
+            if (!settings.TryGetValue("Message", out msg))
+            {
+                LOGGER.Log(Level.Verbose, "no Message in Failed Task.");
+                msg = string.Empty;
+            }
+            Message = msg;
+
+            string description;
+            if (!settings.TryGetValue("Description", out description))
+            {
+                LOGGER.Log(Level.Verbose, "no Description in Failed Task.");
+                description = string.Empty;
+            }
+            Description = string.IsNullOrWhiteSpace(description) ? Optional<string>.Empty() : Optional<string>.Of(description);
+
+            string cause;
+            if (!settings.TryGetValue("Cause", out cause))
+            {
+                LOGGER.Log(Level.Verbose, "no Cause in Failed Task.");
+                cause = string.Empty;
+            }
+            Reason = string.IsNullOrWhiteSpace(cause) ? Optional<string>.Empty() : Optional<string>.Of(cause);
+
+            string rawData;
+            if (!settings.TryGetValue("Data", out rawData))
+            {
+                LOGGER.Log(Level.Verbose, "no Data in Failed Task.");
+                rawData = string.Empty;
+            }
+            Data = string.IsNullOrWhiteSpace(rawData) ? Optional<byte[]>.Empty() : Optional<byte[]>.Of(ByteUtilities.StringToByteArrays(rawData));
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/events/RunningTask.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/events/RunningTask.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/events/RunningTask.cs
new file mode 100644
index 0000000..5c9e26c
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/events/RunningTask.cs
@@ -0,0 +1,97 @@
+/**
+ * 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 Org.Apache.REEF.Driver.Task;
+using Org.Apache.REEF.Utilities.Logging;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public class RunningTask : IRunningTask
+    {
+        private static readonly Logger LOGGER = Logger.GetLogger(typeof(RunningTask));
+        private IRunningTaskClr2Java _runningTaskClr2Java;
+        private IActiveContextClr2Java _activeContextClr2Java;
+
+        public RunningTask(IRunningTaskClr2Java runningTaskClr2Java)
+        {
+            using (LOGGER.LogFunction("RunningTask::RunningTask"))
+            {
+                _runningTaskClr2Java = runningTaskClr2Java;
+                _activeContextClr2Java = runningTaskClr2Java.GetActiveContext();
+            }
+        }
+
+        public Context.IActiveContext ActiveContext
+        {
+            get
+            {
+                return new ActiveContext(_activeContextClr2Java);
+            }
+            
+            set
+            {
+                ActiveContext = value;
+            }
+        }
+
+        public string Id
+        {
+            get
+            {
+                return _runningTaskClr2Java.GetId();
+            }
+
+            set
+            {
+                Id = value;
+            }
+        }
+
+        public void Send(byte[] message)
+        {
+            _runningTaskClr2Java.Send(message);
+        }
+
+        public void OnNext(byte[] message)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void Suspend(byte[] message)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void Suspend()
+        {
+            throw new NotImplementedException();
+        }
+
+        public void Dispose(byte[] message)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void Dispose()
+        {
+            throw new NotImplementedException();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/events/SuspendedTask.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/events/SuspendedTask.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/events/SuspendedTask.cs
new file mode 100644
index 0000000..6c5535b
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/events/SuspendedTask.cs
@@ -0,0 +1,81 @@
+/**
+ * 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 System;
+using System.Runtime.Serialization;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    [DataContract]
+    internal class SuspendedTask : ISuspendedTask
+    {
+        internal SuspendedTask(ISuspendedTaskClr2Java suspendedTaskClr2Java)
+        {
+            InstanceId = Guid.NewGuid().ToString("N");
+            SuspendedTaskClr2Java = suspendedTaskClr2Java;
+            ActiveContextClr2Java = suspendedTaskClr2Java.GetActiveContext();
+        }
+
+        [DataMember]
+        public string InstanceId { get; set; }
+
+        public byte[] Message
+        {
+            get
+            {
+                return SuspendedTaskClr2Java.Get();
+            }
+
+            set
+            {
+            }
+        }
+
+        public string Id
+        {
+            get
+            {
+                return SuspendedTaskClr2Java.GetId();
+            }
+
+            set
+            {
+            }
+        }
+
+        public IActiveContext ActiveContext
+        {
+            get
+            {
+                return new ActiveContext(ActiveContextClr2Java);
+            }
+
+            set
+            {
+            }
+        }
+
+        [DataMember]
+        private ISuspendedTaskClr2Java SuspendedTaskClr2Java { get; set; }
+
+        [DataMember]
+        private IActiveContextClr2Java ActiveContextClr2Java { get; set; }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/bridge/events/TaskMessage.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/bridge/events/TaskMessage.cs b/lang/cs/Org.Apache.REEF.Driver/bridge/events/TaskMessage.cs
new file mode 100644
index 0000000..76250c3
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/bridge/events/TaskMessage.cs
@@ -0,0 +1,64 @@
+/**
+ * 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 System;
+using System.Runtime.Serialization;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    /// <summary>
+    /// TaskMessage which wraps ITaskMessageClr2Java
+    /// </summary>
+    [DataContract]
+    internal class TaskMessage : ITaskMessage
+    {
+        private ITaskMessageClr2Java _taskMessageClr2Java;
+        private byte[] _message;
+        private string _instanceId;
+
+        public TaskMessage(ITaskMessageClr2Java clr2Java, byte[] message)
+        {
+            _instanceId = Guid.NewGuid().ToString("N");
+            _taskMessageClr2Java = clr2Java;
+            _message = message;
+        }
+
+        [DataMember]
+        public string InstanceId
+        {
+            get { return _instanceId; }
+            set { _instanceId = value; }
+        }
+
+        [DataMember]
+        public string TaskId
+        {
+            get { return _taskMessageClr2Java.GetId(); }
+            set { }
+        }
+
+        [DataMember]
+        public byte[] Message
+        {
+            get { return _message; }
+            set { _message = value; } 
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/context/ContextConfiguration.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/context/ContextConfiguration.cs b/lang/cs/Org.Apache.REEF.Driver/context/ContextConfiguration.cs
new file mode 100644
index 0000000..2fae867
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/context/ContextConfiguration.cs
@@ -0,0 +1,93 @@
+/**
+ * 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.Context;
+using Org.Apache.REEF.Common.Events;
+using Org.Apache.REEF.Tasks;
+using Org.Apache.REEF.Tasks.Events;
+using Org.Apache.REEF.Tang.Formats;
+using Org.Apache.REEF.Tang.Util;
+using System;
+using System.Diagnostics.CodeAnalysis;
+
+[module: SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1401:FieldsMustBePrivate", Justification = "static field, typical usage in configurations")]
+
+namespace Org.Apache.REEF.Driver.Context
+{
+    public class ContextConfiguration : ConfigurationModuleBuilder
+    {
+        /// <summary>
+        ///  The identifier of the context.
+        /// </summary>
+        [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
+        public static readonly RequiredParameter<string> Identifier = new RequiredParameter<string>();
+
+        /// <summary>
+        ///  for context start. Defaults to logging if not bound.
+        /// </summary>
+        [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
+        public static readonly OptionalImpl<IObserver<IContextStart>> OnContextStart = new OptionalImpl<IObserver<IContextStart>>();
+
+        /// <summary>
+        /// for context stop. Defaults to logging if not bound.
+        /// </summary>
+        [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
+        public static readonly OptionalImpl<IObserver<IContextStop>> OnContextStop = new OptionalImpl<IObserver<IContextStop>>();
+
+        /// <summary>
+        ///  to be informed right before a Task enters its call() method.
+        /// </summary>
+        [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
+        public static readonly OptionalImpl<IObserver<ITaskStart>> OnTaskStart = new OptionalImpl<IObserver<ITaskStart>>();
+
+        /// <summary>
+        ///  to be informed right after a Task exits its call() method.
+        /// </summary>
+        [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
+        public static readonly OptionalImpl<IObserver<ITaskStop>> OnTaskStop = new OptionalImpl<IObserver<ITaskStop>>();
+
+        /// <summary>
+        ///  Source of messages to be called whenever the evaluator is about to make a heartbeat.
+        /// </summary>
+        [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
+        public static readonly OptionalImpl<IContextMessageSource> OnSendMessage = new OptionalImpl<IContextMessageSource>();
+
+        /// <summary>
+        ///   Driver has sent the context a message, and this parameter is used to register a handler on the context for processing that message.
+        /// </summary>
+        [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
+        public static readonly OptionalImpl<IContextMessageHandler> OnMessage = new OptionalImpl<IContextMessageHandler>();
+
+        public static ConfigurationModule ConfigurationModule
+        {
+            get
+            {
+                return new ContextConfiguration()
+                    .BindNamedParameter(GenericType<ContextConfigurationOptions.ContextIdentifier>.Class, Identifier)
+                    .BindSetEntry(GenericType<ContextConfigurationOptions.StartHandlers>.Class, OnContextStart)
+                    .BindSetEntry(GenericType<ContextConfigurationOptions.StopHandlers>.Class, OnContextStop)
+                    .BindSetEntry(GenericType<ContextConfigurationOptions.ContextMessageSources>.Class, OnSendMessage)
+                    .BindSetEntry(GenericType<ContextConfigurationOptions.ContextMessageHandlers>.Class, OnMessage)
+                    .BindSetEntry(GenericType<TaskConfigurationOptions.StartHandlers>.Class, OnTaskStart)
+                    .BindSetEntry(GenericType<TaskConfigurationOptions.StopHandlers>.Class, OnTaskStop)
+                    .Build();
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Driver/context/ContextConfigurationOptions.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/context/ContextConfigurationOptions.cs b/lang/cs/Org.Apache.REEF.Driver/context/ContextConfigurationOptions.cs
new file mode 100644
index 0000000..632fdbc
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/context/ContextConfigurationOptions.cs
@@ -0,0 +1,60 @@
+/**
+ * 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.Context;
+using Org.Apache.REEF.Common.Events;
+using Org.Apache.REEF.Driver.Defaults;
+using Org.Apache.REEF.Tang.Annotations;
+using Org.Apache.REEF.Tang.Formats;
+using System;
+using System.Collections.Generic;
+
+namespace Org.Apache.REEF.Driver.Context
+{
+    /// <summary>
+    ///  Configuration parameters for ContextConfiguration module.
+    /// </summary>
+    public class ContextConfigurationOptions : ConfigurationModuleBuilder 
+    {
+        [NamedParameter(documentation: "The identifier for the context.")]
+        public class ContextIdentifier : Name<string>
+        {
+        }
+
+        [NamedParameter(documentation: "The set of event handlers for the ContextStart event", defaultClasses: new[] { typeof(DefaultContextStartHandler) })]
+        public class StartHandlers : Name<ISet<IObserver<IContextStart>>>
+        {
+        }
+
+        [NamedParameter(documentation: "The set of event handlers for the ContextStop event", defaultClasses: new[] { typeof(DefaultContextStopHandler) })]
+        public class StopHandlers : Name<ISet<IObserver<IContextStop>>>
+        {
+        }
+
+        [NamedParameter(documentation: "The set of ContextMessageSource implementations called during heartbeats.", defaultClasses: new[] { typeof(DefaultContextMessageSource) })]
+        public class ContextMessageSources : Name<ISet<IContextMessageSource>>
+        {
+        }
+
+        [NamedParameter(documentation: "The set of Context message handlers.")]
+        public class ContextMessageHandlers : Name<ISet<IContextMessageHandler>>
+        {
+        }
+    }
+}