Skip to content

Commit

Permalink
#93: Java API execute() method supports 'file' argument
Browse files Browse the repository at this point in the history
  • Loading branch information
apangin committed Mar 21, 2018
1 parent 7f752d6 commit aac31eb
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 10 deletions.
12 changes: 6 additions & 6 deletions src/java/one/profiler/AsyncProfiler.java
Expand Up @@ -48,20 +48,20 @@ public static synchronized AsyncProfiler getInstance(String libPath) {
}

@Override
public void start(String event, long interval) {
public void start(String event, long interval) throws IllegalStateException {
start0(event, interval);
}

@Override
public void stop() {
public void stop() throws IllegalStateException {
stop0();
}

@Override
public native long getSamples();

@Override
public String execute(String command) {
public String execute(String command) throws IllegalArgumentException, java.io.IOException {
return execute0(command);
}

Expand All @@ -80,9 +80,9 @@ public String dumpFlat(int maxMethods) {
return dumpFlat0(maxMethods);
}

private native void start0(String event, long interval);
private native void stop0();
private native String execute0(String command);
private native void start0(String event, long interval) throws IllegalStateException;
private native void stop0() throws IllegalStateException;
private native String execute0(String command) throws IllegalArgumentException, java.io.IOException;
private native String dumpCollapsed0(int counter);
private native String dumpTraces0(int maxTraces);
private native String dumpFlat0(int maxMethods);
Expand Down
2 changes: 1 addition & 1 deletion src/java/one/profiler/AsyncProfilerMXBean.java
Expand Up @@ -33,7 +33,7 @@ public interface AsyncProfilerMXBean {

long getSamples();

String execute(String command) throws IllegalArgumentException;
String execute(String command) throws IllegalArgumentException, java.io.IOException;

String dumpCollapsed(Counter counter);
String dumpTraces(int maxTraces);
Expand Down
21 changes: 18 additions & 3 deletions src/javaApi.cpp
Expand Up @@ -14,7 +14,10 @@
* limitations under the License.
*/

#include <fstream>
#include <sstream>
#include <errno.h>
#include <string.h>
#include "arguments.h"
#include "profiler.h"

Expand Down Expand Up @@ -64,9 +67,21 @@ Java_one_profiler_AsyncProfiler_execute0(JNIEnv* env, jobject unused, jstring co
return NULL;
}

std::ostringstream out;
Profiler::_instance.runInternal(args, out);
return env->NewStringUTF(out.str().c_str());
if (args._file == NULL) {
std::ostringstream out;
Profiler::_instance.runInternal(args, out);
return env->NewStringUTF(out.str().c_str());
} else {
std::ofstream out(args._file, std::ios::out | std::ios::trunc);
if (out.is_open()) {
Profiler::_instance.runInternal(args, out);
out.close();
return env->NewStringUTF("OK");
} else {
throw_new(env, "java/io/IOException", strerror(errno));
return NULL;
}
}
}

extern "C" JNIEXPORT jstring JNICALL
Expand Down

0 comments on commit aac31eb

Please sign in to comment.