1
0
Fork 0
firefox/devtools/shared/protocol/Actor/generateActorSpec.js
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

57 lines
1.7 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
var { Request } = require("resource://devtools/shared/protocol/Request.js");
const { Response } = require("resource://devtools/shared/protocol/Response.js");
var {
types,
registeredTypes,
} = require("resource://devtools/shared/protocol/types.js");
/**
* Generates an actor specification from an actor description.
*/
var generateActorSpec = function (actorDesc) {
const actorSpec = {
typeName: actorDesc.typeName,
methods: [],
};
// Find additional method specifications
if (actorDesc.methods) {
for (const name in actorDesc.methods) {
const methodSpec = actorDesc.methods[name];
const spec = {};
spec.name = methodSpec.name || name;
spec.request = new Request(spec.name, methodSpec.request || undefined);
spec.response = new Response(methodSpec.response || undefined);
spec.release = methodSpec.release;
spec.oneway = methodSpec.oneway;
actorSpec.methods.push(spec);
}
}
// Find event specifications
if (actorDesc.events) {
actorSpec.events = new Map();
for (const name in actorDesc.events) {
const eventRequest = actorDesc.events[name];
Object.freeze(eventRequest);
actorSpec.events.set(name, new Request(name, eventRequest));
}
}
if (!registeredTypes.has(actorSpec.typeName)) {
types.addActorType(actorSpec.typeName);
}
registeredTypes.get(actorSpec.typeName).actorSpec = actorSpec;
return actorSpec;
};
exports.generateActorSpec = generateActorSpec;