DIRECTORY
ControlMessages USING [InitMessages],
MsgOps USING [DomainsFromFile, Error],
PrinterStatusMessages USING [InitMessages],
PSExecMessages USING [InitMessages],
PSKMessages,
XMessage USING [DestroyMessages, FreeMsgDomainsStorage, Handle, MsgDomains],
XString USING [Equivalent, FromSTRING, ReaderBody];
PSKMessagesImpl:
PROGRAM
IMPORTS
ControlMessages, MsgOps, PrinterStatusMessages, PSExecMessages, XMessage, XString
EXPORTS PSKMessages =
BEGIN
sExecDomain: LONG STRING = "Exec Msgs"L;
sControlDomain: LONG STRING = "Control Msgs"L;
sPrinterStatusDomain: LONG STRING = "Printer Status Msgs"L;
execMsgs, controlMsgs, printerStatusMsgs: XMessage.Handle ¬ NIL;
RegisterMsgs:
PROCEDURE =
BEGIN
messageFileAvailable: BOOLEAN ¬ TRUE;
execDomain: XString.ReaderBody ¬ XString.FromSTRING[sExecDomain];
controlDomain: XString.ReaderBody ¬ XString.FromSTRING[sControlDomain];
printerStatusDomain: XString.ReaderBody ¬ XString.FromSTRING[sPrinterStatusDomain];
allDomains: XMessage.MsgDomains;
allDomains ¬ MsgOps.DomainsFromFile[
file: "PrintServiceConfig.messages"L, clientData:
NIL, proc:
NIL
! MsgOps.Error => {messageFileAvailable ¬ FALSE; CONTINUE}];
IF messageFileAvailable
THEN
BEGIN
FOR i:
CARDINAL
IN [0..
LENGTH[allDomains])
DO
IF XString.Equivalent[@allDomains[i].applicationName, @execDomain]
THEN
execMsgs ¬ allDomains[i].handle;
IF XString.Equivalent[@allDomains[i].applicationName, @controlDomain]
THEN
controlMsgs ¬ allDomains[i].handle;
IF XString.Equivalent[@allDomains[i].applicationName, @printerStatusDomain]
THEN
printerStatusMsgs ¬ allDomains[i].handle;
ENDLOOP;
XMessage.FreeMsgDomainsStorage[allDomains];
END
ELSE
BEGIN
execMsgs ¬ PSExecMessages.InitMessages[];
controlMsgs ¬ ControlMessages.InitMessages[];
printerStatusMsgs ¬ PrinterStatusMessages.InitMessages[];
END;
END; -- of RegisterMsgs
GetHandle:
PUBLIC
PROCEDURE [domain: PSKMessages.Domain]
RETURNS [XMessage.Handle] =
BEGIN
RETURN [
SELECT domain
FROM
exec => execMsgs,
control => controlMsgs,
ENDCASE => printerStatusMsgs];
END; -- of GetHandle
Name:
PUBLIC
PROCEDURE [domain: PSKMessages.Domain]
RETURNS [LONG STRING] =
BEGIN
RETURN [
SELECT domain
FROM
exec => sExecDomain,
control => sControlDomain,
ENDCASE => sPrinterStatusDomain];
END; -- of Name
DestroyMsgs:
PUBLIC
PROCEDURE =
BEGIN
XMessage.DestroyMessages[execMsgs];
XMessage.DestroyMessages[controlMsgs];
XMessage.DestroyMessages[printerStatusMsgs];
END; -- of DestroyMsgs
RegisterMsgs[];
END. -- of PSKMessagesImpl
LOG
6-Nov-85 12:55:58 - Jacks - Created.
13-Dec-85 17:23:50 - Jacks - ExecMessages renamed to PSExecMessages.