public List getHeaderFiles()

in sdk/enclave/src/main/java/org/apache/teaclave/javasdk/enclave/c/EnclaveEnvironment.java [54:79]


        public List<String> getHeaderFiles() {
            // Register additional resolver to resolve header file from jar file as resource stream
            ProjectHeaderFile.HeaderResolversRegistry.registerAdditionalResolver((projectName, headerFile) -> {
                try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
                    InputStream headerInputStream = EnclaveDirectives.class.getClassLoader().getResourceAsStream(HEADER_FILE);
                    if (headerInputStream == null) {
                        VMError.shouldNotReachHere("Can't find " + HEADER_FILE + " from classpath as resource");
                    }
                    headerInputStream.transferTo(os);
                    Path headerPath = ImageSingletons.lookup(TemporaryBuildDirectoryProvider.class).getTemporaryBuildDirectory().resolve(HEADER_FILE);
                    Path nativeDir = headerPath.getParent();
                    if (Files.notExists(nativeDir)) {
                        Files.createDirectory(nativeDir);
                    }
                    File tmpHeaderFile = Files.createFile(headerPath).toFile();
                    try (FileOutputStream fos = new FileOutputStream(tmpHeaderFile)) {
                        fos.write(os.toByteArray());
                        return new ProjectHeaderFile.HeaderSearchResult(Optional.of("\"" + tmpHeaderFile.getAbsolutePath() + "\""), tmpHeaderFile.getAbsolutePath());
                    }
                } catch (IOException e) {
                    VMError.shouldNotReachHere(e);
                }
                return null;
            });
            return Collections.singletonList(ProjectHeaderFile.resolve("enclave", HEADER_FILE));
        }