package com.lody.virtual.client.ipc;
import android.os.IBinder;
import android.os.RemoteException;
import com.lody.virtual.client.env.VirtualRuntime;
import com.lody.virtual.server.IVirtualStorageService;
/**
* @author Lody
*/
public class VirtualStorageManager {
private static final VirtualStorageManager sInstance = new VirtualStorageManager();
private IVirtualStorageService mRemote;
public static VirtualStorageManager get() {
return sInstance;
}
public IVirtualStorageService getRemote() {
if (mRemote == null) {
synchronized (this) {
if (mRemote == null) {
Object remote = getRemoteInterface();
mRemote = LocalProxyUtils.genProxy(IVirtualStorageService.class, remote);
}
}
}
return mRemote;
}
private Object getRemoteInterface() {
final IBinder binder = ServiceManagerNative.getService(ServiceManagerNative.VS);
return IVirtualStorageService.Stub.asInterface(binder);
}
public void setVirtualStorage(String packageName, int userId, String vsPath) {
try {
getRemote().setVirtualStorage(packageName, userId, vsPath);
} catch (RemoteException e) {
VirtualRuntime.crash(e);
}
}
public String getVirtualStorage(String packageName, int userId) {
try {
return getRemote().getVirtualStorage(packageName, userId);
} catch (RemoteException e) {
return VirtualRuntime.crash(e);
}
}
public void setVirtualStorageState(String packageName, int userId, boolean enable) {
try {
getRemote().setVirtualStorageState(packageName, userId, enable);
} catch (RemoteException e) {
VirtualRuntime.crash(e);
}
}
public boolean isVirtualStorageEnable(String packageName, int userId) {
try {
return getRemote().isVirtualStorageEnable(packageName, userId);
} catch (RemoteException e) {
return VirtualRuntime.crash(e);
}
}
}