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

[09/19] incubator-reef git commit: [REEF-136] Harmonize namespaces and folder names in Org.Apache.REEF projects

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/lang/cs/Org.Apache.REEF.Common/tasks/IRunningTask.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/tasks/IRunningTask.cs b/lang/cs/Org.Apache.REEF.Common/tasks/IRunningTask.cs
deleted file mode 100644
index 1e76d1d..0000000
--- a/lang/cs/Org.Apache.REEF.Common/tasks/IRunningTask.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * 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.Task
-{
-    /// <summary>
-    /// Represents a running Task
-    /// </summary>
-    public interface IRunningTask : IIdentifiable, IDisposable
-    {
-        /// <summary>
-        /// Sends the message to the running task.
-        /// </summary>
-        /// <param name="message"></param>
-        void OnNext(byte[] message);
-
-        /// <summary>
-        ///  Signal the task to suspend.
-        /// </summary>
-        /// <param name="message">a message that is sent to the Task.</param>
-        void Suspend(byte[] message);
-
-        /// <summary>
-        /// Sends the message to the running task.
-        /// </summary>
-        void Suspend();
-
-        /// <summary>
-        /// Signal the task to shut down.
-        /// </summary>
-        /// <param name="message">a message that is sent to the Task.</param>
-        void Dispose(byte[] message);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/lang/cs/Org.Apache.REEF.Common/tasks/ITask.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/tasks/ITask.cs b/lang/cs/Org.Apache.REEF.Common/tasks/ITask.cs
deleted file mode 100644
index 42cc10e..0000000
--- a/lang/cs/Org.Apache.REEF.Common/tasks/ITask.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * 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;
-
-namespace Org.Apache.REEF.Tasks
-{
-    public interface ITask : IDisposable
-    {
-        byte[] Call(byte[] memento);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/lang/cs/Org.Apache.REEF.Common/tasks/ITaskMessageSource.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/tasks/ITaskMessageSource.cs b/lang/cs/Org.Apache.REEF.Common/tasks/ITaskMessageSource.cs
deleted file mode 100644
index 141ba89..0000000
--- a/lang/cs/Org.Apache.REEF.Common/tasks/ITaskMessageSource.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * 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.Tasks.Defaults;
-using Org.Apache.REEF.Utilities;
-using Org.Apache.REEF.Tang.Annotations;
-
-namespace Org.Apache.REEF.Tasks
-{
-    [DefaultImplementation(typeof(DefaultTaskMessageSource))]
-    public interface ITaskMessageSource
-    {
-        Optional<TaskMessage> Message { get; set; }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/lang/cs/Org.Apache.REEF.Common/tasks/TaskConfiguration.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/tasks/TaskConfiguration.cs b/lang/cs/Org.Apache.REEF.Common/tasks/TaskConfiguration.cs
deleted file mode 100644
index cd82d2a..0000000
--- a/lang/cs/Org.Apache.REEF.Common/tasks/TaskConfiguration.cs
+++ /dev/null
@@ -1,148 +0,0 @@
-/**
- * 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.Tasks.Events;
-using Org.Apache.REEF.Utilities.Logging;
-using Org.Apache.REEF.Tang.Formats;
-using Org.Apache.REEF.Tang.Interface;
-using Org.Apache.REEF.Tang.Util;
-using System;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-
-[module: SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1401:FieldsMustBePrivate", Justification = "static readonly field, typical usage in configurations")]
-
-namespace Org.Apache.REEF.Tasks
-{
-    public class TaskConfiguration : ConfigurationModuleBuilder
-    {
-        // this is a hack for getting the task identifier for now
-        public const string TaskIdentifier = "TaskConfigurationOptions+Identifier";
-
-        /// <summary>
-        ///  The identifier of the task.
-        /// </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>
-        /// The task to instantiate.
-        /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
-        public static readonly RequiredImpl<ITask> Task = new RequiredImpl<ITask>();
-
-        /// <summary>
-        /// for task suspension. Defaults to task failure if not bound.
-        /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
-        public static readonly OptionalImpl<IObserver<ISuspendEvent>> OnSuspend = new OptionalImpl<IObserver<ISuspendEvent>>();
-
-        /// <summary>
-        /// for messages from the driver. Defaults to task failure if not bound.
-        /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
-        public static readonly OptionalImpl<IDriverMessageHandler> OnMessage = new OptionalImpl<IDriverMessageHandler>();
-
-        /// <summary>
-        /// for closure requests from the driver. Defaults to task failure if not bound.
-        /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
-        public static readonly OptionalImpl<IObserver<ICloseEvent>> OnClose = new OptionalImpl<IObserver<ICloseEvent>>();
-
-        /// <summary>
-        /// Message source invoked upon each evaluator heartbeat.
-        /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
-        public static readonly OptionalImpl<ITaskMessageSource> OnSendMessage = new OptionalImpl<ITaskMessageSource>();
-
-        /// <summary>
-        /// to receive TaskStart after the Task.call() method was called.
-        /// </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 receive TaskStop after the Task.call() method returned.
-        /// </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>
-        /// The memento to be passed to Task.call().
-        /// </summary>
-        [SuppressMessage("Microsoft.Security", "CA2104:Do not declare read only mutable reference types", Justification = "not applicable")]
-        public static readonly OptionalParameter<string> Memento = new OptionalParameter<string>();
-
-        private static readonly Logger LOGGER = Logger.GetLogger(typeof(TaskConfiguration));
-
-        public TaskConfiguration()
-            : base()
-        {
-        }
-
-        public TaskConfiguration(string configString)
-        {
-            TangConfig = new AvroConfigurationSerializer().FromString(configString);
-            AvroConfiguration avroConfiguration = AvroConfiguration.GetAvroConfigurationFromEmbeddedString(configString);
-            foreach (ConfigurationEntry config in avroConfiguration.Bindings)
-            {
-                if (config.key.Contains(TaskIdentifier))
-                {
-                    TaskId = config.value;
-                }
-            }
-            if (string.IsNullOrWhiteSpace(TaskId))
-            {
-                string msg = "Required parameter TaskId not provided.";
-                LOGGER.Log(Level.Error, msg);
-                Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Throw(new ArgumentException(msg), LOGGER);
-            }
-        }
-
-        public static ConfigurationModule ConfigurationModule
-        {
-            get
-            {
-                return new TaskConfiguration()
-                    .BindImplementation(GenericType<ITask>.Class, Task)
-                    .BindImplementation(GenericType<ITaskMessageSource>.Class, OnSendMessage)
-                    .BindImplementation(GenericType<IDriverMessageHandler>.Class, OnMessage)
-                    .BindNamedParameter(GenericType<TaskConfigurationOptions.Identifier>.Class, Identifier)
-                    .BindNamedParameter(GenericType<TaskConfigurationOptions.Memento>.Class, Memento)
-                    .BindNamedParameter(GenericType<TaskConfigurationOptions.CloseHandler>.Class, OnClose)
-                    .BindNamedParameter(GenericType<TaskConfigurationOptions.SuspendHandler>.Class, OnSuspend)
-                    .BindSetEntry(GenericType<TaskConfigurationOptions.StartHandlers>.Class, OnTaskStart)
-                    .BindSetEntry(GenericType<TaskConfigurationOptions.StopHandlers>.Class, OnTaskStop)
-                    .Build();
-            }
-        }
-
-        public string TaskId { get;  private set; }
-
-        public IList<KeyValuePair<string, string>> Configurations { get; private set; }
-
-        public IConfiguration TangConfig { get; private set; }
-
-        public override string ToString()
-        {
-            return string.Format(CultureInfo.InvariantCulture, "TaskConfiguration - configurations: {0}", TangConfig.ToString());
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/lang/cs/Org.Apache.REEF.Common/tasks/TaskConfigurationOptions.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/tasks/TaskConfigurationOptions.cs b/lang/cs/Org.Apache.REEF.Common/tasks/TaskConfigurationOptions.cs
deleted file mode 100644
index db50d78..0000000
--- a/lang/cs/Org.Apache.REEF.Common/tasks/TaskConfigurationOptions.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * 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.Tasks.Events;
-using Org.Apache.REEF.Tang.Annotations;
-using System;
-using System.Collections.Generic;
-
-namespace Org.Apache.REEF.Tasks
-{
-    public class TaskConfigurationOptions
-    {
-        [NamedParameter("The Identifier of the Task", "taskid", "Task")]
-        public class Identifier : Name<string>
-        {
-        }
-
-        [NamedParameter(documentation: "The memento to be used for the Task")]
-        public class Memento : Name<string>
-        {
-        }
-
-        [NamedParameter("TaskMessageSource", "messagesource", null)]
-        public class TaskMessageSources : Name<ISet<ITaskMessageSource>>
-        {
-        }
-
-        [NamedParameter(documentation: "The set of event handlers for the TaskStart event.")]
-        public class StartHandlers : Name<ISet<IObserver<ITaskStart>>>
-        {
-        }
-
-        [NamedParameter(documentation: "The set of event handlers for the TaskStop event.")]
-        public class StopHandlers : Name<ISet<IObserver<ITaskStop>>>
-        {
-        }
-
-        [NamedParameter(documentation: "The event handler that receives the close event.")]
-        public class CloseHandler : Name<IObserver<ICloseEvent>>
-        {
-        }
-
-        [NamedParameter(documentation: "The event handler that receives the suspend event.")]
-        public class SuspendHandler : Name<IObserver<ISuspendEvent>>
-        {
-        }
-
-        [NamedParameter(documentation: "The event handler that receives messages from the driver.")]
-        public class MessageHandler : Name<IObserver<IDriverMessage>>
-        {
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/lang/cs/Org.Apache.REEF.Common/tasks/TaskMessage.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/tasks/TaskMessage.cs b/lang/cs/Org.Apache.REEF.Common/tasks/TaskMessage.cs
deleted file mode 100644
index bc96016..0000000
--- a/lang/cs/Org.Apache.REEF.Common/tasks/TaskMessage.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * 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;
-using Org.Apache.REEF.Utilities.Logging;
-
-namespace Org.Apache.REEF.Tasks
-{
-    public class TaskMessage : IMessage
-    {
-        private static readonly Logger LOGGER = Logger.GetLogger(typeof(TaskMessage));
-        private readonly string _messageSourcId;
-        private readonly byte[] _bytes;
-
-        private TaskMessage(string messageSourceId, byte[] bytes)
-        {
-            _messageSourcId = messageSourceId;
-            _bytes = bytes;
-        }
-
-        public string MessageSourceId
-        {
-            get { return _messageSourcId; }
-        }
-
-        public byte[] Message
-        {
-            get { return _bytes; }
-            set { }
-        }
-
-        /// <summary>
-        ///  From byte[] message to a TaskMessage
-        /// </summary>
-        /// <param name="messageSourceId">messageSourceId The message's sourceID. This will be accessible in the Driver for routing</param>
-        /// <param name="message">The actual content of the message, serialized into a byte[]</param>
-        /// <returns>a new TaskMessage with the given content</returns>
-        public static TaskMessage From(string messageSourceId, byte[] message)
-        {
-            if (string.IsNullOrEmpty(messageSourceId))
-            {
-                Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Throw(new ArgumentNullException("messageSourceId"), LOGGER);
-            }
-            if (message == null)
-            {
-                Org.Apache.REEF.Utilities.Diagnostics.Exceptions.Throw(new ArgumentNullException("bytes"), LOGGER);
-            }
-            return new TaskMessage(messageSourceId, message);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/lang/cs/Org.Apache.REEF.Common/tasks/defaults/DefaultDriverMessageHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/tasks/defaults/DefaultDriverMessageHandler.cs b/lang/cs/Org.Apache.REEF.Common/tasks/defaults/DefaultDriverMessageHandler.cs
deleted file mode 100644
index 3749f2b..0000000
--- a/lang/cs/Org.Apache.REEF.Common/tasks/defaults/DefaultDriverMessageHandler.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * 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.Tasks.Events;
-using Org.Apache.REEF.Utilities.Diagnostics;
-using Org.Apache.REEF.Utilities.Logging;
-using Org.Apache.REEF.Tang.Annotations;
-using System;
-
-namespace Org.Apache.REEF.Tasks.Defaults
-{
-    public class DefaultDriverMessageHandler : IDriverMessageHandler
-    {
-        private static readonly Logger LOGGER = Logger.GetLogger(typeof(DefaultDriverMessageHandler));
-
-        [Inject]
-        public DefaultDriverMessageHandler()
-        {
-        }
-
-        public void Handle(IDriverMessage message)
-        {
-            Exceptions.Throw(new InvalidOperationException("No DriverMessage handler bound. Message received" + message), LOGGER);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/lang/cs/Org.Apache.REEF.Common/tasks/defaults/DefaultTaskMessageSource.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/tasks/defaults/DefaultTaskMessageSource.cs b/lang/cs/Org.Apache.REEF.Common/tasks/defaults/DefaultTaskMessageSource.cs
deleted file mode 100644
index 4549ab5..0000000
--- a/lang/cs/Org.Apache.REEF.Common/tasks/defaults/DefaultTaskMessageSource.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * 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 Org.Apache.REEF.Tang.Annotations;
-using System;
-using System.Globalization;
-
-namespace Org.Apache.REEF.Tasks.Defaults
-{
-    public class DefaultTaskMessageSource : ITaskMessageSource
-    {
-        [Inject]
-        public DefaultTaskMessageSource()
-        {
-        }
-
-        public Optional<TaskMessage> Message
-        {
-            get
-            {
-                TaskMessage defaultTaskMessage = TaskMessage.From(
-                    "defaultSourceId", 
-                    ByteUtilities.StringToByteArrays("default message generated at " + DateTime.Now.ToString(CultureInfo.InvariantCulture)));
-                return Optional<TaskMessage>.Of(defaultTaskMessage);
-            }
-
-            set
-            {
-            }
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/lang/cs/Org.Apache.REEF.Common/tasks/events/ICloseEvent.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/tasks/events/ICloseEvent.cs b/lang/cs/Org.Apache.REEF.Common/tasks/events/ICloseEvent.cs
deleted file mode 100644
index e9737c3..0000000
--- a/lang/cs/Org.Apache.REEF.Common/tasks/events/ICloseEvent.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * 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;
-
-namespace Org.Apache.REEF.Tasks.Events
-{
-    public interface ICloseEvent
-    {
-        Optional<byte[]> Value { get; set; }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/lang/cs/Org.Apache.REEF.Common/tasks/events/IDriverMessage.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/tasks/events/IDriverMessage.cs b/lang/cs/Org.Apache.REEF.Common/tasks/events/IDriverMessage.cs
deleted file mode 100644
index a1ead6d..0000000
--- a/lang/cs/Org.Apache.REEF.Common/tasks/events/IDriverMessage.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * 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;
-
-namespace Org.Apache.REEF.Tasks.Events
-{
-    public interface IDriverMessage
-    {
-        Optional<byte[]> Message { get; }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/lang/cs/Org.Apache.REEF.Common/tasks/events/ISuspendEvent.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/tasks/events/ISuspendEvent.cs b/lang/cs/Org.Apache.REEF.Common/tasks/events/ISuspendEvent.cs
deleted file mode 100644
index 1926c75..0000000
--- a/lang/cs/Org.Apache.REEF.Common/tasks/events/ISuspendEvent.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * 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.Tasks.Events
-{
-    public interface ISuspendEvent
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/lang/cs/Org.Apache.REEF.Common/tasks/events/ITaskStart.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/tasks/events/ITaskStart.cs b/lang/cs/Org.Apache.REEF.Common/tasks/events/ITaskStart.cs
deleted file mode 100644
index 7b15609..0000000
--- a/lang/cs/Org.Apache.REEF.Common/tasks/events/ITaskStart.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * 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.Tasks.Events
-{
-    public interface ITaskStart
-    {
-        string Id { get; set; }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/lang/cs/Org.Apache.REEF.Common/tasks/events/ITaskStop.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/tasks/events/ITaskStop.cs b/lang/cs/Org.Apache.REEF.Common/tasks/events/ITaskStop.cs
deleted file mode 100644
index 62e9254..0000000
--- a/lang/cs/Org.Apache.REEF.Common/tasks/events/ITaskStop.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * 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.Tasks.Events
-{
-    public interface ITaskStop
-    {
-        string Id { get; }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/lang/cs/Org.Apache.REEF.Driver/Bridge/BridgeLogger.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/BridgeLogger.cs b/lang/cs/Org.Apache.REEF.Driver/Bridge/BridgeLogger.cs
new file mode 100644
index 0000000..3e2dada
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/BridgeLogger.cs
@@ -0,0 +1,65 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System;
+
+using Org.Apache.REEF.Utilities.Logging;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    /// <summary>
+    /// A wrapper around the general Logger class used specifically for 
+    /// logging in CPP bridge code. 
+    /// This is enabled when trace leve is above Level.Info (included)
+    /// </summary>
+    public class BridgeLogger
+    {
+        private Logger _logger;
+
+        public BridgeLogger(string name)
+        {
+            _logger = Logger.GetLogger(name);
+        }
+
+        public static BridgeLogger GetLogger(string className)
+        {
+            return new BridgeLogger(className);
+        }
+
+        public void Log(string message)
+        {
+            _logger.Log(Level.Info, message);
+        }
+
+        public void LogStart(string message)
+        {
+            _logger.Log(Level.Start, message);
+        }
+
+        public void LogStop(string message)
+        {
+            _logger.Log(Level.Stop, message);
+        }
+
+        public void LogError(string message, Exception e)
+        {
+            _logger.Log(Level.Error, message, e);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/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..6ef03f9
--- /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.Clr2java
+{
+    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/7edb8570/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..0e24bc3
--- /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.Clr2java
+{
+    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/7edb8570/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..7677a41
--- /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.Clr2java
+{
+    public interface IClosedContextClr2Java : IClr2Java
+    {        
+        string GetId();
+
+        string GetEvaluatorId();
+
+        IEvaluatorDescriptor GetEvaluatorDescriptor();
+
+        IActiveContextClr2Java GetParentContext();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/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..b6c9154
--- /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.Clr2java
+{
+    public interface IClr2Java
+    {
+        void OnError(string message);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/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..99e37d7
--- /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.Clr2java
+{
+    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/7edb8570/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..5eb2686
--- /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.Clr2java
+{
+    public interface ICompletedTaskClr2Java : IClr2Java
+    {
+        IActiveContextClr2Java GetActiveContext();
+        
+        string GetId();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/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..9af42b7
--- /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.Clr2java
+{
+    public interface IContextMessageClr2Java : IClr2Java
+    {
+        byte[] Get();
+
+        string GetId();
+
+        string GetMessageSourceId();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/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..940ed43
--- /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.Clr2java
+{
+    public interface IEvaluatorRequestorClr2Java : IClr2Java
+    {
+        void Submit(IEvaluatorRequest evaluatorRequest);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/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..1b22645
--- /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.Clr2java
+{
+    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/7edb8570/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..12b007d
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/Clr2java/IFailedEvaluatorClr2Java.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.Clr2java
+{
+    public interface IFailedEvaluatorClr2Java
+    {
+        IEvaluatorRequestorClr2Java GetEvaluatorRequestor();
+
+        string GetId();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/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..384502e
--- /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.Clr2java
+{
+    public interface IFailedTaskClr2Java : IClr2Java
+    {
+        IActiveContextClr2Java GetActiveContext();
+
+        string GetString();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/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..3b13aed
--- /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.Clr2java
+{
+    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/7edb8570/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..e807e04
--- /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.Clr2java
+{
+    public interface IRunningTaskClr2Java : IClr2Java
+    {
+        IActiveContextClr2Java GetActiveContext();
+
+        string GetId();
+
+        void Send(byte[] message);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/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..95bfa8b
--- /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.Clr2java
+{
+    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/7edb8570/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..3e3abb3
--- /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.Clr2java
+{
+    public interface ITaskMessageClr2Java : IClr2Java
+    {
+        string GetId();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrClientHelper.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrClientHelper.cs b/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrClientHelper.cs
new file mode 100644
index 0000000..8ccade9
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrClientHelper.cs
@@ -0,0 +1,174 @@
+/**
+ * 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.Diagnostics;
+using System.IO;
+using System.Linq;
+using Org.Apache.REEF.Tang.Formats;
+using Org.Apache.REEF.Tang.Interface;
+using Org.Apache.REEF.Utilities.Logging;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public class ClrClientHelper
+    {
+        private static readonly Logger LOGGER = Logger.GetLogger(typeof(ClrClientHelper));
+
+        public static void Run(HashSet<string> appDlls, IConfiguration driverBridgeConfig, DriverSubmissionSettings driverSubmissionSettings, string reefJar = Constants.BridgeJarFileName, string runCommand = "run.cmd", string clrFolder = ".", string className = Constants.BridgeLaunchClass)
+        {
+            using (LOGGER.LogFunction("ClrHandlerHelper::Run"))
+            {
+                if (driverSubmissionSettings.Submit)
+                {
+                    ClrHandlerHelper.CopyDllsToAppDirectory(appDlls);
+                    UpdateJarFileWithAssemblies(reefJar);
+                }
+
+                using (LOGGER.LogScope("ClrHandlerHelper::serialize driverBridgeConfig to clrRuntimeConfigFile"))
+                {
+                    string clrRuntimeConfigFile = Path.Combine(clrFolder, Constants.DriverBridgeConfiguration);
+                    new AvroConfigurationSerializer().ToFile(driverBridgeConfig, clrRuntimeConfigFile);
+                    LOGGER.Log(Level.Info, "CLR driver bridge configurations written to " + clrRuntimeConfigFile);
+                }
+
+                ProcessStartInfo startInfo = new ProcessStartInfo();
+                if (driverSubmissionSettings.RunOnYarn)
+                {
+                    startInfo.FileName = runCommand;
+                    startInfo.Arguments = className + " " + clrFolder +
+                                          driverSubmissionSettings.ToComamndLineArguments();
+                }
+                else
+                {
+                    startInfo.FileName = GetJavaBinary();
+                    string loggingPrefix = string.Empty;
+                    if (driverSubmissionSettings.JavaLogLevel == JavaLoggingSetting.VERBOSE_TO_CLR)
+                    {
+                        loggingPrefix = Constants.JavaToCLRLoggingConfig + " ";
+                    }
+                    else if (driverSubmissionSettings.JavaLogLevel == JavaLoggingSetting.VERBOSE)
+                    {
+                        loggingPrefix = Constants.JavaVerboseLoggingConfig + " ";
+                    }
+                    startInfo.Arguments = loggingPrefix + @"-classpath " + reefJar + " " + Constants.BridgeLaunchClass +
+                                          " " + clrFolder + " " + driverSubmissionSettings.ToComamndLineArguments();
+                }
+                startInfo.RedirectStandardOutput = true;
+                startInfo.UseShellExecute = false;
+                startInfo.CreateNoWindow = false;
+                LOGGER.Log(Level.Info, "Executing\r\n" + startInfo.FileName + "\r\n" + startInfo.Arguments);
+                using (Process process = Process.Start(startInfo))
+                {
+                    process.WaitForExit();
+                }
+            }
+        }
+
+        public static void UpdateJarFileWithAssemblies(string reefJar)
+        {
+            using (LOGGER.LogFunction("ClrHandlerHelper::UpdateJarFileWithAssemblies"))
+            {
+                string assembliesList = ClrHandlerHelper.GetAssembliesListForReefDriverApp();
+                if (!File.Exists(reefJar))
+                {
+                    throw new InvalidOperationException("cannot find reef jar file: " + reefJar);
+                }
+                ProcessStartInfo startInfo = new ProcessStartInfo()
+                    {
+                        FileName = GetJarBinary(),
+                        Arguments = @"uf " + reefJar + " " + assembliesList,
+                        RedirectStandardOutput = true,
+                        RedirectStandardError = true,
+                        UseShellExecute = false,
+                        CreateNoWindow = true
+                    };
+
+                LOGGER.Log(Level.Info, "updating jar file with \r\n" + startInfo.FileName + "\r\n" + startInfo.Arguments);
+                using (Process process = Process.Start(startInfo))
+                {
+                    StreamReader outReader = process.StandardOutput;
+                    StreamReader errorReader = process.StandardError;
+                    string output = outReader.ReadToEnd();
+                    string error = errorReader.ReadToEnd();
+                    process.WaitForExit();
+                    if (process.ExitCode != 0)
+                    {
+                        throw new InvalidOperationException("Failed to update jar file with stdout :" + output +
+                                                            "and stderr:" + error);
+                    }
+                }
+                LOGGER.Log(Level.Info, "jar file updated.");
+            }
+        }
+
+        public static void ExtractConfigfileFromJar(string reefJar, IList<string> configFiles, string dropFolder)
+        {
+                var configFileNames = string.Join(" ", configFiles.ToArray());
+                ProcessStartInfo startInfo = new ProcessStartInfo()
+                {
+                    FileName = GetJarBinary(),
+                    Arguments = @"xf " + reefJar + " " + configFileNames,
+                    RedirectStandardOutput = true,
+                    RedirectStandardError = true,
+                    UseShellExecute = false,
+                    CreateNoWindow = true
+                };
+
+                LOGGER.Log(Level.Info, "extracting files from jar file with \r\n" + startInfo.FileName + "\r\n" + startInfo.Arguments);
+                using (Process process = Process.Start(startInfo))
+                {
+                    StreamReader outReader = process.StandardOutput;
+                    StreamReader errorReader = process.StandardError;
+                    string output = outReader.ReadToEnd();
+                    string error = errorReader.ReadToEnd();
+                    process.WaitForExit();
+                    if (process.ExitCode != 0)
+                    {
+                        throw new InvalidOperationException("Failed to extract files from jar file with stdout :" + output +
+                                                            "and stderr:" + error);
+                    }
+                }
+                LOGGER.Log(Level.Info, "files are extracted.");
+        }
+        
+        private static string GetJarBinary()
+        {
+            string javaHome = Environment.GetEnvironmentVariable("JAVA_HOME");
+            if (string.IsNullOrWhiteSpace(javaHome))
+            {
+                LOGGER.Log(Level.Info, "JAVA_HOME not set. Please set JAVA_HOME environment variable first. Exiting...");
+                Environment.Exit(1);
+            }
+            return Path.Combine(javaHome, "bin", "jar.exe");
+        }
+
+        private static string GetJavaBinary()
+        {
+            string javaHome = Environment.GetEnvironmentVariable("JAVA_HOME");
+            if (string.IsNullOrWhiteSpace(javaHome))
+            {
+                LOGGER.Log(Level.Info, "JAVA_HOME not set. Please set JAVA_HOME environment variable first. Exiting...");
+                Environment.Exit(1);
+            }
+            return Path.Combine(javaHome, "bin", "java.exe");
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrHandlerHelper.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrHandlerHelper.cs b/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrHandlerHelper.cs
new file mode 100644
index 0000000..8d9020c
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrHandlerHelper.cs
@@ -0,0 +1,178 @@
+/**
+ * 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.Diagnostics;
+using Org.Apache.REEF.Utilities.Logging;
+using Org.Apache.REEF.Tang.Exceptions;
+using Org.Apache.REEF.Tang.Formats;
+using Org.Apache.REEF.Tang.Implementations;
+using Org.Apache.REEF.Tang.Interface;
+using Org.Apache.REEF.Tang.Protobuf;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices;
+using Org.Apache.REEF.Tang.Implementations.Tang;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public class ClrHandlerHelper
+    {
+        private static readonly Logger LOGGER = Logger.GetLogger(typeof(ClrHandlerHelper));
+
+        public static string[] ReefAssemblies
+        {
+            get
+            {
+                return new[] { "Microsoft.Hadoop.Avro.dll", "Org.Apache.REEF.Driver.dll", "Org.Apache.REEF.Common.dll", "Org.Apache.REEF.Utilities.dll", "Org.Apache.REEF.Network.dll", "Org.Apache.REEF.Tang.dll", "Org.Apache.REEF.Wake.dll", "Newtonsoft.Json.dll", "protobuf-net.dll" };
+            }
+        }
+
+        internal static int MemoryGranularity { get; set; }
+
+        public static ulong CreateHandler(object handler)
+        {
+            GCHandle gc = GCHandle.Alloc(handler);
+            IntPtr intPtr = GCHandle.ToIntPtr(gc);
+            ulong ul = (ulong)intPtr.ToInt64();
+            return ul;
+        }
+
+        public static void FreeHandle(ulong handle)
+        {
+            GCHandle gc = GCHandle.FromIntPtr((IntPtr)handle);
+            gc.Free();
+        }
+
+        public static void SetMemoryGranuality(int granularity)
+        {
+            if (granularity <= 0)
+            {
+                var e = new ArgumentException("granularity must be a positive value, provided: " + granularity);
+                Exceptions.Throw(e, LOGGER);
+            }
+            MemoryGranularity = granularity;
+        }
+
+        public static ulong CreateNullHandler()
+        {
+            return Constants.NullHandler;
+        }
+
+        public static ISet<string> GetCommandLineArguments()
+        {
+            using (LOGGER.LogFunction("ClrHandlerHelper::GetCommandLineArguments"))
+            {
+                string bridgeConfiguration = Path.Combine(Directory.GetCurrentDirectory(), "reef", "global",
+                                                          Constants.DriverBridgeConfiguration);
+
+                if (!File.Exists(bridgeConfiguration))
+                {
+                    string error = "Configuraiton file not found: " + bridgeConfiguration;
+                    LOGGER.Log(Level.Error, error);
+                    Exceptions.Throw(new InvalidOperationException(error), LOGGER);
+                }
+                CommandLineArguments arguments;
+                IInjector injector;
+                try
+                {
+                    IConfiguration driverBridgeConfiguration =
+                        new AvroConfigurationSerializer().FromFile(bridgeConfiguration);
+                    injector = TangFactory.GetTang().NewInjector(driverBridgeConfiguration);
+                    arguments = injector.GetInstance<CommandLineArguments>();
+                }
+                catch (InjectionException e)
+                {
+                    string error = "Cannot inject command line arguments from driver bridge configuration. ";
+                    Exceptions.Caught(e, Level.Error, error, LOGGER);
+                    // return empty string set
+                    return new HashSet<string>();
+                }
+                return arguments.Arguments;
+            }
+        }
+
+        public static void SupplyAdditionalClassPath(params string[] classPaths)
+        {
+            string path = Path.Combine(Directory.GetCurrentDirectory(), Constants.GlobalUserSuppliedJavaLibraries);
+            File.Delete(path);
+            File.WriteAllText(path, string.Join(",", classPaths));
+        }
+
+        public static void GenerateClassHierarchy(HashSet<string> clrDlls)
+        {
+            using (LOGGER.LogFunction("ClrHandlerHelper::GenerateClassHierarchy"))
+            {
+                IClassHierarchy ns = TangFactory.GetTang().GetClassHierarchy(clrDlls.ToArray());
+                ProtocolBufferClassHierarchy.Serialize(Constants.ClassHierarachyBin, ns);
+
+                LOGGER.Log(Level.Info, string.Format(CultureInfo.InvariantCulture, "Class hierarchy written to [{0}].", Path.Combine(Directory.GetCurrentDirectory(), Constants.ClassHierarachyBin)));
+            }
+        }
+
+        public static string GetAssembliesListForReefDriverApp()
+        {
+            using (LOGGER.LogFunction("ClrHandlerHelper::GetAssembliesListForReefDriverApp"))
+            {
+                string executionDirectory = Directory.GetCurrentDirectory();
+                IList<string> assemblies =
+                    Directory.GetFiles(Path.Combine(executionDirectory, Constants.DriverAppDirectory), "*.dll")
+                             .Select(f => string.Format(CultureInfo.InvariantCulture, "\"{0}\"", Constants.DriverAppDirectory + @"\" + Path.GetFileName(f))).ToList();
+
+                foreach (string reefAssembly in ReefAssemblies)
+                {
+                    if (!File.Exists(reefAssembly))
+                    {
+                        var e = new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "Assembly [{0}] needed for REEF driver not found in {1}", reefAssembly, executionDirectory));
+                        Exceptions.Throw(e, LOGGER);
+                    }
+                    File.Copy(reefAssembly, Path.Combine(executionDirectory, Constants.DriverAppDirectory, reefAssembly), overwrite: true);
+                    assemblies.Add(string.Format(CultureInfo.InvariantCulture, "\"{0}\"", Constants.DriverAppDirectory + @"\" + reefAssembly));
+                }
+                return string.Join(" ", assemblies);
+            }
+        }
+
+        public static void CopyDllsToAppDirectory(HashSet<string> dlls)
+        {
+            using (LOGGER.LogFunction("ClrHandlerHelper::CopyDllsToAppDirectory"))
+            {
+                string executionDirectory = Directory.GetCurrentDirectory();
+                Directory.CreateDirectory(Path.Combine(executionDirectory, Constants.DriverAppDirectory));
+                foreach (string dll in dlls)
+                {
+                    string dllFile = dll;
+                    if (!dll.EndsWith(".dll", StringComparison.OrdinalIgnoreCase))
+                    {
+                        dllFile += ".dll";
+                    }
+                    if (!File.Exists(dllFile))
+                    {
+                        var e = new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "Assembly [{0}] for REEF application not found in {1}", dllFile, executionDirectory));
+                        Exceptions.Throw(e, LOGGER);
+                    }
+                    File.Copy(dllFile, Path.Combine(executionDirectory, Constants.DriverAppDirectory, dllFile), overwrite: true);
+                }
+            }
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/7edb8570/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrSystemHandler.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrSystemHandler.cs b/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrSystemHandler.cs
new file mode 100644
index 0000000..15b957d
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/ClrSystemHandler.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 System;
+using System.Collections.Generic;
+
+namespace Org.Apache.REEF.Driver.Bridge
+{
+    public class ClrSystemHandler<T> : IObserver<T>, IObservable<T>
+    {
+        List<IObserver<T>> userHandlers = new List<IObserver<T>>();
+
+        public void OnNext(T value)
+        {
+            foreach (var observer in userHandlers)
+            {
+                observer.OnNext(value);
+            }
+        }
+
+        public void OnError(Exception error)
+        {
+            throw new NotImplementedException();
+        }
+
+        public void OnCompleted()
+        {
+            throw new NotImplementedException();
+        }
+
+        public IDisposable Subscribe(IObserver<T> observer)
+        {
+            userHandlers.Add(observer);
+            return null;
+        }
+    }
+}