Просмотр исходного кода

Update mobile library glue code with Go runtime profiling support

Amir Khan 7 лет назад
Родитель
Сommit
9ffc7b6179

+ 7 - 0
MobileLibrary/Android/PsiphonTunnel/PsiphonTunnel.java

@@ -194,6 +194,13 @@ public class PsiphonTunnel extends Psi.PsiphonProvider.Stub {
         mClientPlatformSuffix.set(suffix);
     }
 
+    // Writes Go runtime profile information to a set of files in the specifiec output directory.
+    // cpuSampleDurationSeconds and blockSampleDurationSeconds determines how to long to wait and
+    // sample profiles that require active sampling. When set to 0, these profiles are skipped.
+    public void writeRuntimeProfiles(String outputDirectory, int cpuSampleDurationSeconnds, int blockSampleDurationSeconds) {
+        Psi.WriteRuntimeProfiles(outputDirectory, cpuSampleDurationSeconnds, blockSampleDurationSeconds);
+    }
+
     //----------------------------------------------------------------------------------------------
     // VPN Routing
     //----------------------------------------------------------------------------------------------

+ 10 - 0
MobileLibrary/iOS/PsiphonTunnel/PsiphonTunnel/PsiphonTunnel.h

@@ -425,4 +425,14 @@ Swift: @code func onInternetReachabilityChanged(_ currentReachability: Reachabil
  */
 + (NSString * _Nonnull)getBuildInfo;
 
+#pragma mark - Profiling utitlities
+
+/*!
+ Writes Go runtime profile information to a set of files in the specifiec output directory.
+ @param cpuSampleDurationSeconds determines how to long to wait and sample profiles that require active sampling. When set to 0, these profiles are skipped.
+ @param blockSampleDurationSeconds determines how to long to wait and sample profiles that require active sampling. When set to 0, these profiles are skipped.
+ Swift: @code func writeRuntimeProfilesTo(_ outputDirectory: String, withCPUSampleDurationSeconds cpuSampleDurationSecond: Int, withBlockSampleDurationSeconds blockSampleDurationSeconds: Int) @endcode
+ */
+- (void)writeRuntimeProfilesTo:(NSString * _Nonnull)outputDirectory withCPUSampleDurationSeconds:(int)cpuSampleDurationSeconds withBlockSampleDurationSeconds:(int)blockSampleDurationSeconds;
+
  @end

+ 6 - 0
MobileLibrary/iOS/PsiphonTunnel/PsiphonTunnel/PsiphonTunnel.m

@@ -429,6 +429,12 @@
     return GoPsiGetBuildInfo();
 }
 
+#pragma mark - Profiling utilities
+
+- (void)writeRuntimeProfilesTo:(NSString * _Nonnull)outputDirectory withCPUSampleDurationSeconds:(int)cpuSampleDurationSeconds withBlockSampleDurationSeconds:(int)blockSampleDurationSeconds {
+    GoPsiWriteRuntimeProfiles(outputDirectory, cpuSampleDurationSeconds, blockSampleDurationSeconds);
+}
+
 #pragma mark - PsiphonTunnel logic implementation methods (private)
 
 /*!