Skip to content

Commit ec5edf8

Browse files
ascjonesRobbepop
authored andcommitted
[core] extract call method (#172)
1 parent 54c03e5 commit ec5edf8

File tree

1 file changed

+28
-26
lines changed

1 file changed

+28
-26
lines changed

core/src/env/srml/srml_only/impls.rs

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,32 @@ macro_rules! impl_getters_for_srml_env {
114114
}
115115
}
116116

117+
impl<T> SrmlEnv<T>
118+
where
119+
T: EnvTypes,
120+
{
121+
fn call(
122+
callee: <Self as EnvTypes>::AccountId,
123+
gas: u64,
124+
value: <Self as EnvTypes>::Balance,
125+
input_data: &[u8],
126+
) -> u32 {
127+
let callee = callee.encode();
128+
let value = value.encode();
129+
unsafe {
130+
sys::ext_call(
131+
callee.as_ptr() as u32,
132+
callee.len() as u32,
133+
gas,
134+
value.as_ptr() as u32,
135+
value.len() as u32,
136+
input_data.as_ptr() as u32,
137+
input_data.len() as u32,
138+
)
139+
}
140+
}
141+
}
142+
117143
impl<T> Env for SrmlEnv<T>
118144
where
119145
T: EnvTypes,
@@ -171,19 +197,7 @@ where
171197
value: <Self as EnvTypes>::Balance,
172198
input_data: &[u8],
173199
) -> Result<(), CallError> {
174-
let callee = callee.encode();
175-
let value = value.encode();
176-
let result = unsafe {
177-
sys::ext_call(
178-
callee.as_ptr() as u32,
179-
callee.len() as u32,
180-
gas,
181-
value.as_ptr() as u32,
182-
value.len() as u32,
183-
input_data.as_ptr() as u32,
184-
input_data.len() as u32,
185-
)
186-
};
200+
let result = Self::call(callee, gas, value, input_data);
187201
if result != 0 {
188202
return Err(CallError)
189203
}
@@ -196,19 +210,7 @@ where
196210
value: <Self as EnvTypes>::Balance,
197211
input_data: &[u8],
198212
) -> Result<U, CallError> {
199-
let callee = callee.encode();
200-
let value = value.encode();
201-
let result = unsafe {
202-
sys::ext_call(
203-
callee.as_ptr() as u32,
204-
callee.len() as u32,
205-
gas,
206-
value.as_ptr() as u32,
207-
value.len() as u32,
208-
input_data.as_ptr() as u32,
209-
input_data.len() as u32,
210-
)
211-
};
213+
let result = Self::call(callee, gas, value, input_data);
212214
if result != 0 {
213215
return Err(CallError)
214216
}

0 commit comments

Comments
 (0)