-
Notifications
You must be signed in to change notification settings - Fork 0
/
_load_library.ts
100 lines (91 loc) · 1.79 KB
/
_load_library.ts
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/// <reference lib="deno.unstable" />
const CallSymbol = {
"InitConfig": {
name: "InitConfig",
parameters: [
"buffer",
"i64",
"buffer",
"i64",
],
result: "pointer"
},
"Connect": {
name: "Connect",
parameters: [
// ClientConfig
"pointer",
// addr_octet
"u8",
// addr_octet2
"u8",
// addr_octet3
"u8",
// addr_octet4
"u8",
// port
"u16"
],
result: "pointer",
},
"ClientClose": {
name: "ClientClose",
parameters: [
"pointer"
],
result: "void"
},
"NewSession": {
name: "NewSession",
parameters: [
"pointer"
],
result: "pointer"
},
"SessionRun": {
name: "SessionRun",
parameters: [
"pointer",
// command
"buffer",
// command_len
"i64",
],
result: "void"
},
"SessionClose": {
name: "SessionClose",
parameters: [
"pointer"
],
result: "void"
},
"Free": {
name: "Free",
parameters: ["pointer"],
result: "void"
},
} as const
function _load() {
const os = Deno.build.os;
const MIYUU_SSH_LIB_PATH = Deno.env.get("MIYUU_SSH_LIB_PATH");
let libname = "";
//
if (MIYUU_SSH_LIB_PATH) {
libname = MIYUU_SSH_LIB_PATH;
}
if (os === 'linux') {
libname = "/usr/local/miyuu/libmiyuu_ssh_core.so";
// darwinの指定は後。
// } else if (os === 'darwin') {
// libname = "/Users/katsutoshi/source/miyuu_ssh/out/libmiyuu_ssh_core.dylib"
} else {
throw TypeError("Not supported os");
}
const library = Deno.dlopen(libname, CallSymbol);
return library;
}
export {
type CallSymbol,
_load
}