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:10 UTC

[49/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.Common/evaluator/DefaultYarnOneBoxHttpDriverConnection.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/evaluator/DefaultYarnOneBoxHttpDriverConnection.cs b/lang/cs/Org.Apache.REEF.Common/evaluator/DefaultYarnOneBoxHttpDriverConnection.cs
new file mode 100644
index 0000000..9a4974c
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/evaluator/DefaultYarnOneBoxHttpDriverConnection.cs
@@ -0,0 +1,46 @@
+/**
+ * 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;
+using System.Globalization;
+
+namespace Org.Apache.REEF.Common.Evaluator
+{
+    public class DefaultYarnOneBoxHttpDriverConnection : IDriverConnection
+    {
+        [Inject]
+        public DefaultYarnOneBoxHttpDriverConnection()
+        {
+        }
+
+        public DriverInformation GetDriverInformation(string applicationId)
+        {
+            // e.g., http://yingdac1:8088/proxy/application_1407519727821_0012/reef/v1/driver
+            string oneBoxHost = string.Format(CultureInfo.InvariantCulture, "http://{0}:8088/proxy/", Environment.MachineName);
+            Uri queryUri = new Uri(
+                string.Concat(
+                oneBoxHost,
+                applicationId,
+                Constants.HttpReefUriSpecification,
+                Constants.HttpDriverUriTarget));
+            return DriverInformation.GetDriverInformationFromHttp(queryUri);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Common/evaluator/DriverInformation.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/evaluator/DriverInformation.cs b/lang/cs/Org.Apache.REEF.Common/evaluator/DriverInformation.cs
new file mode 100644
index 0000000..055784e
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/evaluator/DriverInformation.cs
@@ -0,0 +1,136 @@
+/**
+ * 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.Avro;
+using Org.Apache.REEF.Utilities.Logging;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Text;
+
+namespace Org.Apache.REEF.Common.Evaluator
+{
+    public class DriverInformation
+    {
+        private static readonly Logger LOGGER = Logger.GetLogger(typeof(DriverInformation));
+        
+        private string _rid;
+
+        private string _startTime;
+
+        private string _nameServerId;
+
+        private IList<AvroReefServiceInfo> _services;
+
+        public DriverInformation(string rid, string startTime, IList<AvroReefServiceInfo> services)
+        {
+            _rid = rid;
+            _startTime = startTime;
+            _services = services;
+
+            if (_services == null)
+            {
+                LOGGER.Log(Level.Warning, "no services information from driver.");
+            }
+            else
+            {
+                AvroReefServiceInfo nameServerInfo =
+                  _services.FirstOrDefault(
+                      s => s.serviceName.Equals(Constants.NameServerServiceName, StringComparison.OrdinalIgnoreCase));
+                if (nameServerInfo != null)
+                {
+                    _nameServerId = nameServerInfo.serviceInfo;
+                }
+            }  
+        }
+
+        public string DriverRemoteIdentifier
+        {
+            get
+            {
+                return _rid;
+            }
+        }
+
+        public string DriverStartTime
+        {
+            get
+            {
+                return _startTime;
+            }
+        }
+
+        public string NameServerId
+        {
+            get
+            {
+                return _nameServerId;
+            }
+        }
+
+        public static DriverInformation GetDriverInformationFromHttp(Uri queryUri)
+        {
+            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(queryUri);
+            request.AllowAutoRedirect = false;
+            request.KeepAlive = false;
+            request.ContentType = "text/html";
+
+            string driverInfomation;
+            AvroDriverInfo info = null;
+            try
+            {
+                using (HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse())
+                {
+                    Stream stream = webResponse.GetResponseStream();
+                    if (stream == null)
+                    {
+                        return null;
+                    }
+                    using (StreamReader streamReader = new StreamReader(stream, Encoding.UTF8))
+                    {
+                        driverInfomation = streamReader.ReadToEnd();
+                        LOGGER.Log(Level.Verbose, "Http response line: " + driverInfomation);
+                        info = AvroJsonSerializer<AvroDriverInfo>.FromString(driverInfomation);
+                    }
+                }
+            }
+            catch (WebException)
+            {
+                LOGGER.Log(Level.Warning, string.Format(CultureInfo.InvariantCulture, "In RECOVERY mode, cannot connect to [{0}] for driver information, will try again later.", queryUri));
+                return null;
+            }
+            catch (Exception e)
+            {
+                Org.Apache.REEF.Utilities.Diagnostics.Exceptions.CaughtAndThrow(e, Level.Error, string.Format(CultureInfo.InvariantCulture, "Cannot read content from {0}.", queryUri), LOGGER);
+            }
+
+            if (info != null)
+            {
+                LOGGER.Log(
+                    Level.Verbose, 
+                    string.Format(CultureInfo.InvariantCulture, "Driver information extracted with remote identier [{0}], start time [{1}], and servics [{2}]", info.remoteId, info.startTime, info.services));
+                return new DriverInformation(info.remoteId, info.startTime, info.services);
+            }
+            return null;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Common/evaluator/EvaluatorOperationState.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/evaluator/EvaluatorOperationState.cs b/lang/cs/Org.Apache.REEF.Common/evaluator/EvaluatorOperationState.cs
new file mode 100644
index 0000000..22ffa67
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/evaluator/EvaluatorOperationState.cs
@@ -0,0 +1,39 @@
+/**
+ * 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.Common.Evaluator
+{
+    public enum EvaluatorOperationState
+    {
+        /// <summary>
+        /// default state
+        /// </summary>
+        UNINITIATED = 0,
+
+        /// <summary>
+        /// normal operational state
+        /// </summary>
+        OPERATIONAL = 1,
+
+        /// <summary>
+        /// in the process of recovering 
+        /// </summary>
+        RECOVERY = 2
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Common/evaluator/EvaluatorRuntimeState.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/evaluator/EvaluatorRuntimeState.cs b/lang/cs/Org.Apache.REEF.Common/evaluator/EvaluatorRuntimeState.cs
new file mode 100644
index 0000000..2db37a8
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/evaluator/EvaluatorRuntimeState.cs
@@ -0,0 +1,39 @@
+/**
+ * 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.Common.evaluator
+{
+    public enum EvaluatorRuntimeState
+    {
+        /// <summary>
+        /// default state
+        /// </summary>
+        UNINITIATED = 0,
+
+        /// <summary>
+        /// normal operational state
+        /// </summary>
+        RUNNING = 1,
+
+        /// <summary>
+        /// in the process of recovering 
+        /// </summary>
+        RECOVERY = 2
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Common/evaluator/EvaluatorType.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/evaluator/EvaluatorType.cs b/lang/cs/Org.Apache.REEF.Common/evaluator/EvaluatorType.cs
new file mode 100644
index 0000000..4269dd2
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/evaluator/EvaluatorType.cs
@@ -0,0 +1,39 @@
+/**
+ * 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.Common.Evaluator
+{
+    public enum EvaluatorType
+    {
+        /// <summary>
+        /// default  type
+        /// </summary>
+        UNDECIDED = 0,
+
+        /// <summary>
+        /// Indicates an Evaluator that runs on the JVM
+        /// </summary>
+        JVM = 1,
+
+        /// <summary>
+        /// Indicates an Evaluator that runs on the CLR
+        /// </summary>
+        CLR = 2
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Common/evaluator/IDriverConnection.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/evaluator/IDriverConnection.cs b/lang/cs/Org.Apache.REEF.Common/evaluator/IDriverConnection.cs
new file mode 100644
index 0000000..10c6d6e
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/evaluator/IDriverConnection.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.Common.Evaluator
+{
+    public interface IDriverConnection
+    {
+        DriverInformation GetDriverInformation(string applicationId);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Common/events/IContextStart.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/events/IContextStart.cs b/lang/cs/Org.Apache.REEF.Common/events/IContextStart.cs
new file mode 100644
index 0000000..924f2c4
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/events/IContextStart.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.Common.Events
+{
+    public interface IContextStart
+    {
+        string Id { 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.Common/events/IContextStop.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/events/IContextStop.cs b/lang/cs/Org.Apache.REEF.Common/events/IContextStop.cs
new file mode 100644
index 0000000..bdc5a73
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/events/IContextStop.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.Common.Events
+{
+    public interface IContextStop
+    {
+        string Id { 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.Common/exceptions/EvaluatorException.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/exceptions/EvaluatorException.cs b/lang/cs/Org.Apache.REEF.Common/exceptions/EvaluatorException.cs
new file mode 100644
index 0000000..33248ae
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/exceptions/EvaluatorException.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.Common.Task;
+using Org.Apache.REEF.Utilities;
+using System;
+
+namespace Org.Apache.REEF.Common.Exceptions
+{
+    public class EvaluatorException : System.Exception, IIdentifiable
+    {
+        private readonly string _evaluatorId;
+
+        public EvaluatorException(string evaluatorId)
+        {
+            _evaluatorId = evaluatorId;
+            RunningTask = null;
+        }
+
+        public EvaluatorException(string evaluatorId, string message, System.Exception cause)
+            : base(message, cause)
+        {
+            _evaluatorId = evaluatorId;
+            RunningTask = null;
+        }
+
+        public EvaluatorException(string evaluatorId, string message)
+            : this(evaluatorId, message, (IRunningTask)null)
+        {
+        }
+
+        public EvaluatorException(string evaluatorId, string message, IRunningTask runningTask)
+            : base(message)
+        {
+            _evaluatorId = evaluatorId;
+            RunningTask = runningTask;
+        }
+
+        public EvaluatorException(string evaluatorId, System.Exception cause)
+            : this(evaluatorId, cause, null)
+        {
+        }
+
+        public EvaluatorException(string evaluatorId, Exception cause, IRunningTask runningTask)
+            : base(string.Empty, cause)
+        {
+            _evaluatorId = evaluatorId;
+            RunningTask = runningTask;
+        }
+
+        public IRunningTask RunningTask { get; set; }
+
+        public string Id
+        {
+            get { return _evaluatorId; }
+            set { }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Common/exceptions/JobException.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/exceptions/JobException.cs b/lang/cs/Org.Apache.REEF.Common/exceptions/JobException.cs
new file mode 100644
index 0000000..0cceecc
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/exceptions/JobException.cs
@@ -0,0 +1,58 @@
+/**
+ * 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.Utilities;
+using System;
+
+namespace Org.Apache.REEF.Common
+{
+    public class JobException : Exception, IIdentifiable
+    {
+        private string _jobId;
+
+        public JobException(string jobId)
+        {
+            _jobId = jobId;
+        }
+
+        public JobException(string jobId, string message, Exception cause) 
+            : base(message, cause)
+        {
+            _jobId = jobId;
+        }
+
+        public JobException(string jobId, string message)
+            : base(message)
+        {
+            _jobId = jobId;
+        }
+
+        public JobException(string jobId, Exception cause)
+            : base(string.Empty, cause)
+        {
+            _jobId = jobId;
+        }
+
+        public string Id
+        {
+            get { return _jobId; }
+            set { }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Common/io/INameClient.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/io/INameClient.cs b/lang/cs/Org.Apache.REEF.Common/io/INameClient.cs
new file mode 100644
index 0000000..941d023
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/io/INameClient.cs
@@ -0,0 +1,71 @@
+/**
+ * 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.Net;
+
+namespace Org.Apache.REEF.Common.io
+{
+    /// <summary>
+    /// Client for the Reef name service. 
+    /// Used to register, unregister, and lookup IP Addresses of known hosts.
+    /// </summary>
+    public interface INameClient : IDisposable
+    {
+        /// <summary>
+        /// Registers the identifier with the NameService.  
+        /// Overwrites the previous mapping if the identifier has already 
+        /// been registered.
+        /// </summary>
+        /// <param name="id">The key used to map the remote endpoint</param>
+        /// <param name="endpoint">The endpoint to map</param>
+        void Register(string id, IPEndPoint endpoint);
+
+        /// <summary>
+        /// Unregisters the remote identifier with the NameService
+        /// </summary>
+        /// <param name="id">The identifier to unregister</param>
+        void Unregister(string id);
+
+        /// <summary>
+        /// Looks up the IPEndpoint for the registered identifier.
+        /// </summary>
+        /// <param name="id">The identifier to look up</param>
+        /// <returns>The mapped IPEndpoint for the identifier, or null if
+        /// the identifier has not been registered with the NameService</returns>
+        IPEndPoint Lookup(string id);
+
+        /// <summary>
+        /// Looks up the IPEndpoint for each of the registered identifiers in the list.
+        /// </summary>
+        /// <param name="ids">The list of identifiers to look up</param>
+        /// <returns>The list of NameAssignments representing a pair of identifer
+        /// and mapped IPEndpoint for that identifier.  If any of the requested identifiers
+        /// are not registered with the NameService, their corresponding NameAssignment
+        /// IPEndpoint value will be null.</returns>
+        List<NameAssignment> Lookup(List<string> ids);
+
+        /// <summary>
+        /// Restart the name client in case of failure.
+        /// </summary>
+        /// <param name="serverEndpoint">The new server endpoint to connect to</param>
+        void Restart(IPEndPoint serverEndpoint);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Common/io/NameAssignment.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/io/NameAssignment.cs b/lang/cs/Org.Apache.REEF.Common/io/NameAssignment.cs
new file mode 100644
index 0000000..8751244
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/io/NameAssignment.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 System.Net;
+using System.Net.Sockets;
+
+namespace Org.Apache.REEF.Common.io
+{
+    /// <summary>
+    /// Tuple containing the string identifier and IPEndpoint.
+    /// Used by NameServer and NameClient
+    /// </summary>
+    public class NameAssignment
+    {
+        public NameAssignment(string id, IPEndPoint endpoint)
+        {
+            Identifier = id;
+            Endpoint = endpoint;
+        }
+
+        public NameAssignment(string id, string address, int port)
+        {
+            Identifier = id;
+            IPAddress ipAddress;
+            if (!IPAddress.TryParse(address, out ipAddress))
+            {
+                IPHostEntry hostEntry = Dns.GetHostEntry(address);
+                foreach (var ip in hostEntry.AddressList)
+                {
+                    if (ip.AddressFamily == AddressFamily.InterNetwork)
+                    {
+                        ipAddress = ip;
+                        break;
+                    }
+                }
+            }
+            Endpoint = new IPEndPoint(ipAddress, port);
+        }
+
+        public string Identifier { get; set; }
+
+        public IPEndPoint Endpoint { get; set; }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Common/io/NamingConfiguration.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/io/NamingConfiguration.cs b/lang/cs/Org.Apache.REEF.Common/io/NamingConfiguration.cs
new file mode 100644
index 0000000..9a73267
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/io/NamingConfiguration.cs
@@ -0,0 +1,45 @@
+/**
+ * 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.Diagnostics.CodeAnalysis;
+using Org.Apache.REEF.Tang.Formats;
+using Org.Apache.REEF.Tang.Util;
+
+namespace Org.Apache.REEF.Common.io
+{
+    public class NamingConfiguration : ConfigurationModuleBuilder
+    {
+        [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
+        public static readonly RequiredParameter<string> NameServerAddress = new RequiredParameter<string>();
+
+        [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
+        public static readonly RequiredParameter<int> NameServerPort = new RequiredParameter<int>();
+
+        public static ConfigurationModule ConfigurationModule
+        {
+            get
+            {
+                return new NamingConfiguration()
+                    .BindNamedParameter(GenericType<NamingConfigurationOptions.NameServerAddress>.Class, NameServerAddress)
+                    .BindNamedParameter(GenericType<NamingConfigurationOptions.NameServerPort>.Class, NameServerPort)
+                    .Build();
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Common/io/NamingConfigurationOptions.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/io/NamingConfigurationOptions.cs b/lang/cs/Org.Apache.REEF.Common/io/NamingConfigurationOptions.cs
new file mode 100644
index 0000000..e1096cd
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/io/NamingConfigurationOptions.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.Tang.Annotations;
+
+namespace Org.Apache.REEF.Common.io
+{
+    public class NamingConfigurationOptions
+    {
+        [NamedParameter("IP address of NameServer")]
+        public class NameServerAddress : Name<string>
+        {
+        }
+
+        [NamedParameter("Port of NameServer")]
+        public class NameServerPort : Name<int>
+        {
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Common/packages.config
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/packages.config b/lang/cs/Org.Apache.REEF.Common/packages.config
new file mode 100644
index 0000000..88cf17b
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/packages.config
@@ -0,0 +1,26 @@
+<?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.
+-->
+<packages>
+  <package id="Microsoft.Hadoop.Avro" version="1.4.0.0" targetFramework="net45" />
+  <package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" />
+  <package id="protobuf-net" version="2.0.0.668" targetFramework="net45" />
+  <package id="Rx-Core" version="2.2.5" targetFramework="net45" />
+  <package id="Rx-Interfaces" version="2.2.5" targetFramework="net45" />
+</packages>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Common/protobuf/cs/ClientRuntime.pb.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/protobuf/cs/ClientRuntime.pb.cs b/lang/cs/Org.Apache.REEF.Common/protobuf/cs/ClientRuntime.pb.cs
new file mode 100644
index 0000000..970dcc3
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/protobuf/cs/ClientRuntime.pb.cs
@@ -0,0 +1,147 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+// Generated from: client_runtime.proto
+// Note: requires additional types generated from: reef_service_protos.proto
+
+using Org.Apache.REEF.Common.ProtoBuf.ReefServiceProto;
+
+namespace Org.Apache.REEF.Common.ProtoBuf.ClienRuntimeProto{
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"JobSubmissionProto")]
+  public partial class JobSubmissionProto : global::ProtoBuf.IExtensible
+  {
+    public JobSubmissionProto() {}
+    
+    private string _identifier;
+    [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"identifier", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string identifier
+    {
+      get { return _identifier; }
+      set { _identifier = value; }
+    }
+    private string _remote_id;
+    [global::ProtoBuf.ProtoMember(2, IsRequired = true, Name=@"remote_id", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string remote_id
+    {
+      get { return _remote_id; }
+      set { _remote_id = value; }
+    }
+    private string _configuration;
+    [global::ProtoBuf.ProtoMember(5, IsRequired = true, Name=@"configuration", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string configuration
+    {
+      get { return _configuration; }
+      set { _configuration = value; }
+    }
+    private string _user_name;
+    [global::ProtoBuf.ProtoMember(6, IsRequired = true, Name=@"user_name", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string user_name
+    {
+      get { return _user_name; }
+      set { _user_name = value; }
+    }
+    private SIZE _driver_size = SIZE.SMALL;
+    [global::ProtoBuf.ProtoMember(7, IsRequired = false, Name=@"driver_size", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    [global::System.ComponentModel.DefaultValue(SIZE.SMALL)]
+    public SIZE driver_size
+    {
+      get { return _driver_size; }
+      set { _driver_size = value; }
+    }
+    private int _driver_memory = default(int);
+    [global::ProtoBuf.ProtoMember(8, IsRequired = false, Name=@"driver_memory", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    [global::System.ComponentModel.DefaultValue(default(int))]
+    public int driver_memory
+    {
+      get { return _driver_memory; }
+      set { _driver_memory = value; }
+    }
+    private int _priority = default(int);
+    [global::ProtoBuf.ProtoMember(9, IsRequired = false, Name=@"priority", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    [global::System.ComponentModel.DefaultValue(default(int))]
+    public int priority
+    {
+      get { return _priority; }
+      set { _priority = value; }
+    }
+    private string _queue = "";
+    [global::ProtoBuf.ProtoMember(10, IsRequired = false, Name=@"queue", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue("")]
+    public string queue
+    {
+      get { return _queue; }
+      set { _queue = value; }
+    }
+    private readonly global::System.Collections.Generic.List<FileResourceProto> _global_file = new global::System.Collections.Generic.List<FileResourceProto>();
+    [global::ProtoBuf.ProtoMember(11, Name=@"global_file", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public global::System.Collections.Generic.List<FileResourceProto> global_file
+    {
+      get { return _global_file; }
+    }
+  
+    private readonly global::System.Collections.Generic.List<FileResourceProto> _local_File = new global::System.Collections.Generic.List<FileResourceProto>();
+    [global::ProtoBuf.ProtoMember(12, Name=@"local_File", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public global::System.Collections.Generic.List<FileResourceProto> local_File
+    {
+      get { return _local_File; }
+    }
+  
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"JobControlProto")]
+  public partial class JobControlProto : global::ProtoBuf.IExtensible
+  {
+    public JobControlProto() {}
+    
+    private string _identifier;
+    [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"identifier", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string identifier
+    {
+      get { return _identifier; }
+      set { _identifier = value; }
+    }
+    private Signal _signal = Signal.SIG_TERMINATE;
+    [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name=@"signal", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    [global::System.ComponentModel.DefaultValue(Signal.SIG_TERMINATE)]
+    public Signal signal
+    {
+      get { return _signal; }
+      set { _signal = value; }
+    }
+    private byte[] _message = null;
+    [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name=@"message", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public byte[] message
+    {
+      get { return _message; }
+      set { _message = value; }
+    }
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+    [global::ProtoBuf.ProtoContract(Name=@"Signal")]
+    public enum Signal
+    {
+            
+      [global::ProtoBuf.ProtoEnum(Name=@"SIG_TERMINATE", Value=1)]
+      SIG_TERMINATE = 1,
+            
+      [global::ProtoBuf.ProtoEnum(Name=@"SIG_SUSPEND", Value=2)]
+      SIG_SUSPEND = 2,
+            
+      [global::ProtoBuf.ProtoEnum(Name=@"SIG_RESUME", Value=3)]
+      SIG_RESUME = 3
+    }
+  
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Common/protobuf/cs/DriverRuntime.pb.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/protobuf/cs/DriverRuntime.pb.cs b/lang/cs/Org.Apache.REEF.Common/protobuf/cs/DriverRuntime.pb.cs
new file mode 100644
index 0000000..6a12cf1
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/protobuf/cs/DriverRuntime.pb.cs
@@ -0,0 +1,339 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+// Generated from: driver_runtime.proto
+// Note: requires additional types generated from: reef_service_protos.proto
+
+using Org.Apache.REEF.Common.ProtoBuf.ReefServiceProto;
+
+namespace Org.Apache.REEF.Common.ProtoBuf.DriverRuntimeProto
+{
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"DriverProcessRegistrationProto")]
+  public partial class DriverProcessRegistrationProto : global::ProtoBuf.IExtensible
+  {
+    public DriverProcessRegistrationProto() {}
+    
+    private string _remote_identifier;
+    [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"remote_identifier", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string remote_identifier
+    {
+      get { return _remote_identifier; }
+      set { _remote_identifier = value; }
+    }
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"NodeDescriptorProto")]
+  public partial class NodeDescriptorProto : global::ProtoBuf.IExtensible
+  {
+    public NodeDescriptorProto() {}
+    
+    private string _identifier;
+    [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"identifier", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string identifier
+    {
+      get { return _identifier; }
+      set { _identifier = value; }
+    }
+    private string _host_name;
+    [global::ProtoBuf.ProtoMember(2, IsRequired = true, Name=@"host_name", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string host_name
+    {
+      get { return _host_name; }
+      set { _host_name = value; }
+    }
+    private int _port;
+    [global::ProtoBuf.ProtoMember(3, IsRequired = true, Name=@"port", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    public int port
+    {
+      get { return _port; }
+      set { _port = value; }
+    }
+    private int _memory_size;
+    [global::ProtoBuf.ProtoMember(4, IsRequired = true, Name=@"memory_size", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    public int memory_size
+    {
+      get { return _memory_size; }
+      set { _memory_size = value; }
+    }
+    private string _rack_name = "";
+    [global::ProtoBuf.ProtoMember(5, IsRequired = false, Name=@"rack_name", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue("")]
+    public string rack_name
+    {
+      get { return _rack_name; }
+      set { _rack_name = value; }
+    }
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"ResourceAllocationProto")]
+  public partial class ResourceAllocationProto : global::ProtoBuf.IExtensible
+  {
+    public ResourceAllocationProto() {}
+    
+    private string _identifier;
+    [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"identifier", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string identifier
+    {
+      get { return _identifier; }
+      set { _identifier = value; }
+    }
+    private int _resource_memory;
+    [global::ProtoBuf.ProtoMember(2, IsRequired = true, Name=@"resource_memory", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    public int resource_memory
+    {
+      get { return _resource_memory; }
+      set { _resource_memory = value; }
+    }
+    private string _node_id;
+    [global::ProtoBuf.ProtoMember(3, IsRequired = true, Name=@"node_id", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string node_id
+    {
+      get { return _node_id; }
+      set { _node_id = value; }
+    }
+    private int _virtual_cores = default(int);
+    [global::ProtoBuf.ProtoMember(4, IsRequired = false, Name=@"virtual_cores", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    [global::System.ComponentModel.DefaultValue(default(int))]
+    public int virtual_cores
+    {
+      get { return _virtual_cores; }
+      set { _virtual_cores = value; }
+    }
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"ResourceStatusProto")]
+  public partial class ResourceStatusProto : global::ProtoBuf.IExtensible
+  {
+    public ResourceStatusProto() {}
+    
+    private string _identifier;
+    [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"identifier", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string identifier
+    {
+      get { return _identifier; }
+      set { _identifier = value; }
+    }
+    private State _state;
+    [global::ProtoBuf.ProtoMember(2, IsRequired = true, Name=@"state", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    public State state
+    {
+      get { return _state; }
+      set { _state = value; }
+    }
+    private string _diagnostics = "";
+    [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name=@"diagnostics", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue("")]
+    public string diagnostics
+    {
+      get { return _diagnostics; }
+      set { _diagnostics = value; }
+    }
+    private int _exit_code = default(int);
+    [global::ProtoBuf.ProtoMember(4, IsRequired = false, Name=@"exit_code", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    [global::System.ComponentModel.DefaultValue(default(int))]
+    public int exit_code
+    {
+      get { return _exit_code; }
+      set { _exit_code = value; }
+    }
+    private bool _is_from_previous_driver = default(bool);
+    [global::ProtoBuf.ProtoMember(5, IsRequired = false, Name=@"is_from_previous_driver", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(default(bool))]
+    public bool is_from_previous_driver
+    {
+      get { return _is_from_previous_driver; }
+      set { _is_from_previous_driver = value; }
+    }
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"RuntimeStatusProto")]
+  public partial class RuntimeStatusProto : global::ProtoBuf.IExtensible
+  {
+    public RuntimeStatusProto() {}
+    
+    private string _name;
+    [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"name", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string name
+    {
+      get { return _name; }
+      set { _name = value; }
+    }
+    private State _state;
+    [global::ProtoBuf.ProtoMember(2, IsRequired = true, Name=@"state", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    public State state
+    {
+      get { return _state; }
+      set { _state = value; }
+    }
+    private RuntimeErrorProto _error = null;
+    [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name=@"error", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public RuntimeErrorProto error
+    {
+      get { return _error; }
+      set { _error = value; }
+    }
+    private int _outstanding_container_requests = default(int);
+    [global::ProtoBuf.ProtoMember(5, IsRequired = false, Name=@"outstanding_container_requests", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    [global::System.ComponentModel.DefaultValue(default(int))]
+    public int outstanding_container_requests
+    {
+      get { return _outstanding_container_requests; }
+      set { _outstanding_container_requests = value; }
+    }
+    private readonly global::System.Collections.Generic.List<string> _container_allocation = new global::System.Collections.Generic.List<string>();
+    [global::ProtoBuf.ProtoMember(6, Name=@"container_allocation", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public global::System.Collections.Generic.List<string> container_allocation
+    {
+      get { return _container_allocation; }
+    }
+  
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"ResourceRequestProto")]
+  public partial class ResourceRequestProto : global::ProtoBuf.IExtensible
+  {
+    public ResourceRequestProto() {}
+    
+    private int _memory_size = default(int);
+    [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name=@"memory_size", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    [global::System.ComponentModel.DefaultValue(default(int))]
+    public int memory_size
+    {
+      get { return _memory_size; }
+      set { _memory_size = value; }
+    }
+    private int _priority = default(int);
+    [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name=@"priority", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    [global::System.ComponentModel.DefaultValue(default(int))]
+    public int priority
+    {
+      get { return _priority; }
+      set { _priority = value; }
+    }
+    private int _virtual_cores = default(int);
+    [global::ProtoBuf.ProtoMember(4, IsRequired = false, Name=@"virtual_cores", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    [global::System.ComponentModel.DefaultValue(default(int))]
+    public int virtual_cores
+    {
+      get { return _virtual_cores; }
+      set { _virtual_cores = value; }
+    }
+    private int _resource_count;
+    [global::ProtoBuf.ProtoMember(5, IsRequired = true, Name=@"resource_count", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    public int resource_count
+    {
+      get { return _resource_count; }
+      set { _resource_count = value; }
+    }
+    private readonly global::System.Collections.Generic.List<string> _node_name = new global::System.Collections.Generic.List<string>();
+    [global::ProtoBuf.ProtoMember(6, Name=@"node_name", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public global::System.Collections.Generic.List<string> node_name
+    {
+      get { return _node_name; }
+    }
+  
+    private readonly global::System.Collections.Generic.List<string> _rack_name = new global::System.Collections.Generic.List<string>();
+    [global::ProtoBuf.ProtoMember(7, Name=@"rack_name", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public global::System.Collections.Generic.List<string> rack_name
+    {
+      get { return _rack_name; }
+    }
+  
+    private bool _relax_locality = default(bool);
+    [global::ProtoBuf.ProtoMember(10, IsRequired = false, Name=@"relax_locality", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(default(bool))]
+    public bool relax_locality
+    {
+      get { return _relax_locality; }
+      set { _relax_locality = value; }
+    }
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"ResourceReleaseProto")]
+  public partial class ResourceReleaseProto : global::ProtoBuf.IExtensible
+  {
+    public ResourceReleaseProto() {}
+    
+    private string _identifier;
+    [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"identifier", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string identifier
+    {
+      get { return _identifier; }
+      set { _identifier = value; }
+    }
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"ResourceLaunchProto")]
+  public partial class ResourceLaunchProto : global::ProtoBuf.IExtensible
+  {
+    public ResourceLaunchProto() {}
+    
+    private string _identifier;
+    [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"identifier", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string identifier
+    {
+      get { return _identifier; }
+      set { _identifier = value; }
+    }
+    private string _remote_id;
+    [global::ProtoBuf.ProtoMember(2, IsRequired = true, Name=@"remote_id", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string remote_id
+    {
+      get { return _remote_id; }
+      set { _remote_id = value; }
+    }
+    private string _evaluator_conf;
+    [global::ProtoBuf.ProtoMember(3, IsRequired = true, Name=@"evaluator_conf", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string evaluator_conf
+    {
+      get { return _evaluator_conf; }
+      set { _evaluator_conf = value; }
+    }
+    private ProcessType _type;
+    [global::ProtoBuf.ProtoMember(4, IsRequired = true, Name=@"type", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    public ProcessType type
+    {
+      get { return _type; }
+      set { _type = value; }
+    }
+    private readonly global::System.Collections.Generic.List<FileResourceProto> _file = new global::System.Collections.Generic.List<FileResourceProto>();
+    [global::ProtoBuf.ProtoMember(10, Name=@"file", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public global::System.Collections.Generic.List<FileResourceProto> file
+    {
+      get { return _file; }
+    }
+  
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Common/protobuf/cs/EvaluatorRunTime.pb.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/protobuf/cs/EvaluatorRunTime.pb.cs b/lang/cs/Org.Apache.REEF.Common/protobuf/cs/EvaluatorRunTime.pb.cs
new file mode 100644
index 0000000..2e7ae9d
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/protobuf/cs/EvaluatorRunTime.pb.cs
@@ -0,0 +1,305 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using Org.Apache.REEF.Common.ProtoBuf.ReefServiceProto;
+// Generated from: evaluator_runtime.proto
+// Note: requires additional types generated from: reef_service_protos.proto
+namespace Org.Apache.REEF.Common.ProtoBuf.EvaluatorRunTimeProto
+{
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"StopEvaluatorProto")]
+  public partial class StopEvaluatorProto : global::ProtoBuf.IExtensible
+  {
+    public StopEvaluatorProto() {}
+    
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"KillEvaluatorProto")]
+  public partial class KillEvaluatorProto : global::ProtoBuf.IExtensible
+  {
+    public KillEvaluatorProto() {}
+    
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"StartTaskProto")]
+  public partial class StartTaskProto : global::ProtoBuf.IExtensible
+  {
+    public StartTaskProto() {}
+    
+    private string _context_id;
+    [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"context_id", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string context_id
+    {
+      get { return _context_id; }
+      set { _context_id = value; }
+    }
+    private string _configuration;
+    [global::ProtoBuf.ProtoMember(2, IsRequired = true, Name=@"configuration", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string configuration
+    {
+      get { return _configuration; }
+      set { _configuration = value; }
+    }
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"AddContextProto")]
+  public partial class AddContextProto : global::ProtoBuf.IExtensible
+  {
+    public AddContextProto() {}
+    
+    private string _parent_context_id;
+    [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"parent_context_id", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string parent_context_id
+    {
+      get { return _parent_context_id; }
+      set { _parent_context_id = value; }
+    }
+    private string _context_configuration;
+    [global::ProtoBuf.ProtoMember(2, IsRequired = true, Name=@"context_configuration", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string context_configuration
+    {
+      get { return _context_configuration; }
+      set { _context_configuration = value; }
+    }
+    private string _service_configuration = "";
+    [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name=@"service_configuration", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue("")]
+    public string service_configuration
+    {
+      get { return _service_configuration; }
+      set { _service_configuration = value; }
+    }
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"RemoveContextProto")]
+  public partial class RemoveContextProto : global::ProtoBuf.IExtensible
+  {
+    public RemoveContextProto() {}
+    
+    private string _context_id;
+    [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"context_id", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string context_id
+    {
+      get { return _context_id; }
+      set { _context_id = value; }
+    }
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"StopTaskProto")]
+  public partial class StopTaskProto : global::ProtoBuf.IExtensible
+  {
+    public StopTaskProto() {}
+    
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"SuspendTaskProto")]
+  public partial class SuspendTaskProto : global::ProtoBuf.IExtensible
+  {
+    public SuspendTaskProto() {}
+    
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"ContextMessageProto")]
+  public partial class ContextMessageProto : global::ProtoBuf.IExtensible
+  {
+    public ContextMessageProto() {}
+    
+    private string _context_id;
+    [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"context_id", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string context_id
+    {
+      get { return _context_id; }
+      set { _context_id = value; }
+    }
+    private byte[] _message;
+    [global::ProtoBuf.ProtoMember(2, IsRequired = true, Name=@"message", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public byte[] message
+    {
+      get { return _message; }
+      set { _message = value; }
+    }
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"ContextControlProto")]
+  public partial class ContextControlProto : global::ProtoBuf.IExtensible
+  {
+    public ContextControlProto() {}
+    
+    private byte[] _task_message = null;
+    [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"task_message", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public byte[] task_message
+    {
+      get { return _task_message; }
+      set { _task_message = value; }
+    }
+    private ContextMessageProto _context_message = null;
+    [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name=@"context_message", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public ContextMessageProto context_message
+    {
+      get { return _context_message; }
+      set { _context_message = value; }
+    }
+    private AddContextProto _add_context = null;
+    [global::ProtoBuf.ProtoMember(5, IsRequired = false, Name=@"add_context", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public AddContextProto add_context
+    {
+      get { return _add_context; }
+      set { _add_context = value; }
+    }
+    private RemoveContextProto _remove_context = null;
+    [global::ProtoBuf.ProtoMember(6, IsRequired = false, Name=@"remove_context", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public RemoveContextProto remove_context
+    {
+      get { return _remove_context; }
+      set { _remove_context = value; }
+    }
+    private StartTaskProto _start_task = null;
+    [global::ProtoBuf.ProtoMember(7, IsRequired = false, Name=@"start_task", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public StartTaskProto start_task
+    {
+      get { return _start_task; }
+      set { _start_task = value; }
+    }
+    private StopTaskProto _stop_task = null;
+    [global::ProtoBuf.ProtoMember(8, IsRequired = false, Name=@"stop_task", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public StopTaskProto stop_task
+    {
+      get { return _stop_task; }
+      set { _stop_task = value; }
+    }
+    private SuspendTaskProto _suspend_task = null;
+    [global::ProtoBuf.ProtoMember(9, IsRequired = false, Name=@"suspend_task", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public SuspendTaskProto suspend_task
+    {
+      get { return _suspend_task; }
+      set { _suspend_task = value; }
+    }
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"EvaluatorHeartbeatProto")]
+  public partial class EvaluatorHeartbeatProto : global::ProtoBuf.IExtensible
+  {
+    public EvaluatorHeartbeatProto() {}
+    
+    private long _timestamp;
+    [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"timestamp", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    public long timestamp
+    {
+      get { return _timestamp; }
+      set { _timestamp = value; }
+    }
+    private EvaluatorStatusProto _evaluator_status;
+    [global::ProtoBuf.ProtoMember(2, IsRequired = true, Name=@"evaluator_status", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public EvaluatorStatusProto evaluator_status
+    {
+      get { return _evaluator_status; }
+      set { _evaluator_status = value; }
+    }
+    private readonly global::System.Collections.Generic.List<ContextStatusProto> _context_status = new global::System.Collections.Generic.List<ContextStatusProto>();
+    [global::ProtoBuf.ProtoMember(3, Name=@"context_status", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public global::System.Collections.Generic.List<ContextStatusProto> context_status
+    {
+      get { return _context_status; }
+    }
+  
+    private TaskStatusProto _task_status = null;
+    [global::ProtoBuf.ProtoMember(4, IsRequired = false, Name=@"task_status", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public TaskStatusProto task_status
+    {
+      get { return _task_status; }
+      set { _task_status = value; }
+    }
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+
+    private bool _recovery;
+    [global::ProtoBuf.ProtoMember(5, IsRequired = false, Name = @"recovery", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public bool recovery
+    {
+        get { return _recovery; }
+        set { _recovery = value; }
+    }
+  }
+  
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"EvaluatorControlProto")]
+  public partial class EvaluatorControlProto : global::ProtoBuf.IExtensible
+  {
+    public EvaluatorControlProto() {}
+    
+    private long _timestamp;
+    [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name=@"timestamp", DataFormat = global::ProtoBuf.DataFormat.TwosComplement)]
+    public long timestamp
+    {
+      get { return _timestamp; }
+      set { _timestamp = value; }
+    }
+    private string _identifier;
+    [global::ProtoBuf.ProtoMember(2, IsRequired = true, Name=@"identifier", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    public string identifier
+    {
+      get { return _identifier; }
+      set { _identifier = value; }
+    }
+    private ContextControlProto _context_control = null;
+    [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name=@"context_control", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public ContextControlProto context_control
+    {
+      get { return _context_control; }
+      set { _context_control = value; }
+    }
+    private KillEvaluatorProto _kill_evaluator = null;
+    [global::ProtoBuf.ProtoMember(4, IsRequired = false, Name=@"kill_evaluator", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public KillEvaluatorProto kill_evaluator
+    {
+      get { return _kill_evaluator; }
+      set { _kill_evaluator = value; }
+    }
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Org.Apache.REEF.Common/protobuf/cs/ReefProtocol.pb.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/protobuf/cs/ReefProtocol.pb.cs b/lang/cs/Org.Apache.REEF.Common/protobuf/cs/ReefProtocol.pb.cs
new file mode 100644
index 0000000..1ade6de
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Common/protobuf/cs/ReefProtocol.pb.cs
@@ -0,0 +1,78 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+// Generated from: reef_protocol.proto
+// Note: requires additional types generated from: client_runtime.proto
+// Note: requires additional types generated from: evaluator_runtime.proto
+// Note: requires additional types generated from: reef_service_protos.proto
+using Org.Apache.REEF.Common.ProtoBuf.ClienRuntimeProto;
+using Org.Apache.REEF.Common.ProtoBuf.EvaluatorRunTimeProto;
+using Org.Apache.REEF.Common.ProtoBuf.ReefServiceProto;
+
+namespace Org.Apache.REEF.Common.ProtoBuf.ReefProtocol
+{
+  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"REEFMessage")]
+  public partial class REEFMessage : global::ProtoBuf.IExtensible
+  {
+    public REEFMessage() {}
+    
+    private JobSubmissionProto _jobSubmission = null;
+    [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name=@"jobSubmission", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public JobSubmissionProto jobSubmission
+    {
+      get { return _jobSubmission; }
+      set { _jobSubmission = value; }
+    }
+    private JobControlProto _jobControl = null;
+    [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name=@"jobControl", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public JobControlProto jobControl
+    {
+      get { return _jobControl; }
+      set { _jobControl = value; }
+    }
+    private RuntimeErrorProto _runtimeError = null;
+    [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name=@"runtimeError", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public RuntimeErrorProto runtimeError
+    {
+      get { return _runtimeError; }
+      set { _runtimeError = value; }
+    }
+    private JobStatusProto _jobStatus = null;
+    [global::ProtoBuf.ProtoMember(4, IsRequired = false, Name=@"jobStatus", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public JobStatusProto jobStatus
+    {
+      get { return _jobStatus; }
+      set { _jobStatus = value; }
+    }
+    private EvaluatorControlProto _evaluatorControl = null;
+    [global::ProtoBuf.ProtoMember(5, IsRequired = false, Name=@"evaluatorControl", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public EvaluatorControlProto evaluatorControl
+    {
+      get { return _evaluatorControl; }
+      set { _evaluatorControl = value; }
+    }
+    private EvaluatorHeartbeatProto _evaluatorHeartBeat = null;
+    [global::ProtoBuf.ProtoMember(6, IsRequired = false, Name=@"evaluatorHeartBeat", DataFormat = global::ProtoBuf.DataFormat.Default)]
+    [global::System.ComponentModel.DefaultValue(null)]
+    public EvaluatorHeartbeatProto evaluatorHeartBeat
+    {
+      get { return _evaluatorHeartBeat; }
+      set { _evaluatorHeartBeat = value; }
+    }
+    private global::ProtoBuf.IExtension extensionObject;
+    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
+      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
+  }
+  
+}
\ No newline at end of file