new(all): #327 OPEN AS web automation.
This commit is contained in:
parent
4d30d5988c
commit
bc85f714ca
2 changed files with 34 additions and 27 deletions
|
@ -237,7 +237,7 @@ export class GBVMService extends GBService {
|
||||||
|
|
||||||
${code}
|
${code}
|
||||||
|
|
||||||
await wa.closeHandles({pid: pid});
|
await wa.getCloseHandles({pid: pid});
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
|
|
@ -114,14 +114,16 @@ export class WebAutomationServices {
|
||||||
this.debugWeb = this.min.core.getParam<boolean>(this.min.instance, 'Debug Web Automation', false);
|
this.debugWeb = this.min.core.getParam<boolean>(this.min.instance, 'Debug Web Automation', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async closeHandles({pid}){
|
public async getCloseHandles({ pid }) {
|
||||||
|
const { min, user } = await DialogKeywords.getProcessInfo(pid);
|
||||||
// Releases previous allocated OPEN semaphores.
|
// Releases previous allocated OPEN semaphores.
|
||||||
|
|
||||||
let keys = Object.keys(GBServer.globals.webSessions);
|
let keys = Object.keys(GBServer.globals.webSessions);
|
||||||
for (let i = 0; i < keys.length; i++) {
|
for (let i = 0; i < keys.length; i++) {
|
||||||
const session = GBServer.globals.webSessions[keys[i]];
|
const session = GBServer.globals.webSessions[keys[i]];
|
||||||
if (session.pid === pid) {
|
if (session.activePid === pid) {
|
||||||
session.semaphore.release();
|
session.semaphore.release();
|
||||||
|
GBLogEx.info(min, `Release for PID: ${pid} done.`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,9 +156,12 @@ export class WebAutomationServices {
|
||||||
|
|
||||||
let page;
|
let page;
|
||||||
if (session) {
|
if (session) {
|
||||||
const [value, release] = await session.semaphore.acquire();
|
GBLogEx.info(min, `Acquiring (1) for PID: ${pid}...`);
|
||||||
|
const release = await session.semaphore.acquire();
|
||||||
|
GBLogEx.info(min, `Acquire (1) for PID: ${pid} done.`);
|
||||||
try {
|
try {
|
||||||
GBServer.globals.webSessions[handle].release = release;
|
session.activePid = pid;
|
||||||
|
session.release = release;
|
||||||
page = session.page;
|
page = session.page;
|
||||||
} catch {
|
} catch {
|
||||||
release();
|
release();
|
||||||
|
@ -177,26 +182,28 @@ export class WebAutomationServices {
|
||||||
// There is no session yet,
|
// There is no session yet,
|
||||||
|
|
||||||
if (!session && sessionKind === 'AS') {
|
if (!session && sessionKind === 'AS') {
|
||||||
|
|
||||||
// A new web session is being created.
|
// A new web session is being created.
|
||||||
|
|
||||||
handle = WebAutomationServices.cyrb53(this.min.botId + url);
|
handle = WebAutomationServices.cyrb53(this.min.botId + url);
|
||||||
GBServer.globals.webSessions[handle] = session = {};
|
GBServer.globals.webSessions[handle] = session = {};
|
||||||
GBServer.globals.webSessions[handle].sessionName = sessionName;
|
session.sessionName = sessionName;
|
||||||
GBServer.globals.webSessions[handle].pid = pid;
|
|
||||||
GBServer.globals.webSessions[handle].page = page;
|
session.page = page;
|
||||||
GBServer.globals.webSessions[handle].browser = browser;
|
session.browser = browser;
|
||||||
GBServer.globals.webSessions[handle].semaphore = withTimeout(
|
session.semaphore = new Mutex();
|
||||||
new Semaphore(5),
|
GBLogEx.info(min, `Acquiring (2) for PID: ${pid}...`);
|
||||||
60 * 1000,
|
const release = await session.semaphore.acquire();
|
||||||
new Error('Error waiting for OPEN keyword.')
|
GBLogEx.info(min, `Acquire (2) for PID: ${pid} done.`);
|
||||||
);
|
session.release = release;
|
||||||
|
session.activePid = pid;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// WITH is only valid in a previously defined session.
|
// WITH is only valid in a previously defined session.
|
||||||
|
|
||||||
if (!session && sessionKind == 'WITH') {
|
if (!session && sessionKind == 'WITH') {
|
||||||
GBLogEx.error(min, `NULL session for OPEN WITH #${sessionName}.`);
|
const error = `NULL session for OPEN WITH #${sessionName}.`;
|
||||||
|
GBLogEx.error(min, error);
|
||||||
}
|
}
|
||||||
|
|
||||||
await page.goto(url);
|
await page.goto(url);
|
||||||
|
|
Loading…
Add table
Reference in a new issue