mirror of
https://github.com/HeyPuter/puter
synced 2024-11-15 06:15:47 +00:00
dev: move driver arg types to a registry
This commit is contained in:
parent
af3180a57f
commit
6213806aba
@ -43,18 +43,26 @@ class DriverService extends BaseService {
|
|||||||
const svc_registry = this.services.get('registry');
|
const svc_registry = this.services.get('registry');
|
||||||
svc_registry.register_collection('interfaces');
|
svc_registry.register_collection('interfaces');
|
||||||
svc_registry.register_collection('drivers');
|
svc_registry.register_collection('drivers');
|
||||||
|
svc_registry.register_collection('types');
|
||||||
}
|
}
|
||||||
async ['__on_registry.entries'] () {
|
async ['__on_registry.entries'] () {
|
||||||
const services = this.services;
|
const services = this.services;
|
||||||
const svc_registry = services.get('registry');
|
const svc_registry = services.get('registry');
|
||||||
const col_interfaces = svc_registry.get('interfaces');
|
const col_interfaces = svc_registry.get('interfaces');
|
||||||
const col_drivers = svc_registry.get('drivers');
|
const col_drivers = svc_registry.get('drivers');
|
||||||
|
const col_types = svc_registry.get('types');
|
||||||
{
|
{
|
||||||
const default_interfaces = require('./interfaces');
|
const default_interfaces = require('./interfaces');
|
||||||
for ( const k in default_interfaces ) {
|
for ( const k in default_interfaces ) {
|
||||||
col_interfaces.set(k, default_interfaces[k]);
|
col_interfaces.set(k, default_interfaces[k]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
const types = this.modules.types;
|
||||||
|
for ( const k in types ) {
|
||||||
|
col_types.set(k, types[k]);
|
||||||
|
}
|
||||||
|
}
|
||||||
await services.emit('driver.register.interfaces',
|
await services.emit('driver.register.interfaces',
|
||||||
{ col_interfaces });
|
{ col_interfaces });
|
||||||
await services.emit('driver.register.drivers',
|
await services.emit('driver.register.drivers',
|
||||||
@ -387,6 +395,7 @@ class DriverService extends BaseService {
|
|||||||
async _process_args (interface_name, method_name, args) {
|
async _process_args (interface_name, method_name, args) {
|
||||||
const svc_registry = this.services.get('registry');
|
const svc_registry = this.services.get('registry');
|
||||||
const c_interfaces = svc_registry.get('interfaces');
|
const c_interfaces = svc_registry.get('interfaces');
|
||||||
|
const c_types = svc_registry.get('types');
|
||||||
|
|
||||||
// Note: 'interface' is a strict mode reserved word.
|
// Note: 'interface' is a strict mode reserved word.
|
||||||
const interface_ = c_interfaces.get(interface_name);
|
const interface_ = c_interfaces.get(interface_name);
|
||||||
@ -399,9 +408,10 @@ class DriverService extends BaseService {
|
|||||||
if ( ! method ) {
|
if ( ! method ) {
|
||||||
throw APIError.create('method_not_found', null, { interface_name, method_name });
|
throw APIError.create('method_not_found', null, { interface_name, method_name });
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( const [arg_name, arg_descriptor] of Object.entries(method.parameters) ) {
|
for ( const [arg_name, arg_descriptor] of Object.entries(method.parameters) ) {
|
||||||
const arg_value = args[arg_name];
|
const arg_value = args[arg_name];
|
||||||
const arg_behaviour = this.modules.types[arg_descriptor.type];
|
const arg_behaviour = c_types.get(arg_descriptor.type);
|
||||||
|
|
||||||
// TODO: eventually put this in arg behaviour base class.
|
// TODO: eventually put this in arg behaviour base class.
|
||||||
// There's a particular way I want to do this that involves
|
// There's a particular way I want to do this that involves
|
||||||
|
Loading…
Reference in New Issue
Block a user