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/03/20 01:32:28 UTC
[3/5] incubator-reef git commit: [REEF-194] Merge the bridge into a
single DLL
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/SuspendedTaskClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/SuspendedTaskClr2Java.cpp b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/SuspendedTaskClr2Java.cpp
deleted file mode 100644
index e052d24..0000000
--- a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/SuspendedTaskClr2Java.cpp
+++ /dev/null
@@ -1,87 +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.
- */
-#include "Clr2JavaImpl.h"
-
-namespace Org {
- namespace Apache {
- namespace REEF {
- namespace Driver {
- namespace Bridge {
- namespace Clr2java {
- ref class ManagedLog {
- internal:
- static BridgeLogger^ LOGGER = BridgeLogger::GetLogger("<C++>");
- };
-
- SuspendedTaskClr2Java::SuspendedTaskClr2Java(JNIEnv *env, jobject jobjectSuspendedTask) {
- ManagedLog::LOGGER->LogStart("SuspendedTaskClr2Java::SuspendedTaskClr2Java");
- pin_ptr<JavaVM*> pJavaVm = &_jvm;
- if (env->GetJavaVM(pJavaVm) != 0) {
- ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
- }
- _jobjectSuspendedTask = reinterpret_cast<jobject>(env->NewGlobalRef(jobjectSuspendedTask));
-
- jclass jclassSuspendedTask = env->GetObjectClass(_jobjectSuspendedTask);
- jfieldID jidTaskId = env->GetFieldID(jclassSuspendedTask, "taskId", "Ljava/lang/String;");
- _jstringId = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectSuspendedTask, jidTaskId)));
- ManagedLog::LOGGER->LogStop("SuspendedTaskClr2Java::SuspendedTaskClr2Java");
- }
-
- IActiveContextClr2Java^ SuspendedTaskClr2Java::GetActiveContext() {
- ManagedLog::LOGGER->LogStart("SuspendedTaskClr2Java::GetActiveContext");
- JNIEnv *env = RetrieveEnv(_jvm);
-
- jclass jclassSuspendedTask = env->GetObjectClass(_jobjectSuspendedTask);
- jfieldID jidActiveContext = env->GetFieldID(jclassSuspendedTask, "jactiveContext", "Lorg/apache/reef/javabridge/ActiveContextBridge;");
- jobject jobjectActiveContext = env->GetObjectField(_jobjectSuspendedTask, jidActiveContext);
- ManagedLog::LOGGER->LogStop("SuspendedTaskClr2Java::GetActiveContext");
- return gcnew ActiveContextClr2Java(env, jobjectActiveContext);
- }
-
- String^ SuspendedTaskClr2Java::GetId() {
- ManagedLog::LOGGER->Log("SuspendedTaskClr2Java::GetId");
- JNIEnv *env = RetrieveEnv(_jvm);
- return ManagedStringFromJavaString(env, _jstringId);
- }
-
- array<byte>^ SuspendedTaskClr2Java::Get() {
- ManagedLog::LOGGER->Log("SuspendedTaskClr2Java::Get");
- JNIEnv *env = RetrieveEnv(_jvm);
- jclass jclassSuspendedTask = env->GetObjectClass(_jobjectSuspendedTask);
- jmethodID jmidGet = env->GetMethodID(jclassSuspendedTask, "get", "()[B");
-
- if (jmidGet == NULL) {
- ManagedLog::LOGGER->Log("jmidGet is NULL");
- return nullptr;
- }
- jbyteArray jMessage = (jbyteArray)env->CallObjectMethod(_jobjectSuspendedTask, jmidGet);
- return ManagedByteArrayFromJavaByteArray(env, jMessage);
- }
-
- void SuspendedTaskClr2Java::OnError(String^ message) {
- ManagedLog::LOGGER->Log("SuspendedTaskClr2Java::OnError");
- JNIEnv *env = RetrieveEnv(_jvm);
- HandleClr2JavaError(env, message, _jobjectSuspendedTask);
- }
- }
- }
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/TaskMessageClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/TaskMessageClr2Java.cpp b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/TaskMessageClr2Java.cpp
deleted file mode 100644
index 1ee79e9..0000000
--- a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/TaskMessageClr2Java.cpp
+++ /dev/null
@@ -1,62 +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.
- */
-#include "Clr2JavaImpl.h"
-
-namespace Org {
- namespace Apache {
- namespace REEF {
- namespace Driver {
- namespace Bridge {
- namespace Clr2java {
- ref class ManagedLog {
- internal:
- static BridgeLogger^ LOGGER = BridgeLogger::GetLogger("<C++>");
- };
-
- TaskMessageClr2Java::TaskMessageClr2Java(JNIEnv *env, jobject jtaskMessage) {
- ManagedLog::LOGGER->LogStart("TaskMessageClr2Java::TaskMessageClr2Java");
- pin_ptr<JavaVM*> pJavaVm = &_jvm;
- if (env->GetJavaVM(pJavaVm) != 0) {
- ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
- }
- _jobjectTaskMessage = reinterpret_cast<jobject>(env->NewGlobalRef(jtaskMessage));
-
- jclass jclassTaskMessage = env->GetObjectClass(_jobjectTaskMessage);
- jfieldID jidTaskId = env->GetFieldID(jclassTaskMessage, "taskId", "Ljava/lang/String;");
- _jstringId = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectTaskMessage, jidTaskId)));
- ManagedLog::LOGGER->LogStop("TaskMessageClr2Java::TaskMessageClr2Java");
- }
-
- void TaskMessageClr2Java::OnError(String^ message) {
- ManagedLog::LOGGER->Log("TaskMessageClr2Java::OnError");
- JNIEnv *env = RetrieveEnv(_jvm);
- HandleClr2JavaError(env, message, _jobjectTaskMessage);
- }
-
- String^ TaskMessageClr2Java::GetId() {
- ManagedLog::LOGGER->Log("TaskMessageClr2Java::GetId");
- JNIEnv *env = RetrieveEnv(_jvm);
- return ManagedStringFromJavaString(env, _jstringId);
- }
- }
- }
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/.gitignore
----------------------------------------------------------------------
diff --git a/lang/cs/.gitignore b/lang/cs/.gitignore
index cea2523..8db483c 100644
--- a/lang/cs/.gitignore
+++ b/lang/cs/.gitignore
@@ -6,6 +6,9 @@ TestResults
**/*.suo
**/*.csproj.user
**/obj
+**/x64
+**/*.opensdf
+**/*.sdf
**/.nuget/nuspec
**/.nuget/packages
*.sln.GhostDoc.xml
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/.nuget/finalizeNuspec.ps1
----------------------------------------------------------------------
diff --git a/lang/cs/.nuget/finalizeNuspec.ps1 b/lang/cs/.nuget/finalizeNuspec.ps1
index 69683d8..825072e 100644
--- a/lang/cs/.nuget/finalizeNuspec.ps1
+++ b/lang/cs/.nuget/finalizeNuspec.ps1
@@ -77,6 +77,7 @@ Function Finalize-Nuspec-Version {
}
$nuspecDir = "$SolutionDir\.nuget\nuspec"
+ Write-Output $nuspecDir
$nuspecFiles = Get-ChildItem $nuspecDir
# Replace the $version$ token with the specified version in each nuspec file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge.JAR/Org.Apache.REEF.Bridge.JAR.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge.JAR/Org.Apache.REEF.Bridge.JAR.csproj b/lang/cs/Org.Apache.REEF.Bridge.JAR/Org.Apache.REEF.Bridge.JAR.csproj
index 4623ddc..a728d18 100644
--- a/lang/cs/Org.Apache.REEF.Bridge.JAR/Org.Apache.REEF.Bridge.JAR.csproj
+++ b/lang/cs/Org.Apache.REEF.Bridge.JAR/Org.Apache.REEF.Bridge.JAR.csproj
@@ -24,17 +24,34 @@ under the License.
<RootNameSpace>$(MSBuildProjectName)</RootNameSpace>
</PropertyGroup>
<Import Project="..\build.props" />
+ <Import Project="$(MSBuildBinPath)\Microsoft.Common.targets" />
<!--
Check that maven is installed
-->
<Target Name="CheckMavenInstall">
<Error Condition=" '$(M2_HOME)' == '' " Text="$M2_HOME is not set. Please make sure that Maven is installed and configured. See https://cwiki.apache.org/confluence/display/REEF/Compiling+REEF for details." />
+ <Error Condition=" '$(JAVA_HOME)' == '' " Text="$JAVA_HOME is not set. Please make sure that Java is installed and configured. See https://cwiki.apache.org/confluence/display/REEF/Compiling+REEF for details." />
<Message Text="Using the maven installation found in $(M2_HOME)" />
</Target>
+
+ <Target Name="CheckJavaInstall">
+ <Error Condition=" '$(JAVA_HOME)' == '' " Text="$JAVA_HOME is not set. Please make sure that Java is installed and configured. See https://cwiki.apache.org/confluence/display/REEF/Compiling+REEF for details." />
+ <Message Text="Using the java installation found in $(JAVA_HOME)" />
+ </Target>
+
+ <Target Name="CheckProtocInstall">
+ <Exec ContinueOnError="True" IgnoreExitCode='true'
+ Command='"cmd /c where protoc.exe"'>
+ <Output TaskParameter="ExitCode" PropertyName="ErrorCode"/>
+ </Exec>
+ <Message Text="The exit code is $(ErrorCode)"/>
+ <Error Text="protoc.exe not found. Please make sure that protoc.exe is on the path. See https://cwiki.apache.org/confluence/display/REEF/Compiling+REEF for details." Condition="'$(ErrorCode)' > '0'" />
+ </Target>
+
<!--
Executes 'mvn install', if the JAR does not exist.
-->
- <Target Name="Build" DependsOnTargets="CheckMavenInstall">
+ <Target Name="Build" DependsOnTargets="CheckMavenInstall;CheckJavaInstall;CheckProtocInstall">
<PropertyGroup>
<!--The shaded jar of the bridge -->
<Bridge_JAR_Name>reef-bridge-java-$(REEF_Version)-shaded.jar</Bridge_JAR_Name>
@@ -46,12 +63,12 @@ under the License.
<!--
Executes 'mvn clean', if the JAR exists.
-->
- <Target Name="Clean" DependsOnTargets="CheckMavenInstall">
+ <Target Name="Clean" DependsOnTargets="CheckMavenInstall;CheckJavaInstall;CheckProtocInstall">
<PropertyGroup>
<!--The shaded jar of the bridge -->
<Bridge_JAR_Name>reef-bridge-java-$(REEF_Version)-shaded.jar</Bridge_JAR_Name>
<Bridge_JAR>$(REEF_Source_Folder)\lang\java\reef-bridge-java\target\$(Bridge_JAR_Name)</Bridge_JAR>
- </PropertyGroup>
+ </PropertyGroup>
<Exec Command="$(M2_HOME)\bin\mvn -TC1 -DskipTests clean" Condition="Exists('$(Bridge_JAR)')" WorkingDirectory="$(REEF_Source_Folder)" />
<Delete Files="$(OutputPath)\$(Bridge_JAR_Name)" />
</Target>
@@ -59,4 +76,8 @@ under the License.
Standard Rebuild target: Clean, then build
-->
<Target Name="Rebuild" DependsOnTargets="Clean;Build"/>
+ <Target Name="GetNativeManifest">
+ </Target>
+ <Target Name="GetCopyToOutputDirectoryItems">
+</Target>
</Project>
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp b/lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp
new file mode 100644
index 0000000..6e56806
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp
@@ -0,0 +1,110 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+ namespace Apache {
+ namespace REEF {
+ namespace Driver {
+ namespace Bridge {
+ namespace Clr2java {
+ private ref class ManagedLog {
+ internal:
+ static BridgeLogger^ LOGGER = BridgeLogger::GetLogger("<C++>");
+ };
+
+ ActiveContextClr2Java::ActiveContextClr2Java(JNIEnv *env, jobject jobjectActiveContext) {
+ ManagedLog::LOGGER->LogStart("ActiveContextClr2Java::ActiveContextClr2Java");
+ pin_ptr<JavaVM*> pJavaVm = &_jvm;
+ if (env->GetJavaVM(pJavaVm) != 0) {
+ ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+ }
+
+ _jobjectActiveContext = reinterpret_cast<jobject>(env->NewGlobalRef(jobjectActiveContext));
+
+ jclass jclassActiveContext = env->GetObjectClass(_jobjectActiveContext);
+
+ jfieldID jidContextId = env->GetFieldID(jclassActiveContext, "contextId", "Ljava/lang/String;");
+ _jstringId = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectActiveContext, jidContextId)));
+
+ jfieldID jidEvaluatorId = env->GetFieldID(jclassActiveContext, "evaluatorId", "Ljava/lang/String;");
+ _jstringEvaluatorId = (jstring)env->GetObjectField(_jobjectActiveContext, jidEvaluatorId);
+ _jstringEvaluatorId = reinterpret_cast<jstring>(env->NewGlobalRef(_jstringEvaluatorId));
+
+ ManagedLog::LOGGER->LogStop("ActiveContextClr2Java::ActiveContextClr2Java");
+ }
+
+ void ActiveContextClr2Java::SubmitTask(String^ taskConfigStr) {
+ ManagedLog::LOGGER->LogStart("ActiveContextClr2Java::SubmitTask");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ jclass jclassActiveContext = env->GetObjectClass(_jobjectActiveContext);
+ jmethodID jmidSubmitTask = env->GetMethodID(jclassActiveContext, "submitTaskString", "(Ljava/lang/String;)V");
+
+ if (jmidSubmitTask == NULL) {
+ ManagedLog::LOGGER->Log("jmidSubmitTask is NULL");
+ return;
+ }
+ env->CallObjectMethod(
+ _jobjectActiveContext,
+ jmidSubmitTask,
+ JavaStringFromManagedString(env, taskConfigStr));
+ ManagedLog::LOGGER->LogStop("ActiveContextClr2Java::SubmitTask");
+ }
+
+ void ActiveContextClr2Java::OnError(String^ message) {
+ JNIEnv *env = RetrieveEnv(_jvm);
+ HandleClr2JavaError(env, message, _jobjectActiveContext);
+ }
+
+ void ActiveContextClr2Java::Close() {
+ ManagedLog::LOGGER->LogStart("ActiveContextClr2Java::Close");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ jclass jclassActiveContext = env->GetObjectClass(_jobjectActiveContext);
+ jmethodID jmidClose = env->GetMethodID(jclassActiveContext, "close", "()V");
+
+ if (jmidClose == NULL) {
+ ManagedLog::LOGGER->Log("jmidClose is NULL");
+ return;
+ }
+ env->CallObjectMethod(
+ _jobjectActiveContext,
+ jmidClose);
+ ManagedLog::LOGGER->LogStop("ActiveContextClr2Java::Close");
+ }
+
+ String^ ActiveContextClr2Java::GetId() {
+ JNIEnv *env = RetrieveEnv(_jvm);
+ return ManagedStringFromJavaString(env, _jstringId);
+ }
+
+ String^ ActiveContextClr2Java::GetEvaluatorId() {
+ JNIEnv *env = RetrieveEnv(_jvm);
+ return ManagedStringFromJavaString(env, _jstringEvaluatorId);
+ }
+
+ IEvaluatorDescriptor^ ActiveContextClr2Java::GetEvaluatorDescriptor() {
+ ManagedLog::LOGGER->LogStart("ActiveContextClr2Java::GetEvaluatorDescriptor");
+ return CommonUtilities::RetrieveEvaluatorDescriptor(_jobjectActiveContext, _jvm);
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/AllocatedEvaluatorClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/AllocatedEvaluatorClr2Java.cpp b/lang/cs/Org.Apache.REEF.Bridge/AllocatedEvaluatorClr2Java.cpp
new file mode 100644
index 0000000..4dabd96
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/AllocatedEvaluatorClr2Java.cpp
@@ -0,0 +1,168 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+using namespace JavaClrBridge;
+
+namespace Org {
+ namespace Apache {
+ namespace REEF {
+ namespace Driver {
+ namespace Bridge {
+ namespace Clr2java {
+ ref class ManagedLog {
+ internal:
+ static BridgeLogger^ LOGGER = BridgeLogger::GetLogger("<C++>");
+ };
+
+ AllocatedEvaluatorClr2Java::AllocatedEvaluatorClr2Java(JNIEnv *env, jobject jallocatedEvaluator) {
+
+ ManagedLog::LOGGER->LogStart("AllocatedEvaluatorClr2Java::AllocatedEvaluatorClr2Java");
+
+ pin_ptr<JavaVM*> pJavaVm = &_jvm;
+ if (env->GetJavaVM(pJavaVm) != 0) {
+ ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+ }
+ _jobjectAllocatedEvaluator = reinterpret_cast<jobject>(env->NewGlobalRef(jallocatedEvaluator));
+
+ jclass jclassAllocatedEvaluator = env->GetObjectClass(_jobjectAllocatedEvaluator);
+ jfieldID jidEvaluatorId = env->GetFieldID(jclassAllocatedEvaluator, "evaluatorId", "Ljava/lang/String;");
+ _jstringId = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectAllocatedEvaluator, jidEvaluatorId)));
+
+ jfieldID jidNameServerInfo = env->GetFieldID(jclassAllocatedEvaluator, "nameServerInfo", "Ljava/lang/String;");
+ _jstringNameServerInfo = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectAllocatedEvaluator, jidNameServerInfo)));
+
+ ManagedLog::LOGGER->LogStop("AllocatedEvaluatorClr2Java::AllocatedEvaluatorClr2Java");
+ }
+
+ void AllocatedEvaluatorClr2Java::SubmitContext(String^ contextConfigStr) {
+ ManagedLog::LOGGER->LogStart("AllocatedEvaluatorClr2Java::SubmitContext");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ jclass jclassAllocatedEvaluator = env->GetObjectClass(_jobjectAllocatedEvaluator);
+ jmethodID jmidSubmitContext = env->GetMethodID(jclassAllocatedEvaluator, "submitContextString", "(Ljava/lang/String;)V");
+
+ if (jmidSubmitContext == NULL) {
+ ManagedLog::LOGGER->Log("jmidSubmitContext is NULL");
+ return;
+ }
+ env->CallObjectMethod(
+ _jobjectAllocatedEvaluator,
+ jmidSubmitContext,
+ JavaStringFromManagedString(env, contextConfigStr));
+ ManagedLog::LOGGER->LogStop("AllocatedEvaluatorClr2Java::SubmitContext");
+ }
+
+ void AllocatedEvaluatorClr2Java::SubmitContextAndTask(String^ contextConfigStr, String^ taskConfigStr) {
+ ManagedLog::LOGGER->LogStart("AllocatedEvaluatorClr2Java::SubmitContextAndTask");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ jclass jclassAllocatedEvaluator = env->GetObjectClass(_jobjectAllocatedEvaluator);
+ jmethodID jmidSubmitContextAndTask = env->GetMethodID(jclassAllocatedEvaluator, "submitContextAndTaskString", "(Ljava/lang/String;Ljava/lang/String;)V");
+
+ if (jmidSubmitContextAndTask == NULL) {
+ ManagedLog::LOGGER->Log("jmidSubmitContextAndTask is NULL");
+ return;
+ }
+ env->CallObjectMethod(
+ _jobjectAllocatedEvaluator,
+ jmidSubmitContextAndTask,
+ JavaStringFromManagedString(env, contextConfigStr),
+ JavaStringFromManagedString(env, taskConfigStr));
+ ManagedLog::LOGGER->LogStop("AllocatedEvaluatorClr2Java::SubmitContextAndTask");
+ }
+
+ void AllocatedEvaluatorClr2Java::SubmitContextAndService(String^ contextConfigStr, String^ serviceConfigStr) {
+ ManagedLog::LOGGER->LogStart("AllocatedEvaluatorClr2Java::SubmitContextAndService");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ jclass jclassAllocatedEvaluator = env->GetObjectClass(_jobjectAllocatedEvaluator);
+ jmethodID jmidSubmitContextAndService = env->GetMethodID(jclassAllocatedEvaluator, "submitContextAndServiceString", "(Ljava/lang/String;Ljava/lang/String;)V");
+
+ if (jmidSubmitContextAndService == NULL) {
+ ManagedLog::LOGGER->Log("jmidSubmitContextAndService is NULL");
+ return;
+ }
+ env->CallObjectMethod(
+ _jobjectAllocatedEvaluator,
+ jmidSubmitContextAndService,
+ JavaStringFromManagedString(env, contextConfigStr),
+ JavaStringFromManagedString(env, serviceConfigStr));
+ ManagedLog::LOGGER->LogStop("AllocatedEvaluatorClr2Java::SubmitContextAndService");
+ }
+
+ void AllocatedEvaluatorClr2Java::SubmitContextAndServiceAndTask(String^ contextConfigStr, String^ serviceConfigStr, String^ taskConfigStr) {
+ ManagedLog::LOGGER->LogStart("AllocatedEvaluatorClr2Java::SubmitContextAndServiceAndTask");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ jclass jclassAllocatedEvaluator = env->GetObjectClass(_jobjectAllocatedEvaluator);
+ jmethodID jmidSubmitContextAndServiceAndTask = env->GetMethodID(jclassAllocatedEvaluator, "submitContextAndServiceAndTaskString", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
+
+ if (jmidSubmitContextAndServiceAndTask == NULL) {
+ ManagedLog::LOGGER->Log("jmidSubmitContextAndServiceAndTask is NULL");
+ return;
+ }
+ env->CallObjectMethod(
+ _jobjectAllocatedEvaluator,
+ jmidSubmitContextAndServiceAndTask,
+ JavaStringFromManagedString(env, contextConfigStr),
+ JavaStringFromManagedString(env, serviceConfigStr),
+ JavaStringFromManagedString(env, taskConfigStr));
+ ManagedLog::LOGGER->LogStop("AllocatedEvaluatorClr2Java::SubmitContextAndServiceAndTask");
+ }
+
+ void AllocatedEvaluatorClr2Java::OnError(String^ message) {
+ JNIEnv *env = RetrieveEnv(_jvm);
+ HandleClr2JavaError(env, message, _jobjectAllocatedEvaluator);
+ }
+
+ void AllocatedEvaluatorClr2Java::Close() {
+ ManagedLog::LOGGER->LogStart("AllocatedEvaluatorClr2Java::Close");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ jclass jclassAllocatedEvaluator = env->GetObjectClass(_jobjectAllocatedEvaluator);
+ jmethodID jmidClose = env->GetMethodID(jclassAllocatedEvaluator, "close", "()V");
+
+ if (jmidClose == NULL) {
+ ManagedLog::LOGGER->Log("jmidClose is NULL");
+ return;
+ }
+ env->CallObjectMethod(
+ _jobjectAllocatedEvaluator,
+ jmidClose);
+ ManagedLog::LOGGER->LogStop("AllocatedEvaluatorClr2Java::Close");
+ }
+
+ String^ AllocatedEvaluatorClr2Java::GetId() {
+ ManagedLog::LOGGER->Log("AllocatedEvaluatorClr2Java::GetId");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ return ManagedStringFromJavaString(env, _jstringId);
+ }
+
+ String^ AllocatedEvaluatorClr2Java::GetNameServerInfo() {
+ ManagedLog::LOGGER->Log("AllocatedEvaluatorClr2Java::GetNameServerInfo");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ return ManagedStringFromJavaString(env, _jstringNameServerInfo);
+ }
+
+ IEvaluatorDescriptor^ AllocatedEvaluatorClr2Java::GetEvaluatorDescriptor() {
+ ManagedLog::LOGGER->LogStart("AllocatedEvaluatorClr2Java::GetEvaluatorDescriptor");
+ return CommonUtilities::RetrieveEvaluatorDescriptor(_jobjectAllocatedEvaluator, _jvm);
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/AssemblyInfo.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/AssemblyInfo.cpp b/lang/cs/Org.Apache.REEF.Bridge/AssemblyInfo.cpp
new file mode 100644
index 0000000..d91c459
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/AssemblyInfo.cpp
@@ -0,0 +1,57 @@
+/**
+ * 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.
+ */
+
+#include "stdafx.h"
+
+using namespace System;
+using namespace System::Reflection;
+using namespace System::Runtime::CompilerServices;
+using namespace System::Runtime::InteropServices;
+using namespace System::Security::Permissions;
+
+//
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+//
+[assembly:AssemblyTitleAttribute(L"OrgApacheREEFJavaClrBridge")];
+[assembly:AssemblyDescriptionAttribute(L"")];
+[assembly:AssemblyConfigurationAttribute(L"")];
+[assembly:AssemblyCompanyAttribute(L"")];
+[assembly:AssemblyProductAttribute(L"OrgApacheREEFJavaClrBridge")];
+[assembly:AssemblyCopyrightAttribute(L"Copyright (c) 2015")];
+[assembly:AssemblyTrademarkAttribute(L"")];
+[assembly:AssemblyCultureAttribute(L"")];
+
+//
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the value or you can default the Revision and Build Numbers
+// by using the '*' as shown below:
+
+[assembly:AssemblyVersionAttribute("1.0.*")];
+
+[assembly:ComVisible(false)];
+
+[assembly:CLSCompliantAttribute(true)];
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/AssemblyUtil.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/AssemblyUtil.cpp b/lang/cs/Org.Apache.REEF.Bridge/AssemblyUtil.cpp
new file mode 100644
index 0000000..ce9239c
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/AssemblyUtil.cpp
@@ -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.
+ */
+#include "InteropAssemblies.h"
+
+
+void AssemblyUtil::Add(Assembly^ myasm) {
+ if (0 == _asmCount) {
+ //asm1 = myasm;
+ AppDomain^ currentDomain = AppDomain::CurrentDomain;
+ currentDomain->AssemblyResolve += gcnew ResolveEventHandler(&MyResolveEventHandler);
+ }
+ String^ asmName = myasm->FullName->ToLower();
+ Assembly^ existingAsm = nullptr;
+ if (!asms2->TryGetValue(asmName, existingAsm)) {
+ Console::WriteLine ("AssemblyUtil:: Adding " + asmName);
+ asms2->Add(asmName , myasm);
+ ++_asmCount;
+ }
+}
+
+Assembly^ AssemblyUtil::FindAsm (String^ myasm) {
+ Assembly^ returnAsm = nullptr;
+ if (!asms2->TryGetValue(myasm->ToLower(), returnAsm)) {
+ Console::WriteLine ("AssemblyUtil:: FindAsm_Not_Found " + myasm->ToString());
+ }
+ return returnAsm;
+}
+
+Assembly^ AssemblyUtil::MyResolveEventHandler(Object^ sender, ResolveEventArgs^ args) {
+ Console::WriteLine ("AssemblyUtil:: Resolving " + args->Name);
+ Assembly^ myAsm = AssemblyUtil::FindAsm(args->Name);
+ if (nullptr != myAsm) {
+ Console::WriteLine ("AssemblyUtil:: Found " + args->Name);
+ }
+ return myAsm ;
+}
+
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/BinaryUtil.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/BinaryUtil.cpp b/lang/cs/Org.Apache.REEF.Bridge/BinaryUtil.cpp
new file mode 100644
index 0000000..b7c3a2e
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/BinaryUtil.cpp
@@ -0,0 +1,102 @@
+/**
+ * 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.
+ */
+#include "InteropUtil.h"
+#include "BinaryUtil.h"
+
+DWORD GetActualAddressFromRVA(IMAGE_SECTION_HEADER* pSectionHeader, IMAGE_NT_HEADERS* pNTHeaders, DWORD dwRVA) {
+ DWORD dwRet = 0;
+
+ for (int j = 0; j < pNTHeaders->FileHeader.NumberOfSections; j++, pSectionHeader++) {
+ DWORD cbMaxOnDisk = min( pSectionHeader->Misc.VirtualSize, pSectionHeader->SizeOfRawData );
+
+ DWORD startSectRVA, endSectRVA;
+
+ startSectRVA = pSectionHeader->VirtualAddress;
+ endSectRVA = startSectRVA + cbMaxOnDisk;
+
+ if ( (dwRVA >= startSectRVA) && (dwRVA < endSectRVA)) {
+ dwRet = (pSectionHeader->PointerToRawData ) + (dwRVA - startSectRVA);
+ break;
+ }
+
+ }
+
+ return dwRet;
+}
+
+
+BINARY_TYPE IsManagedBinary(const wchar_t* lpszImageName) {
+ BINARY_TYPE binaryType = BINARY_TYPE_NONE;
+ HANDLE hFile = CreateFile(lpszImageName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+
+ if (INVALID_HANDLE_VALUE != hFile) {
+ //succeeded
+ HANDLE hOpenFileMapping = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL);
+ if (hOpenFileMapping) {
+ BYTE* lpBaseAddress = NULL;
+
+ lpBaseAddress = (BYTE*)MapViewOfFile(hOpenFileMapping, FILE_MAP_READ, 0, 0, 0);
+
+ if (lpBaseAddress) {
+ //having mapped the executable to our process space, now start navigating through the sections
+
+ //DOS header is straightforward. It is the topmost structure in the PE file
+ //i.e. the one at the lowest offset into the file
+ IMAGE_DOS_HEADER* pDOSHeader = (IMAGE_DOS_HEADER*)lpBaseAddress;
+
+ //the only important data in the DOS header is the e_lfanew
+ //the e_lfanew points to the offset of the beginning of NT Headers data
+ IMAGE_NT_HEADERS* pNTHeaders = (IMAGE_NT_HEADERS*)((BYTE*)pDOSHeader + pDOSHeader->e_lfanew);
+
+ IMAGE_SECTION_HEADER* pSectionHeader = (IMAGE_SECTION_HEADER*)((BYTE*)pNTHeaders + sizeof(IMAGE_NT_HEADERS));
+
+ //Now, start parsing
+ //check if it is a PE file
+
+ if (pNTHeaders->Signature == IMAGE_NT_SIGNATURE) {
+ //start parsing COM table
+
+ DWORD dwNETHeaderTableLocation = pNTHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR].VirtualAddress;
+
+ if (dwNETHeaderTableLocation) {
+ //import data does exist for this module
+ IMAGE_COR20_HEADER* pNETHeader = (IMAGE_COR20_HEADER*)((BYTE*)pDOSHeader + GetActualAddressFromRVA(pSectionHeader, pNTHeaders, dwNETHeaderTableLocation));
+
+ if (pNETHeader) {
+ binaryType = BINARY_TYPE_CLR;
+ }
+ else {
+ binaryType = BINARY_TYPE_NATIVE;
+ }
+ }
+ else {
+ binaryType = BINARY_TYPE_NATIVE;
+ }
+ }
+ else {
+ binaryType = BINARY_TYPE_NONE;
+ }
+ UnmapViewOfFile(lpBaseAddress);
+ }
+ CloseHandle(hOpenFileMapping);
+ }
+ CloseHandle(hFile);
+ }
+ return binaryType;
+}
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/BinaryUtil.h
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/BinaryUtil.h b/lang/cs/Org.Apache.REEF.Bridge/BinaryUtil.h
new file mode 100644
index 0000000..dc946a6
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/BinaryUtil.h
@@ -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.
+ */
+typedef enum BINARY_TYPE {
+ BINARY_TYPE_NONE = 0,
+ BINARY_TYPE_NATIVE = 1,
+ BINARY_TYPE_CLR = 2,
+} BINARY_TYPE ;
+
+
+BINARY_TYPE IsManagedBinary(const wchar_t* lpszImageName);
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/ClosedContextClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/ClosedContextClr2Java.cpp b/lang/cs/Org.Apache.REEF.Bridge/ClosedContextClr2Java.cpp
new file mode 100644
index 0000000..6584abe
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/ClosedContextClr2Java.cpp
@@ -0,0 +1,90 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+ namespace Apache {
+ namespace REEF {
+ namespace Driver {
+ namespace Bridge {
+ namespace Clr2java {
+ ref class ManagedLog {
+ internal:
+ static BridgeLogger^ LOGGER = BridgeLogger::GetLogger("<C++>");
+ };
+ ClosedContextClr2Java::ClosedContextClr2Java(JNIEnv *env, jobject jobjectClosedContext) {
+ ManagedLog::LOGGER->LogStart("ClosedContextClr2Java::ClosedContextClr2Java");
+
+ pin_ptr<JavaVM*> pJavaVm = &_jvm;
+ if (env->GetJavaVM(pJavaVm) != 0) {
+ ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+ }
+ _jobjectClosedContext = reinterpret_cast<jobject>(env->NewGlobalRef(jobjectClosedContext));
+ jclass jclassClosedContext = env->GetObjectClass(_jobjectClosedContext);
+
+ jfieldID jidContextId = env->GetFieldID(jclassClosedContext, "contextId", "Ljava/lang/String;");
+ jfieldID jidEvaluatorId = env->GetFieldID(jclassClosedContext, "evaluatorId", "Ljava/lang/String;");
+
+ _jstringContextId = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectClosedContext, jidContextId)));
+ _jstringEvaluatorId = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectClosedContext, jidEvaluatorId)));
+
+ ManagedLog::LOGGER->LogStop("ClosedContextClr2Java::ClosedContextClr2Java");
+ }
+
+ IActiveContextClr2Java^ ClosedContextClr2Java::GetParentContext() {
+ ManagedLog::LOGGER->LogStart("ClosedContextClr2Java::GetParentContext");
+
+ JNIEnv *env = RetrieveEnv(_jvm);
+
+ jclass jclassClosedContext = env->GetObjectClass(_jobjectClosedContext);
+ jfieldID jidParentContext = env->GetFieldID(jclassClosedContext, "parentContext", "Lorg/apache/reef/javabridge/ActiveContextBridge;");
+ jobject jobjectParentContext = env->GetObjectField(_jobjectClosedContext, jidParentContext);
+ ManagedLog::LOGGER->LogStop("ClosedContextClr2Java::GetParentContext");
+
+ return gcnew ActiveContextClr2Java(env, jobjectParentContext);
+ }
+
+ String^ ClosedContextClr2Java::GetId() {
+ ManagedLog::LOGGER->Log("ClosedContextClr2Java::GetId");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ return ManagedStringFromJavaString(env, _jstringContextId);
+ }
+
+ String^ ClosedContextClr2Java::GetEvaluatorId() {
+ ManagedLog::LOGGER->Log("ClosedContextClr2Java::GetEvaluatorId");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ return ManagedStringFromJavaString(env, _jstringEvaluatorId);
+ }
+
+ IEvaluatorDescriptor^ ClosedContextClr2Java::GetEvaluatorDescriptor() {
+ ManagedLog::LOGGER->LogStart("ClosedContextClr2Java::GetEvaluatorDescriptor");
+ return CommonUtilities::RetrieveEvaluatorDescriptor(_jobjectClosedContext, _jvm);
+ }
+
+ void ClosedContextClr2Java::OnError(String^ message) {
+ ManagedLog::LOGGER->Log("ClosedContextClr2Java::OnError");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ HandleClr2JavaError(env, message, _jobjectClosedContext);
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h b/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
new file mode 100644
index 0000000..b1e4491
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
@@ -0,0 +1,223 @@
+/**
+ * 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.
+ */
+#include "InteropUtil.h"
+#include "org_apache_reef_javabridge_NativeInterop.h"
+#include "JavaClrBridge.h"
+#include "InteropAssemblies.h"
+#using "Org.Apache.REEF.Driver.dll"
+
+using namespace System;
+using namespace System::IO;
+using namespace System::Collections::Generic;
+using namespace System::Runtime::InteropServices;
+using namespace System::Reflection;
+using namespace Org::Apache::REEF::Driver::Bridge;
+using namespace Org::Apache::REEF::Driver::Evaluator;
+
+namespace Org {
+ namespace Apache {
+ namespace REEF {
+ namespace Driver {
+ namespace Bridge {
+ namespace Clr2java {
+ public ref class CommonUtilities {
+ public:
+ static IEvaluatorDescriptor^ RetrieveEvaluatorDescriptor(jobject object, JavaVM* jvm);
+ };
+
+ public ref class AllocatedEvaluatorClr2Java : public IAllocatedEvaluaotrClr2Java {
+ jobject _jobjectAllocatedEvaluator;
+ JavaVM* _jvm;
+ jstring _jstringId;
+ jstring _jstringNameServerInfo;
+ public:
+ AllocatedEvaluatorClr2Java(JNIEnv *env, jobject jallocatedEvaluator);
+ virtual void SubmitContextAndTask(String^ contextConfigStr, String^ taskConfigStr);
+ virtual void SubmitContext(String^ contextConfigStr);
+ virtual void SubmitContextAndService(String^ contextConfigStr, String^ serviceConfigStr);
+ virtual void SubmitContextAndServiceAndTask(String^ contextConfigStr, String^ serviceConfigStr, String^ taskConfigStr);
+ virtual void OnError(String^ message);
+ virtual void Close();
+ virtual String^ GetId();
+ virtual String^ GetNameServerInfo();
+ virtual IEvaluatorDescriptor^ GetEvaluatorDescriptor();
+ };
+
+ public ref class ActiveContextClr2Java : public IActiveContextClr2Java {
+ jobject _jobjectActiveContext;
+ jstring _jstringId;
+ jstring _jstringEvaluatorId;
+ JavaVM* _jvm;
+ public:
+ ActiveContextClr2Java(JNIEnv *env, jobject jallocatedEvaluator);
+ virtual void SubmitTask(String^ taskConfigStr);
+ virtual void Close();
+ virtual void OnError(String^ message);
+ virtual String^ GetId();
+ virtual String^ GetEvaluatorId();
+ virtual IEvaluatorDescriptor^ GetEvaluatorDescriptor();
+ };
+
+ public ref class EvaluatorRequestorClr2Java : public IEvaluatorRequestorClr2Java {
+ jobject _jobjectEvaluatorRequestor;
+ JavaVM* _jvm;
+ public:
+ EvaluatorRequestorClr2Java(JNIEnv *env, jobject jevaluatorRequestor);
+ virtual void OnError(String^ message);
+ virtual void Submit(IEvaluatorRequest^ request);
+ };
+
+ public ref class TaskMessageClr2Java : public ITaskMessageClr2Java {
+ jobject _jobjectTaskMessage;
+ JavaVM* _jvm;
+ jstring _jstringId;
+ public:
+ TaskMessageClr2Java(JNIEnv *env, jobject jtaskMessage);
+ virtual void OnError(String^ message);
+ virtual String^ GetId();
+ };
+
+ public ref class FailedTaskClr2Java : public IFailedTaskClr2Java {
+ jobject _jobjectFailedTask;
+ JavaVM* _jvm;
+ public:
+ FailedTaskClr2Java(JNIEnv *env, jobject jfailedTask);
+ virtual void OnError(String^ message);
+ virtual IActiveContextClr2Java^ GetActiveContext();
+ virtual String^ GetString();
+ };
+
+ public ref class RunningTaskClr2Java : public IRunningTaskClr2Java {
+ jobject _jobjectRunningTask;
+ JavaVM* _jvm;
+ jstring _jstringId;
+ public:
+ RunningTaskClr2Java(JNIEnv *env, jobject jrunningTask);
+ virtual void OnError(String^ message);
+ virtual IActiveContextClr2Java^ GetActiveContext();
+ virtual String^ GetId();
+ virtual void Send(array<byte>^ message);
+ };
+
+ public ref class FailedEvaluatorClr2Java : public IFailedEvaluatorClr2Java {
+ jobject _jobjectFailedEvaluator;
+ JavaVM* _jvm;
+ jstring _jstringId;
+ public:
+ FailedEvaluatorClr2Java(JNIEnv *env, jobject jfailedEvaluator);
+ virtual void OnError(String^ message);
+ virtual IEvaluatorRequestorClr2Java^ GetEvaluatorRequestor();
+ virtual String^ GetId();
+ };
+
+ public ref class HttpServerClr2Java : public IHttpServerBridgeClr2Java {
+ jobject _jhttpServerEventBridge;
+ JavaVM* _jvm;
+ public:
+ HttpServerClr2Java(JNIEnv *env, jobject jhttpServerEventBridge);
+ virtual void OnError(String^ message);
+ virtual String^ GetQueryString();
+ virtual void SetUriSpecification(String^ uriSpecification);
+ virtual void SetQueryResult(String^ queryResult);
+ virtual array<byte>^ GetQueryRequestData();
+ virtual void SetQueryResponseData(array<byte>^ responseData);
+ };
+
+ public ref class CompletedTaskClr2Java : public ICompletedTaskClr2Java {
+ jobject _jobjectCompletedTask;
+ JavaVM* _jvm;
+ jstring _jstringId;
+ public:
+ CompletedTaskClr2Java(JNIEnv *env, jobject jcompletedTask);
+ virtual void OnError(String^ message);
+ virtual IActiveContextClr2Java^ GetActiveContext();
+ virtual String^ GetId();
+ };
+
+ public ref class SuspendedTaskClr2Java : public ISuspendedTaskClr2Java {
+ jobject _jobjectSuspendedTask;
+ JavaVM* _jvm;
+ jstring _jstringId;
+ public:
+ SuspendedTaskClr2Java(JNIEnv *env, jobject jobjectSuspendedTask);
+ virtual void OnError(String^ message);
+ virtual IActiveContextClr2Java^ GetActiveContext();
+ virtual String^ GetId();
+ virtual array<byte>^ Get();
+ };
+
+ public ref class CompletedEvaluatorClr2Java : public ICompletedEvaluatorClr2Java {
+ jobject _jobjectCompletedEvaluator;
+ JavaVM* _jvm;
+ jstring _jstringId;
+ public:
+ CompletedEvaluatorClr2Java(JNIEnv *env, jobject jobjectCompletedEvaluator);
+ virtual void OnError(String^ message);
+ virtual String^ GetId();
+ };
+
+ public ref class ClosedContextClr2Java : public IClosedContextClr2Java {
+ jobject _jobjectClosedContext;
+ JavaVM* _jvm;
+ jstring _jstringContextId;
+ jstring _jstringEvaluatorId;
+ public:
+ ClosedContextClr2Java(JNIEnv *env, jobject jobjectClosedContext);
+ virtual void OnError(String^ message);
+ virtual String^ GetId();
+ virtual String^ GetEvaluatorId();
+ virtual IEvaluatorDescriptor^ GetEvaluatorDescriptor();
+ virtual IActiveContextClr2Java^ GetParentContext();
+ };
+
+ public ref class FailedContextClr2Java : public IFailedContextClr2Java {
+ jobject _jobjectFailedContext;
+ JavaVM* _jvm;
+ jstring _jstringContextId;
+ jstring _jstringEvaluatorId;
+ jstring _jstringParentContextId;
+ public:
+ FailedContextClr2Java(JNIEnv *env, jobject jobjectFailedContext);
+ virtual void OnError(String^ message);
+ virtual String^ GetId();
+ virtual String^ GetEvaluatorId();
+ virtual String^ GetParentId();
+ virtual IEvaluatorDescriptor^ GetEvaluatorDescriptor();
+ virtual IActiveContextClr2Java^ GetParentContext();
+ };
+
+ public ref class ContextMessageClr2Java : public IContextMessageClr2Java {
+ jobject _jobjectContextMessage;
+ JavaVM* _jvm;
+ jbyteArray _jarrayMessage;
+ jstring _jstringId;
+ jstring _jstringSourceId;
+ public:
+ ContextMessageClr2Java(JNIEnv *env, jobject jobjectContextMessage);
+ virtual void OnError(String^ message);
+ virtual array<byte>^ Get();
+ virtual String^ GetId();
+ virtual String^ GetMessageSourceId();
+ };
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/CommonUtilities.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/CommonUtilities.cpp b/lang/cs/Org.Apache.REEF.Bridge/CommonUtilities.cpp
new file mode 100644
index 0000000..5de6e75
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/CommonUtilities.cpp
@@ -0,0 +1,55 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+ namespace Apache {
+ namespace REEF {
+ namespace Driver {
+ namespace Bridge {
+ namespace Clr2java {
+ ref class ManagedLog {
+ internal:
+ static BridgeLogger^ LOGGER = BridgeLogger::GetLogger("<C++>CommonUtilities");
+ };
+
+ IEvaluatorDescriptor^ CommonUtilities::RetrieveEvaluatorDescriptor(jobject object, JavaVM* jvm) {
+ ManagedLog::LOGGER->LogStart("CommonUtilities::GetEvaluatorDescriptor");
+ JNIEnv *env = RetrieveEnv(jvm);
+ jclass jclassActiveContext = env->GetObjectClass(object);
+ jmethodID jmidGetEvaluatorDescriptor = env->GetMethodID(jclassActiveContext, "getEvaluatorDescriptorSring", "()Ljava/lang/String;");
+
+ if (jmidGetEvaluatorDescriptor == NULL) {
+ ManagedLog::LOGGER->Log("jmidGetEvaluatorDescriptor is NULL");
+ return nullptr;
+ }
+ jstring jevaluatorDescriptorString = (jstring)env->CallObjectMethod(
+ object,
+ jmidGetEvaluatorDescriptor);
+ String^ evaluatorDescriptorString = ManagedStringFromJavaString(env, jevaluatorDescriptorString);
+ ManagedLog::LOGGER->LogStop("InteropUtil::GetEvaluatorDescriptor");
+
+ return gcnew EvaluatorDescriptorImpl(evaluatorDescriptorString);
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/CompletedEvaluatorClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/CompletedEvaluatorClr2Java.cpp b/lang/cs/Org.Apache.REEF.Bridge/CompletedEvaluatorClr2Java.cpp
new file mode 100644
index 0000000..c961881
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/CompletedEvaluatorClr2Java.cpp
@@ -0,0 +1,62 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+ namespace Apache {
+ namespace REEF {
+ namespace Driver {
+ namespace Bridge {
+ namespace Clr2java {
+ ref class ManagedLog {
+ internal:
+ static BridgeLogger^ LOGGER = BridgeLogger::GetLogger("<C++>");
+ };
+
+ CompletedEvaluatorClr2Java::CompletedEvaluatorClr2Java(JNIEnv *env, jobject jCompletedEvaluator) {
+ ManagedLog::LOGGER->LogStart("CompletedEvaluatorClr2Java::CompletedEvaluatorClr2Java");
+ pin_ptr<JavaVM*> pJavaVm = &_jvm;
+ if (env->GetJavaVM(pJavaVm) != 0) {
+ ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+ }
+ _jobjectCompletedEvaluator = reinterpret_cast<jobject>(env->NewGlobalRef(jCompletedEvaluator));
+
+ jclass jclassCompletedEvaluator = env->GetObjectClass(_jobjectCompletedEvaluator);
+ jfieldID jidEvaluatorId = env->GetFieldID(jclassCompletedEvaluator, "evaluatorId", "Ljava/lang/String;");
+ _jstringId = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectCompletedEvaluator, jidEvaluatorId)));
+ ManagedLog::LOGGER->LogStop("CompletedEvaluatorClr2Java::CompletedEvaluatorClr2Java");
+ }
+
+ void CompletedEvaluatorClr2Java::OnError(String^ message) {
+ ManagedLog::LOGGER->Log("CompletedEvaluatorClr2Java::OnError");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ HandleClr2JavaError(env, message, _jobjectCompletedEvaluator);
+ }
+
+ String^ CompletedEvaluatorClr2Java::GetId() {
+ ManagedLog::LOGGER->Log("CompletedEvaluatorClr2Java::GetId");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ return ManagedStringFromJavaString(env, _jstringId);
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/CompletedTaskClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/CompletedTaskClr2Java.cpp b/lang/cs/Org.Apache.REEF.Bridge/CompletedTaskClr2Java.cpp
new file mode 100644
index 0000000..be9fe31
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/CompletedTaskClr2Java.cpp
@@ -0,0 +1,73 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+ namespace Apache {
+ namespace REEF {
+ namespace Driver {
+ namespace Bridge {
+ namespace Clr2java {
+ ref class ManagedLog {
+ internal:
+ static BridgeLogger^ LOGGER = BridgeLogger::GetLogger("<C++>");
+ };
+
+ CompletedTaskClr2Java::CompletedTaskClr2Java(JNIEnv *env, jobject jobjectCompletedTask) {
+ ManagedLog::LOGGER->LogStart("CompletedTaskClr2Java::CompletedTaskClr2Java");
+ pin_ptr<JavaVM*> pJavaVm = &_jvm;
+ if (env->GetJavaVM(pJavaVm) != 0) {
+ ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+ }
+ _jobjectCompletedTask = reinterpret_cast<jobject>(env->NewGlobalRef(jobjectCompletedTask));
+
+ jclass jclassCompletedTask = env->GetObjectClass(_jobjectCompletedTask);
+ jfieldID jidTaskId = env->GetFieldID(jclassCompletedTask, "taskId", "Ljava/lang/String;");
+ _jstringId = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectCompletedTask, jidTaskId)));
+ ManagedLog::LOGGER->LogStop("CompletedTaskClr2Java::CompletedTaskClr2Java");
+ }
+
+ void CompletedTaskClr2Java::OnError(String^ message) {
+ ManagedLog::LOGGER->Log("CompletedTaskClr2Java::OnError");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ HandleClr2JavaError(env, message, _jobjectCompletedTask);
+ }
+
+ IActiveContextClr2Java^ CompletedTaskClr2Java::GetActiveContext() {
+ ManagedLog::LOGGER->LogStart("CompletedTaskClr2Java::GetActiveContext");
+ JNIEnv *env = RetrieveEnv(_jvm);
+
+ jclass jclassCompletedTask = env->GetObjectClass(_jobjectCompletedTask);
+ jfieldID jidActiveContext = env->GetFieldID(jclassCompletedTask, "jactiveContext", "Lorg/apache/reef/javabridge/ActiveContextBridge;");
+ jobject jobjectActiveContext = env->GetObjectField(_jobjectCompletedTask, jidActiveContext);
+ ManagedLog::LOGGER->LogStop("CompletedTaskClr2Java::GetActiveContext");
+ return gcnew ActiveContextClr2Java(env, jobjectActiveContext);
+ }
+
+ String^ CompletedTaskClr2Java::GetId() {
+ ManagedLog::LOGGER->Log("CompletedTaskClr2Java::GetId");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ return ManagedStringFromJavaString(env, _jstringId);
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/ContextMessageClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/ContextMessageClr2Java.cpp b/lang/cs/Org.Apache.REEF.Bridge/ContextMessageClr2Java.cpp
new file mode 100644
index 0000000..c385e46
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/ContextMessageClr2Java.cpp
@@ -0,0 +1,80 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+ namespace Apache {
+ namespace REEF {
+ namespace Driver {
+ namespace Bridge {
+ namespace Clr2java {
+ ref class ManagedLog {
+ internal:
+ static BridgeLogger^ LOGGER = BridgeLogger::GetLogger("<C++>");
+ };
+ ContextMessageClr2Java::ContextMessageClr2Java(JNIEnv *env, jobject jobjectContextMessage) {
+ ManagedLog::LOGGER->LogStart("ContextMessageClr2Java::ContextMessageClr2Java");
+
+ pin_ptr<JavaVM*> pJavaVm = &_jvm;
+ if (env->GetJavaVM(pJavaVm) != 0) {
+ ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+ }
+ _jobjectContextMessage = reinterpret_cast<jobject>(env->NewGlobalRef(jobjectContextMessage));
+ jclass jclassContextMessage = env->GetObjectClass(_jobjectContextMessage);
+
+ jfieldID jidId = env->GetFieldID(jclassContextMessage, "contextMessageId", "Ljava/lang/String;");
+ jfieldID jidSourceId = env->GetFieldID(jclassContextMessage, "messageSourceId", "Ljava/lang/String;");
+ jfieldID jidMessage = env->GetFieldID(jclassContextMessage, "message", "()[B");
+
+ _jstringId = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectContextMessage, jidId)));
+ _jstringSourceId = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectContextMessage, jidSourceId)));
+ _jarrayMessage = reinterpret_cast<jbyteArray>(env->NewGlobalRef(env->GetObjectField(_jobjectContextMessage, jidMessage)));
+
+ ManagedLog::LOGGER->LogStop("ContextMessageClr2Java::ContextMessageClr2Java");
+ }
+
+ String^ ContextMessageClr2Java::GetId() {
+ ManagedLog::LOGGER->Log("ContextMessageClr2Java::GetId");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ return ManagedStringFromJavaString(env, _jstringId);
+ }
+
+ String^ ContextMessageClr2Java::GetMessageSourceId() {
+ ManagedLog::LOGGER->Log("ContextMessageClr2Java::GetMessageSourceId");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ return ManagedStringFromJavaString(env, _jstringSourceId);
+ }
+
+ array<byte>^ ContextMessageClr2Java::Get() {
+ ManagedLog::LOGGER->Log("ContextMessageClr2Java::Get");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ return ManagedByteArrayFromJavaByteArray(env, _jarrayMessage);
+ }
+
+ void ContextMessageClr2Java::OnError(String^ message) {
+ ManagedLog::LOGGER->Log("ContextMessageClr2Java::OnError");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ HandleClr2JavaError(env, message, _jobjectContextMessage);
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/EvaluatorRequestorClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/EvaluatorRequestorClr2Java.cpp b/lang/cs/Org.Apache.REEF.Bridge/EvaluatorRequestorClr2Java.cpp
new file mode 100644
index 0000000..2daed9e
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/EvaluatorRequestorClr2Java.cpp
@@ -0,0 +1,73 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+ namespace Apache {
+ namespace REEF {
+ namespace Driver {
+ namespace Bridge {
+ namespace Clr2java {
+ ref class ManagedLog {
+ internal:
+ static BridgeLogger^ LOGGER = BridgeLogger::GetLogger("<C++>");
+ };
+
+ EvaluatorRequestorClr2Java::EvaluatorRequestorClr2Java(JNIEnv *env, jobject jevaluatorRequestor) {
+ ManagedLog::LOGGER->LogStart("EvaluatorRequestorClr2Java::EvaluatorRequestorClr2Java");
+ pin_ptr<JavaVM*> pJavaVm = &_jvm;
+ if (env->GetJavaVM(pJavaVm) != 0) {
+ ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+ }
+ _jobjectEvaluatorRequestor = reinterpret_cast<jobject>(env->NewGlobalRef(jevaluatorRequestor));
+ ManagedLog::LOGGER->LogStop("EvaluatorRequestorClr2Java::EvaluatorRequestorClr2Java");
+ }
+
+ void EvaluatorRequestorClr2Java::Submit(IEvaluatorRequest^ request) {
+ ManagedLog::LOGGER->LogStart("EvaluatorRequestorClr2Java::Submit");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ jclass jclassEvaluatorRequestor = env->GetObjectClass(_jobjectEvaluatorRequestor);
+ jmethodID jmidSubmit = env->GetMethodID(jclassEvaluatorRequestor, "submit", "(IIILjava/lang/String;)V");
+
+ if (jmidSubmit == NULL) {
+ fprintf(stdout, " jmidSubmit is NULL\n");
+ fflush(stdout);
+ return;
+ }
+ env->CallObjectMethod(
+ _jobjectEvaluatorRequestor,
+ jmidSubmit,
+ request->Number,
+ request->MemoryMegaBytes,
+ request->VirtualCore,
+ JavaStringFromManagedString(env, request->Rack));
+ ManagedLog::LOGGER->LogStop("EvaluatorRequestorClr2Java::Submit");
+ }
+
+ void EvaluatorRequestorClr2Java::OnError(String^ message) {
+ ManagedLog::LOGGER->Log("EvaluatorRequestorClr2Java::OnError");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ HandleClr2JavaError(env, message, _jobjectEvaluatorRequestor);
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/FailedContextClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/FailedContextClr2Java.cpp b/lang/cs/Org.Apache.REEF.Bridge/FailedContextClr2Java.cpp
new file mode 100644
index 0000000..5a96202
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/FailedContextClr2Java.cpp
@@ -0,0 +1,98 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+ namespace Apache {
+ namespace REEF {
+ namespace Driver {
+ namespace Bridge {
+ namespace Clr2java {
+ ref class ManagedLog {
+ internal:
+ static BridgeLogger^ LOGGER = BridgeLogger::GetLogger("<C++>");
+ };
+ FailedContextClr2Java::FailedContextClr2Java(JNIEnv *env, jobject jobjectFailedContext) {
+ ManagedLog::LOGGER->LogStart("FailedContextClr2Java::FailedContextClr2Java");
+
+ pin_ptr<JavaVM*> pJavaVm = &_jvm;
+ if (env->GetJavaVM(pJavaVm) != 0) {
+ ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+ }
+ _jobjectFailedContext = reinterpret_cast<jobject>(env->NewGlobalRef(jobjectFailedContext));
+ jclass jclassFailedContext = env->GetObjectClass(_jobjectFailedContext);
+
+ jfieldID jidContextId = env->GetFieldID(jclassFailedContext, "contextId", "Ljava/lang/String;");
+ jfieldID jidEvaluatorId = env->GetFieldID(jclassFailedContext, "evaluatorId", "Ljava/lang/String;");
+ jfieldID jidParentId = env->GetFieldID(jclassFailedContext, "parentContextId", "Ljava/lang/String;");
+
+ _jstringContextId = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectFailedContext, jidContextId)));
+ _jstringEvaluatorId = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectFailedContext, jidEvaluatorId)));
+ _jstringParentContextId = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectFailedContext, jidParentId)));
+
+ ManagedLog::LOGGER->LogStop("FailedContextClr2Java::FailedContextClr2Java");
+ }
+
+ IActiveContextClr2Java^ FailedContextClr2Java::GetParentContext() {
+ ManagedLog::LOGGER->LogStart("FailedContextClr2Java::GetParentContext");
+
+ JNIEnv *env = RetrieveEnv(_jvm);
+
+ jclass jclassFailedContext = env->GetObjectClass(_jobjectFailedContext);
+ jfieldID jidParentContext = env->GetFieldID(jclassFailedContext, "parentContext", "Lorg/apache/reef/javabridge/ActiveContextBridge;");
+ jobject jobjectParentContext = env->GetObjectField(_jobjectFailedContext, jidParentContext);
+ ManagedLog::LOGGER->LogStop("FailedContextClr2Java::GetParentContext");
+
+ return gcnew ActiveContextClr2Java(env, jobjectParentContext);
+ }
+
+ String^ FailedContextClr2Java::GetId() {
+ ManagedLog::LOGGER->Log("FailedContextClr2Java::GetId");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ return ManagedStringFromJavaString(env, _jstringContextId);
+ }
+
+ String^ FailedContextClr2Java::GetEvaluatorId() {
+ ManagedLog::LOGGER->Log("FailedContextClr2Java::GetEvaluatorId");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ return ManagedStringFromJavaString(env, _jstringEvaluatorId);
+ }
+
+ String^ FailedContextClr2Java::GetParentId() {
+ ManagedLog::LOGGER->Log("FailedContextClr2Java::GetParentId");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ return ManagedStringFromJavaString(env, _jstringParentContextId);
+ }
+
+ IEvaluatorDescriptor^ FailedContextClr2Java::GetEvaluatorDescriptor() {
+ ManagedLog::LOGGER->LogStart("FailedContextClr2Java::GetEvaluatorDescriptor");
+ return CommonUtilities::RetrieveEvaluatorDescriptor(_jobjectFailedContext, _jvm);
+ }
+
+ void FailedContextClr2Java::OnError(String^ message) {
+ ManagedLog::LOGGER->Log("FailedContextClr2Java::OnError");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ HandleClr2JavaError(env, message, _jobjectFailedContext);
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/FailedEvaluatorClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/FailedEvaluatorClr2Java.cpp b/lang/cs/Org.Apache.REEF.Bridge/FailedEvaluatorClr2Java.cpp
new file mode 100644
index 0000000..615e09f
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/FailedEvaluatorClr2Java.cpp
@@ -0,0 +1,76 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+using namespace JavaClrBridge;
+
+namespace Org {
+ namespace Apache {
+ namespace REEF {
+ namespace Driver {
+ namespace Bridge {
+ namespace Clr2java {
+ ref class ManagedLog {
+ internal:
+ static BridgeLogger^ LOGGER = BridgeLogger::GetLogger("<C++>");
+ };
+
+ FailedEvaluatorClr2Java::FailedEvaluatorClr2Java(JNIEnv *env, jobject jobjectFailedEvaluator) {
+ ManagedLog::LOGGER->LogStart("FailedEvaluatorClr2Java::FailedEvaluatorClr2Java");
+ pin_ptr<JavaVM*> pJavaVm = &_jvm;
+ if (env->GetJavaVM(pJavaVm) != 0) {
+ ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+ }
+ _jobjectFailedEvaluator = reinterpret_cast<jobject>(env->NewGlobalRef(jobjectFailedEvaluator));
+
+ jclass jclassFailedEvaluator = env->GetObjectClass(_jobjectFailedEvaluator);
+ jfieldID jidEvaluatorId = env->GetFieldID(jclassFailedEvaluator, "evaluatorId", "Ljava/lang/String;");
+ _jstringId = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectFailedEvaluator, jidEvaluatorId)));
+ ManagedLog::LOGGER->LogStop("FailedEvaluatorClr2Java::FailedEvaluatorClr2Java");
+ }
+
+ IEvaluatorRequestorClr2Java^ FailedEvaluatorClr2Java::GetEvaluatorRequestor() {
+ ManagedLog::LOGGER->LogStart("FailedEvaluatorClr2Java::GetEvaluatorRequestor");
+ JNIEnv *env = RetrieveEnv(_jvm);
+
+ jclass jclassFailedEvaluator = env->GetObjectClass(_jobjectFailedEvaluator);
+ jfieldID jidEvaluatorRequestor = env->GetFieldID(jclassFailedEvaluator, "evaluatorRequestorBridge", "Lorg/apache/reef/javabridge/EvaluatorRequestorBridge;");
+ jobject jobjectEvaluatorRequestor = env->GetObjectField(_jobjectFailedEvaluator, jidEvaluatorRequestor);
+ ManagedLog::LOGGER->LogStop("FailedEvaluatorClr2Java::GetEvaluatorRequestor");
+ return gcnew EvaluatorRequestorClr2Java(env, jobjectEvaluatorRequestor);
+ }
+
+ String^ FailedEvaluatorClr2Java::GetId() {
+ ManagedLog::LOGGER->Log("FailedEvaluatorClr2Java::GetId");
+
+ JNIEnv *env = RetrieveEnv(_jvm);
+ return ManagedStringFromJavaString(env, _jstringId);
+ }
+
+ void FailedEvaluatorClr2Java::OnError(String^ message) {
+ ManagedLog::LOGGER->Log("FailedEvaluatorClr2Java::OnError");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ HandleClr2JavaError(env, message, _jobjectFailedEvaluator);
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/FailedTaskClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/FailedTaskClr2Java.cpp b/lang/cs/Org.Apache.REEF.Bridge/FailedTaskClr2Java.cpp
new file mode 100644
index 0000000..b27b13d
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/FailedTaskClr2Java.cpp
@@ -0,0 +1,83 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+ namespace Apache {
+ namespace REEF {
+ namespace Driver {
+ namespace Bridge {
+ namespace Clr2java {
+ ref class ManagedLog {
+ internal:
+ static BridgeLogger^ LOGGER = BridgeLogger::GetLogger("<C++>");
+ };
+
+ FailedTaskClr2Java::FailedTaskClr2Java(JNIEnv *env, jobject jobjectFailedTask) {
+ ManagedLog::LOGGER->LogStart("FailedTaskClr2Java::AllocatedEvaluatorClr2Java");
+ pin_ptr<JavaVM*> pJavaVm = &_jvm;
+ if (env->GetJavaVM(pJavaVm) != 0) {
+ ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+ }
+ _jobjectFailedTask = reinterpret_cast<jobject>(env->NewGlobalRef(jobjectFailedTask));
+ ManagedLog::LOGGER->LogStop("FailedTaskClr2Java::AllocatedEvaluatorClr2Java");
+ }
+
+ IActiveContextClr2Java^ FailedTaskClr2Java::GetActiveContext() {
+ ManagedLog::LOGGER->LogStart("FailedTaskClr2Java::GetActiveContext");
+
+ JNIEnv *env = RetrieveEnv(_jvm);
+
+ jclass jclassFailedTask = env->GetObjectClass(_jobjectFailedTask);
+ jfieldID jidActiveContext = env->GetFieldID(jclassFailedTask, "jactiveContext", "Lorg/apache/reef/javabridge/ActiveContextBridge;");
+ jobject jobjectActiveContext = env->GetObjectField(_jobjectFailedTask, jidActiveContext);
+
+ ManagedLog::LOGGER->LogStop("FailedTaskClr2Java::GetActiveContext");
+ return gcnew ActiveContextClr2Java(env, jobjectActiveContext);
+ }
+
+ String^ FailedTaskClr2Java::GetString() {
+ ManagedLog::LOGGER->LogStart("FailedTaskClr2Java::GetString");
+ JNIEnv *env = RetrieveEnv(_jvm);
+
+ jclass jclassFailedTask = env->GetObjectClass(_jobjectFailedTask);
+ jmethodID jmidGetFailedTaskString = env->GetMethodID(jclassFailedTask, "getFailedTaskString", "()Ljava/lang/String;");
+
+ if (jmidGetFailedTaskString == NULL) {
+ ManagedLog::LOGGER->LogStart("jmidGetFailedTaskString is NULL");
+ return nullptr;
+ }
+ jstring jFailedTaskString = (jstring)env->CallObjectMethod(
+ _jobjectFailedTask,
+ jmidGetFailedTaskString);
+ ManagedLog::LOGGER->LogStop("FailedTaskClr2Java::GetString");
+ return ManagedStringFromJavaString(env, jFailedTaskString);
+ }
+
+ void FailedTaskClr2Java::OnError(String^ message) {
+ ManagedLog::LOGGER->Log("FailedTaskClr2Java::OnError");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ HandleClr2JavaError(env, message, _jobjectFailedTask);
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/HttpServerClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/HttpServerClr2Java.cpp b/lang/cs/Org.Apache.REEF.Bridge/HttpServerClr2Java.cpp
new file mode 100644
index 0000000..f8a819d
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/HttpServerClr2Java.cpp
@@ -0,0 +1,139 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+ namespace Apache {
+ namespace REEF {
+ namespace Driver {
+ namespace Bridge {
+ namespace Clr2java {
+ ref class ManagedLog {
+ internal:
+ static BridgeLogger^ LOGGER = BridgeLogger::GetLogger("<C++>");
+ };
+
+ HttpServerClr2Java::HttpServerClr2Java(JNIEnv *env, jobject jhttpServerEventBridge) {
+ ManagedLog::LOGGER->LogStart("HttpServerClr2Java::HttpServerClr2Java");
+ pin_ptr<JavaVM*> pJavaVm = &_jvm;
+ if (env->GetJavaVM(pJavaVm) != 0) {
+ ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+ }
+ _jhttpServerEventBridge = reinterpret_cast<jobject>(env->NewGlobalRef(jhttpServerEventBridge));
+ ManagedLog::LOGGER->LogStop("HttpServerClr2Java::HttpServerClr2Java");
+ }
+
+ String^ HttpServerClr2Java::GetQueryString() {
+ ManagedLog::LOGGER->LogStart("HttpServerClr2Java::GetQueryString");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ jclass jclasshttpServerEventBridge = env->GetObjectClass(_jhttpServerEventBridge);
+ jmethodID jmidgetQueryString = env->GetMethodID(jclasshttpServerEventBridge, "getQueryString", "()Ljava/lang/String;");
+ if (jmidgetQueryString == NULL) {
+ fprintf(stdout, " jmidgetQueryString is NULL\n");
+ fflush(stdout);
+ return nullptr;
+ }
+ jstring jQueryString = (jstring)env->CallObjectMethod(
+ _jhttpServerEventBridge,
+ jmidgetQueryString);
+
+ ManagedLog::LOGGER->LogStop("HttpServerClr2Java::GetQueryString");
+ return ManagedStringFromJavaString(env, jQueryString);
+ }
+
+ array<byte>^ HttpServerClr2Java::GetQueryRequestData() {
+ ManagedLog::LOGGER->LogStart("HttpServerClr2Java::GetQueryRequestData");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ jclass jclasshttpServerEventBridge = env->GetObjectClass(_jhttpServerEventBridge);
+ jmethodID jmidgetQueryBytes = env->GetMethodID(jclasshttpServerEventBridge, "getQueryRequestData", "()[B");
+
+ if (jmidgetQueryBytes == NULL) {
+ ManagedLog::LOGGER->Log("jmidgetQueryBytes is NULL");
+ return nullptr;
+ }
+ jbyteArray jQueryBytes = (jbyteArray)env->CallObjectMethod(
+ _jhttpServerEventBridge,
+ jmidgetQueryBytes);
+
+ ManagedLog::LOGGER->LogStop("HttpServerClr2Java::GetQueryRequestData");
+ return ManagedByteArrayFromJavaByteArray(env, jQueryBytes);
+ }
+
+ void HttpServerClr2Java::SetQueryResult(String^ queryResult) {
+ ManagedLog::LOGGER->LogStart("HttpServerClr2Java::SetQueryResult");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ jclass jclasshttpServerEventBridge = env->GetObjectClass(_jhttpServerEventBridge);
+ jmethodID jmidsetQueryResult = env->GetMethodID(jclasshttpServerEventBridge, "setQueryResult", "(Ljava/lang/String;)V");
+
+ if (jmidsetQueryResult == NULL) {
+ ManagedLog::LOGGER->Log("jmidsetQueryResult is NULL");
+ return;
+ }
+ env->CallObjectMethod(
+ _jhttpServerEventBridge,
+ jmidsetQueryResult,
+ JavaStringFromManagedString(env, queryResult));
+ ManagedLog::LOGGER->LogStop("HttpServerClr2Java::SetQueryResult");
+ }
+
+ void HttpServerClr2Java::SetQueryResponseData(array<byte>^ queryResponseData) {
+ ManagedLog::LOGGER->LogStart("HttpServerClr2Java::SetQueryResponseData");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ jclass jclasshttpServerEventBridge = env->GetObjectClass(_jhttpServerEventBridge);
+ jmethodID jmidsetQueryResult = env->GetMethodID(jclasshttpServerEventBridge, "setQueryResponseData", "([B)V");
+
+ if (jmidsetQueryResult == NULL) {
+ ManagedLog::LOGGER->Log("jmidsetQueryResult is NULL");
+ return;
+ }
+ env->CallObjectMethod(
+ _jhttpServerEventBridge,
+ jmidsetQueryResult,
+ JavaByteArrayFromManagedByteArray(env, queryResponseData));
+ ManagedLog::LOGGER->LogStop("HttpServerClr2Java::SetQueryResponseData");
+ }
+
+ void HttpServerClr2Java::SetUriSpecification(String^ uriSpecification) {
+ ManagedLog::LOGGER->LogStart("HttpServerClr2Java::SetUriSpecification");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ jclass jclasshttpServerEventBridge = env->GetObjectClass(_jhttpServerEventBridge);
+ jmethodID jmidsetUriSpecification = env->GetMethodID(jclasshttpServerEventBridge, "setUriSpecification", "(Ljava/lang/String;)V");
+
+ if (jmidsetUriSpecification == NULL) {
+ ManagedLog::LOGGER->Log("jmidsetUriSpecification is NULL");
+ return;
+ }
+ env->CallObjectMethod(
+ _jhttpServerEventBridge,
+ jmidsetUriSpecification,
+ JavaStringFromManagedString(env, uriSpecification));
+ ManagedLog::LOGGER->LogStop("HttpServerClr2Java::SetUriSpecification");
+ }
+
+ void HttpServerClr2Java::OnError(String^ message) {
+ ManagedLog::LOGGER->Log("HttpServerClr2Java::OnError");
+ JNIEnv *env = RetrieveEnv(_jvm);
+ HandleClr2JavaError(env, message, _jhttpServerEventBridge);
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/InteropAssemblies.h
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/InteropAssemblies.h b/lang/cs/Org.Apache.REEF.Bridge/InteropAssemblies.h
new file mode 100644
index 0000000..2e80d71
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/InteropAssemblies.h
@@ -0,0 +1,40 @@
+/**
+ * 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.
+ */
+#pragma once
+#define _USING_V110_SDK71_
+
+#pragma warning( push )
+#pragma warning( disable : 4793 )
+#include <jni.h>
+#pragma warning( pop )
+#include "mscoree.h"
+#include "vcclr.h"
+
+using namespace System;
+using namespace System::Reflection;
+using namespace System::Collections::Generic;
+
+public ref class AssemblyUtil {
+ public :
+ static int _asmCount = 0;
+ static Dictionary<String^, System::Reflection::Assembly^>^ asms2 = gcnew Dictionary<String^, Assembly^>();
+ static void Add(Assembly^ myasm);
+ static Assembly^ FindAsm (String^ myasm);
+ static Assembly^ MyResolveEventHandler(Object^ sender, ResolveEventArgs^ args);
+};