use of org.gradle.internal.serialize.kryo.KryoBackedDecoder in project gradle by gradle.
the class ModuleMetadataStore method getModuleDescriptor.
public MutableModuleComponentResolveMetadata getModuleDescriptor(ModuleComponentAtRepositoryKey component) {
String filePath = getFilePath(component);
final LocallyAvailableResource resource = metaDataStore.get(filePath);
if (resource != null) {
try {
KryoBackedDecoder decoder = new KryoBackedDecoder(new FileInputStream(resource.getFile()));
try {
return moduleMetadataSerializer.read(decoder, moduleIdentifierFactory, moduleExclusions);
} finally {
decoder.close();
}
} catch (Exception e) {
throw new RuntimeException("Could not load module metadata from " + resource.getDisplayName(), e);
}
}
return null;
}
use of org.gradle.internal.serialize.kryo.KryoBackedDecoder in project gradle by gradle.
the class DefaultScriptCompilationHandler method loadFromDir.
@Override
public <T extends Script, M> CompiledScript<T, M> loadFromDir(ScriptSource source, HashCode sourceHashCode, ClassLoader classLoader, File scriptCacheDir, File metadataCacheDir, CompileOperation<M> transformer, Class<T> scriptBaseClass, ClassLoaderId classLoaderId) {
File metadataFile = new File(metadataCacheDir, METADATA_FILE_NAME);
try {
KryoBackedDecoder decoder = new KryoBackedDecoder(new FileInputStream(metadataFile));
try {
byte flags = decoder.readByte();
boolean isEmpty = (flags & EMPTY_FLAG) != 0;
boolean hasMethods = (flags & HAS_METHODS_FLAG) != 0;
if (isEmpty) {
classLoaderCache.remove(classLoaderId);
}
M data;
if (transformer != null && transformer.getDataSerializer() != null) {
data = transformer.getDataSerializer().read(decoder);
} else {
data = null;
}
return new ClassesDirCompiledScript<T, M>(isEmpty, hasMethods, classLoaderId, scriptBaseClass, scriptCacheDir, classLoader, source, sourceHashCode, data);
} finally {
decoder.close();
}
} catch (Exception e) {
throw new IllegalStateException(String.format("Failed to deserialize script metadata extracted for %s", source.getDisplayName()), e);
}
}
use of org.gradle.internal.serialize.kryo.KryoBackedDecoder in project gradle by gradle.
the class TestResultSerializer method read.
public void read(Action<? super TestClassResult> visitor) {
if (!isHasResults()) {
return;
}
try {
InputStream inputStream = new FileInputStream(resultsFile);
try {
Decoder decoder = new KryoBackedDecoder(inputStream);
int version = decoder.readSmallInt();
if (version != RESULT_VERSION) {
throw new IllegalArgumentException(String.format("Unexpected result file version %d found in %s.", version, resultsFile));
}
readResults(decoder, visitor);
} finally {
inputStream.close();
}
} catch (Exception e) {
throw UncheckedException.throwAsUncheckedException(e);
}
}
use of org.gradle.internal.serialize.kryo.KryoBackedDecoder in project gradle by gradle.
the class DaemonMain method doAction.
@Override
protected void doAction(String[] args, ExecutionListener listener) {
//The first argument is not really used but it is very useful in diagnosing, i.e. running 'jps -m'
if (args.length != 1) {
invalidArgs("Following arguments are required: <gradle-version>");
}
// Read configuration from stdin
List<String> startupOpts;
File gradleHomeDir;
File daemonBaseDir;
int idleTimeoutMs;
int periodicCheckIntervalMs;
String daemonUid;
List<File> additionalClassPath;
KryoBackedDecoder decoder = new KryoBackedDecoder(new EncodedStream.EncodedInput(System.in));
try {
gradleHomeDir = new File(decoder.readString());
daemonBaseDir = new File(decoder.readString());
idleTimeoutMs = decoder.readSmallInt();
periodicCheckIntervalMs = decoder.readSmallInt();
daemonUid = decoder.readString();
int argCount = decoder.readSmallInt();
startupOpts = new ArrayList<String>(argCount);
for (int i = 0; i < argCount; i++) {
startupOpts.add(decoder.readString());
}
int additionalClassPathLength = decoder.readSmallInt();
additionalClassPath = new ArrayList<File>(additionalClassPathLength);
for (int i = 0; i < additionalClassPathLength; i++) {
additionalClassPath.add(new File(decoder.readString()));
}
} catch (EOFException e) {
throw new UncheckedIOException(e);
}
NativeServices.initialize(gradleHomeDir);
DaemonServerConfiguration parameters = new DefaultDaemonServerConfiguration(daemonUid, daemonBaseDir, idleTimeoutMs, periodicCheckIntervalMs, startupOpts);
LoggingServiceRegistry loggingRegistry = LoggingServiceRegistry.newCommandLineProcessLogging();
LoggingManagerInternal loggingManager = loggingRegistry.newInstance(LoggingManagerInternal.class);
DaemonServices daemonServices = new DaemonServices(parameters, loggingRegistry, loggingManager, new DefaultClassPath(additionalClassPath));
File daemonLog = daemonServices.getDaemonLogFile();
// Any logging prior to this point will not end up in the daemon log file.
initialiseLogging(loggingManager, daemonLog);
// Detach the process from the parent terminal/console
ProcessEnvironment processEnvironment = daemonServices.get(ProcessEnvironment.class);
processEnvironment.maybeDetachProcess();
LOGGER.debug("Assuming the daemon was started with following jvm opts: {}", startupOpts);
Daemon daemon = daemonServices.get(Daemon.class);
daemon.start();
try {
DaemonContext daemonContext = daemonServices.get(DaemonContext.class);
Long pid = daemonContext.getPid();
daemonStarted(pid, daemon.getUid(), daemon.getAddress(), daemonLog);
DaemonExpirationStrategy expirationStrategy = daemonServices.get(MasterExpirationStrategy.class);
daemon.stopOnExpiration(expirationStrategy, parameters.getPeriodicCheckIntervalMs());
} finally {
daemon.stop();
}
}
Aggregations