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

Android library: move bindToDevice into HostService interface

Refactor the bindToDevice method to be part of the HostService interface, making it a required override for implementers. This removes reliance on the VpnService instance and enforces proper exception handling by default.
Eugene Fryntov 1 год назад
Родитель
Сommit
2b264b8438
1 измененных файлов с 4 добавлено и 5 удалено
  1. 4 5
      MobileLibrary/Android/PsiphonTunnel/PsiphonTunnel.java

+ 4 - 5
MobileLibrary/Android/PsiphonTunnel/PsiphonTunnel.java

@@ -86,8 +86,9 @@ public class PsiphonTunnel {
     public interface HostService extends HostLogger, HostLibraryLoader {
     public interface HostService extends HostLogger, HostLibraryLoader {
         Context getContext();
         Context getContext();
         String getPsiphonConfig();
         String getPsiphonConfig();
-        // Optional getter for the VpnService instance to be used by bindToDevice
-        default VpnService getVpnService() {return null;}
+        default void bindToDevice(long fileDescriptor) throws Exception {
+            throw new IllegalStateException("bindToDevice not implemented");
+        }
 
 
         // Tunnel core notice handler callbacks
         // Tunnel core notice handler callbacks
         default void onAvailableEgressRegions(List<String> regions) {}
         default void onAvailableEgressRegions(List<String> regions) {}
@@ -534,9 +535,7 @@ public class PsiphonTunnel {
     }
     }
 
 
     private String bindToDevice(long fileDescriptor) throws Exception {
     private String bindToDevice(long fileDescriptor) throws Exception {
-        if (!mHostService.getVpnService().protect((int)fileDescriptor)) {
-            throw new Exception("protect socket failed");
-        }
+        mHostService.bindToDevice(fileDescriptor);
         return "";
         return "";
     }
     }