checkpoint
This commit is contained in:
parent
ca6c616d66
commit
a12d8da6d1
@ -332,9 +332,16 @@ change_log_level - change the log level for a tracing layer
|
||||
}
|
||||
|
||||
pub fn update_log(&mut self, log: veilid_core::VeilidStateLog) {
|
||||
self.inner()
|
||||
.ui
|
||||
.add_node_event(format!("{}: {}", log.log_level, log.message));
|
||||
self.inner().ui.add_node_event(format!(
|
||||
"{}: {}{}",
|
||||
log.log_level,
|
||||
log.message,
|
||||
if let Some(bt) = log.backtrace {
|
||||
format!("\nBacktrace:\n{}", bt);
|
||||
} else {
|
||||
"".to_owned()
|
||||
}
|
||||
));
|
||||
}
|
||||
|
||||
pub fn update_shutdown(&mut self) {
|
||||
|
@ -96,6 +96,12 @@ impl<S: Subscriber + for<'a> registry::LookupSpan<'a>> Layer<S> for ApiTracingLa
|
||||
|
||||
let message = format!("{} {}", origin, recorder);
|
||||
|
||||
let backtrace = if log_level <= VeilidLogLevel::Error {
|
||||
Some(std::backtrace::Backtrace)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
(inner.update_callback)(VeilidUpdate::Log(VeilidStateLog { log_level, message }))
|
||||
}
|
||||
}
|
||||
|
@ -219,6 +219,7 @@ impl fmt::Display for VeilidLogLevel {
|
||||
pub struct VeilidStateLog {
|
||||
pub log_level: VeilidLogLevel,
|
||||
pub message: String,
|
||||
pub backtrace: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||||
|
@ -223,6 +223,7 @@ class _MyAppState extends State<MyApp> with UiLoggy {
|
||||
_updateStream = updateStream;
|
||||
_updateProcessor = processUpdates();
|
||||
});
|
||||
await Veilid.instance.attach();
|
||||
},
|
||||
child: const Text('Startup'),
|
||||
),
|
||||
|
@ -1234,7 +1234,8 @@ abstract class VeilidUpdate {
|
||||
{
|
||||
return VeilidUpdateLog(
|
||||
logLevel: veilidLogLevelFromJson(json["log_level"]),
|
||||
message: json["message"]);
|
||||
message: json["message"],
|
||||
backtrace: json["backtrace"]);
|
||||
}
|
||||
case "Attachment":
|
||||
{
|
||||
@ -1258,10 +1259,12 @@ abstract class VeilidUpdate {
|
||||
class VeilidUpdateLog implements VeilidUpdate {
|
||||
final VeilidLogLevel logLevel;
|
||||
final String message;
|
||||
final String? backtrace;
|
||||
//
|
||||
VeilidUpdateLog({
|
||||
required this.logLevel,
|
||||
required this.message,
|
||||
required this.backtrace,
|
||||
});
|
||||
|
||||
@override
|
||||
@ -1270,6 +1273,7 @@ class VeilidUpdateLog implements VeilidUpdate {
|
||||
'kind': "Log",
|
||||
'log_level': logLevel.json,
|
||||
'message': message,
|
||||
'backtrace': backtrace
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -1323,8 +1327,8 @@ class VeilidStateAttachment {
|
||||
|
||||
class VeilidStateNetwork {
|
||||
final bool started;
|
||||
final int bpsDown;
|
||||
final int bpsUp;
|
||||
final BigInt bpsDown;
|
||||
final BigInt bpsUp;
|
||||
final List<PeerTableData> peers;
|
||||
|
||||
VeilidStateNetwork(
|
||||
@ -1335,15 +1339,15 @@ class VeilidStateNetwork {
|
||||
|
||||
VeilidStateNetwork.fromJson(Map<String, dynamic> json)
|
||||
: started = json['started'],
|
||||
bpsDown = json['bps_down'],
|
||||
bpsUp = json['bps_up'],
|
||||
bpsDown = BigInt.parse(json['bps_down']),
|
||||
bpsUp = BigInt.parse(json['bps_up']),
|
||||
peers = json['peers'].map((j) => PeerTableData.fromJson(j)).toList();
|
||||
|
||||
Map<String, dynamic> get json {
|
||||
return {
|
||||
'started': started,
|
||||
'bps_down': bpsDown,
|
||||
'bps_up': bpsUp,
|
||||
'bps_down': bpsDown.toString(),
|
||||
'bps_up': bpsUp.toString(),
|
||||
'peers': peers.map((p) => p.json).toList(),
|
||||
};
|
||||
}
|
||||
@ -1563,6 +1567,8 @@ abstract class Veilid {
|
||||
void changeLogLevel(String layer, VeilidConfigLogLevel logLevel);
|
||||
Stream<VeilidUpdate> startupVeilidCore(VeilidConfig config);
|
||||
Future<VeilidState> getVeilidState();
|
||||
Future<void> attach();
|
||||
Future<void> detach();
|
||||
Future<void> shutdownVeilidCore();
|
||||
Future<String> debug(String command);
|
||||
String veilidVersionString();
|
||||
|
@ -41,6 +41,12 @@ typedef _StartupVeilidCoreDart = void Function(int, Pointer<Utf8>);
|
||||
// fn get_veilid_state(port: i64)
|
||||
typedef _GetVeilidStateC = Void Function(Int64);
|
||||
typedef _GetVeilidStateDart = void Function(int);
|
||||
// fn attach(port: i64)
|
||||
typedef _AttachC = Void Function(Int64);
|
||||
typedef _AttachDart = void Function(int);
|
||||
// fn detach(port: i64)
|
||||
typedef _DetachC = Void Function(Int64);
|
||||
typedef _DetachDart = void Function(int);
|
||||
// fn debug(port: i64, log_level: FfiStr)
|
||||
typedef _DebugC = Void Function(Int64, Pointer<Utf8>);
|
||||
typedef _DebugDart = void Function(int, Pointer<Utf8>);
|
||||
@ -249,6 +255,8 @@ class VeilidFFI implements Veilid {
|
||||
final _ChangeLogLevelDart _changeLogLevel;
|
||||
final _StartupVeilidCoreDart _startupVeilidCore;
|
||||
final _GetVeilidStateDart _getVeilidState;
|
||||
final _AttachDart _attach;
|
||||
final _DetachDart _detach;
|
||||
final _ShutdownVeilidCoreDart _shutdownVeilidCore;
|
||||
final _DebugDart _debug;
|
||||
final _VeilidVersionStringDart _veilidVersionString;
|
||||
@ -269,6 +277,8 @@ class VeilidFFI implements Veilid {
|
||||
_getVeilidState =
|
||||
dylib.lookupFunction<_GetVeilidStateC, _GetVeilidStateDart>(
|
||||
'get_veilid_state'),
|
||||
_attach = dylib.lookupFunction<_AttachC, _AttachDart>('attach'),
|
||||
_detach = dylib.lookupFunction<_DetachC, _DetachDart>('detach'),
|
||||
_shutdownVeilidCore =
|
||||
dylib.lookupFunction<_ShutdownVeilidCoreC, _ShutdownVeilidCoreDart>(
|
||||
'shutdown_veilid_core'),
|
||||
@ -327,6 +337,22 @@ class VeilidFFI implements Veilid {
|
||||
return processFutureJson(VeilidState.fromJson, recvPort.first);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> attach() async {
|
||||
final recvPort = ReceivePort("attach");
|
||||
final sendPort = recvPort.sendPort;
|
||||
_attach(sendPort.nativePort);
|
||||
return processFutureVoid(recvPort.first);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> detach() async {
|
||||
final recvPort = ReceivePort("detach");
|
||||
final sendPort = recvPort.sendPort;
|
||||
_detach(sendPort.nativePort);
|
||||
return processFutureVoid(recvPort.first);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> shutdownVeilidCore() async {
|
||||
final recvPort = ReceivePort("shutdown_veilid_core");
|
||||
|
@ -60,6 +60,16 @@ class VeilidJS implements Veilid {
|
||||
js_util.callMethod(wasm, "get_veilid_state", []))));
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> attach() async {
|
||||
return _wrapApiPromise(js_util.callMethod(wasm, "attach", []));
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> detach() async {
|
||||
return _wrapApiPromise(js_util.callMethod(wasm, "detach", []));
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> shutdownVeilidCore() {
|
||||
return _wrapApiPromise(
|
||||
|
@ -302,6 +302,24 @@ pub extern "C" fn get_veilid_state(port: i64) {
|
||||
});
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn attach(port: i64) {
|
||||
DartIsolateWrapper::new(port).spawn_result_json(async move {
|
||||
let veilid_api = get_veilid_api().await?;
|
||||
veilid_api.attach().await?;
|
||||
APIRESULT_VOID
|
||||
});
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn detach(port: i64) {
|
||||
DartIsolateWrapper::new(port).spawn_result_json(async move {
|
||||
let veilid_api = get_veilid_api().await?;
|
||||
veilid_api.detach().await?;
|
||||
APIRESULT_VOID
|
||||
});
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[instrument]
|
||||
pub extern "C" fn shutdown_veilid_core(port: i64) {
|
||||
|
@ -232,6 +232,24 @@ pub fn get_veilid_state() -> Promise {
|
||||
})
|
||||
}
|
||||
|
||||
#[wasm_bindgen()]
|
||||
pub fn attach() -> Promise {
|
||||
wrap_api_future(async move {
|
||||
let veilid_api = get_veilid_api()?;
|
||||
veilid_api.attach().await?;
|
||||
APIRESULT_UNDEFINED
|
||||
})
|
||||
}
|
||||
|
||||
#[wasm_bindgen()]
|
||||
pub fn detach() -> Promise {
|
||||
wrap_api_future(async move {
|
||||
let veilid_api = get_veilid_api()?;
|
||||
veilid_api.detach().await?;
|
||||
APIRESULT_UNDEFINED
|
||||
})
|
||||
}
|
||||
|
||||
#[wasm_bindgen()]
|
||||
pub fn shutdown_veilid_core() -> Promise {
|
||||
wrap_api_future(async move {
|
||||
|
Loading…
Reference in New Issue
Block a user