add sockets library, use new type_error function from sockets system calls

This commit is contained in:
Mark Thom
2020-05-05 22:57:06 -06:00
parent 414acda9e0
commit fe05082ddc
2 changed files with 74 additions and 30 deletions

View File

@@ -4112,55 +4112,39 @@ impl MachineState {
}
culprit => {
let culprit = culprit.as_addr(h);
let stub = MachineError::functor_stub(
clause_name!("socket_server_close"),
1,
);
let err = MachineError::type_error(
self.heap.h(),
return Err(self.type_error(
ValidType::TcpListener,
culprit,
);
return Err(self.error_form(err, stub));
clause_name!("socket_server_accept"),
4,
));
}
}
}
culprit => {
let stub = MachineError::functor_stub(
clause_name!("socket_server_accept"),
4,
);
let err = MachineError::type_error(
self.heap.h(),
return Err(self.type_error(
ValidType::TcpListener,
culprit,
);
return Err(self.error_form(err, stub));
clause_name!("socket_server_accept"),
4,
));
}
}
}
&SystemClauseType::SocketServerClose => {
match self.store(self.deref(self[temp_v!(1)])) {
Addr::TcpListener(h) => {
self.heap[h] = HeapCellValue::Addr(Addr::EmptyList);
let closed_tcp_listener = clause_name!("$closed_tcp_listener");
self.heap[h] = HeapCellValue::Atom(closed_tcp_listener, None);
}
culprit => {
let stub = MachineError::functor_stub(
clause_name!("socket_server_close"),
1,
);
let err = MachineError::type_error(
self.heap.h(),
return Err(self.type_error(
ValidType::TcpListener,
culprit,
);
return Err(self.error_form(err, stub));
clause_name!("socket_server_close"),
1,
));
}
}
}