wire in-process dispatcher — no daemon socket needed
InProcessClient dispatches IPC requests directly to handlers in the same process, bypassing the unix socket entirely. All subsystem registries (pane, files, editor, git, pql) are created in the Flutter app's boot sequence and registered on a DaemonDispatcher. Events bridge to the kernel EventBus via _BusEventSink. The app no longer needs `clide --daemon` running. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import 'package:clide/clide.dart';
|
||||
import 'package:clide/kernel/src/ipc/client.dart';
|
||||
import 'package:clide/kernel/src/events/bus.dart';
|
||||
import 'package:clide/kernel/src/log.dart';
|
||||
import 'package:clide/src/daemon/dispatcher.dart';
|
||||
|
||||
class InProcessClient extends DaemonClient {
|
||||
InProcessClient({
|
||||
required Logger log,
|
||||
required EventBus events,
|
||||
required this.dispatcher,
|
||||
}) : super(socketPath: '', log: log, events: events);
|
||||
|
||||
final DaemonDispatcher dispatcher;
|
||||
int _nextReqId = 0;
|
||||
|
||||
@override
|
||||
bool get isConnected => true;
|
||||
|
||||
@override
|
||||
Future<void> start() async {}
|
||||
|
||||
@override
|
||||
Future<void> stop() async {}
|
||||
|
||||
@override
|
||||
Future<IpcResponse> request(String cmd, {Map<String, Object?> args = const {}}) {
|
||||
final id = '${_nextReqId++}';
|
||||
final req = IpcRequest(id: id, cmd: cmd, args: args);
|
||||
return dispatcher.dispatch(req);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user