1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
use std::io;
use teaclave_types::StagedFiles;
use teaclave_types::TeaclaveRuntime;
pub struct DefaultRuntime {
input_files: StagedFiles,
output_files: StagedFiles,
}
impl DefaultRuntime {
pub fn new(input_files: StagedFiles, output_files: StagedFiles) -> DefaultRuntime {
DefaultRuntime {
input_files,
output_files,
}
}
}
impl TeaclaveRuntime for DefaultRuntime {
fn open_input(&self, identifier: &str) -> anyhow::Result<Box<dyn io::Read>> {
let file_info = self
.input_files
.get(identifier)
.ok_or_else(|| anyhow::anyhow!("Invalid input file identifier."))?;
log::debug!("open_input: {:?}", file_info.path);
let readable = file_info.create_readable_io()?;
Ok(readable)
}
fn create_output(&self, identifier: &str) -> anyhow::Result<Box<dyn io::Write>> {
let file_info = self
.output_files
.get(identifier)
.ok_or_else(|| anyhow::anyhow!("Invalid output file identifier"))?;
log::debug!("create_output: {:?}", file_info.path);
let writable = file_info.create_writable_io()?;
Ok(writable)
}
}