|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T q
Length: 11238 (0x2be6) Types: TextFile Names: »qmgr.ry«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« └─⟦e5a54fb17⟧ └─⟦this⟧ »pp-5.0/Lib/qmgr/qmgr.ry«
-- qmgr.ry - Qmgr operation definitions -- @(#) $Header: /cs/research/pp/hubris/pp-beta/Lib/qmgr/RCS/qmgr.ry,v 5.0 90/09/20 16:22:38 pp Exp Locker: pp $ -- -- $Log: qmgr.ry,v $ -- Revision 5.0 90/09/20 16:22:38 pp -- rcsforce : 5.0 public release -- -- Qmgr DEFINITIONS ::= BEGIN IMPORTS MPDUIdentifier FROM QmgrP1; -- EXPORTS everything -- PORTS qmgr-use OBJECT PORTS { newmessage[S], readmsginfo[S], msginfo[C], channelinitialise[C], processmessage, channelbegin[S], readqueue[C], channelread[S], channelinfo[C], channelcontrol[S], mtaread[S], mtainfo[C], mtacontrol[S], readchannelmtamessage[S] } ::= id-pt-qmgr-use activeChannel OBJECT PORTS { channelinitialise, processmessage [S] } ::= id-pt-activeChannel passiveChannel OBJECT PORTS { processmessage[S], channelbegin[C] } ::= id-pt-passiveChannel submitProcess OBJECT PORTS { newmessage[C] } ::= id-pt-submitProcess queueReadProcess OBJECT PORTS { readqueue[S] } ::= id-pt-queueReadProcess managementUA OBJECT PORTS { processmessage[C], readmsginfo[C], msginfo[S], channelread[C], channelinfo[S], channelcontrol[C], mtaread[C], mtainfo[S], mtacontrol[C], readchannelmtamessage[C] } ::= id-pt-managementUA -- OPERATIONS -- new message arrived -- Submit -> QMGR newmessage OPERATION ARGUMENT MsgStruct RESULT NULL ERRORS { congested, protocol } ::= 0 -- read a message -- Console -> QMGR -- QMGR -> QMGR readmsginfo OPERATION ARGUMENT ReadMessageArgument RESULT MsgList ERRORS { congested, protocol } LINKED {msginfo} ::= 1 -- QMGR -> Console -- Incremental update msginfo OPERATION ARGUMENT MsgList ::= 10 -- processes a message -- QMGR -> Channel processmessage OPERATION ARGUMENT ProcMsg RESULT DeliveryStatus ERRORS { congested, protocol } ::= 2 -- start up a channel -- Channel -> QMGR channelbegin OPERATION ARGUMENT FilterList -- type of message requested RESULT FilterList -- what you are going to get ERRORS { congested, protocol } ::= 3 -- read the entire queue -- QMGR -> Q reader readqueue OPERATION ARGUMENT NULL RESULT MsgList ERRORS { congested, protocol } ::= 4 -- read a channel -- Console -> QMGR -- get info at channel level channelread OPERATION ARGUMENT UTCTime RESULT ChannelReadResult ERRORS { congested, protocol } LINKED {chaninfo} ::= 5 -- QMGR -> Console -- Incremental update chaninfo OPERATION ARGUMENT ChannelReadResult -- info on ALL channels ::= 11 -- control a channels behaviour -- Console -> QMGR channelcontrol OPERATION ARGUMENT ChannelControl RESULT PrioritisedChannelList ERRORS { congested, protocol, noSuchChannel, illegalOperation, authenticationFailure} ::= 6 -- read about a mta -- Console -> QMGR mtaread OPERATION ARGUMENT MtaRead RESULT PrioritisedMtaList ERRORS { congested, protocol, noSuchChannel } LINKED {mtainfo} ::= 7 -- QMGR -> Console -- Incremental update mtainfo OPERATION ARGUMENT PrioritisedMtaList ::= 12 -- control a mta -- Console -> QMGR mtacontrol OPERATION ARGUMENT MtaControl RESULT MtaInfo ERRORS { congested, noSuchChannel, mtaNotInQueue, authenticationFailure} ::= 8 -- control a message -- Console -> QMGR msgcontrol OPERATION ARGUMENT MsgControl RESULT NULL ERRORS { congested, protocol, noSuchChannel, mtaNotInQueue, authenticationFailure} ::= 13 -- QMGR -> Channel (process) channelInitialise OPERATION ARGUMENT Channel RESULT NULL ERRORS { congested, protocol, noSuchChannel} ::= 9 qmgrControl OPERATION ARGUMENT QMGRControl RESULT NULL -- always works ERRORS { congested, protocol, authenticationFailure} ::= 14 readChannelMtaMessage OPERATION ARGUMENT MsgRead RESULT MsgList ERRORS { congested, protocol, noSuchChannel, mtaNotInQueue } ::= 15 -- ERRORS -- congestion at the responder congested ERROR ::= 0 -- unknown channel noSuchChannel ERROR ::= 1 -- unknown operation illegalOperation ERROR ::= 2 -- operation on mta makes no sense mtaNotInQueue ERROR ::= 3 -- error in the protocol protocol ERROR ::= 4 authenticationFailure ERROR ::= 5 -- Bind Arguments BindArgument ::= CHOICE { -- structure used in association request noAuthentication [0] NULL, weakAuthentication [1] WeakAuthentication } WeakAuthentication ::= SEQUENCE { username [0] IA5String, passwd [1] IA5String OPTIONAL } BindResult ::= SEQUENCE { result[0] ENUMERATED { -- result from the association request acceptedLimitedAccess(0), -- accepted limited access acceptedFullAccess(1) -- accepted full access }, information[1] IA5String OPTIONAL, version[2] IA5String OPTIONAL } BindError ::= SEQUENCE { reason[0] ENUMERATED { badCredentials(0), -- dont know this person congested(1) -- some system problem }, information[1] IA5String OPTIONAL } -- DATA TYPES Mta ::= IA5String Channel ::= PrintableString Priority ::= ENUMERATED {low(0), normal(1), high(2)} -- Internal priorities COULD be different -- to external ones UAContentId ::= PrintableString ContentType ::= PrintableString EncodedInformationTypes ::= SEQUENCE OF PrintableString QID ::= PrintableString User ::= IA5String -- QMGR just sees users as strings. -- This is 822 or /= X.400 syntax -- The caller must get the right form! ReadMessageArgument ::= SEQUENCE { filters FilterList, interval UTCTime OPTIONAL -- interval for control of the LINKED operation } MsgList ::= SEQUENCE { msgs SEQUENCE OF %[ type_Qmgr_MsgStructList %] MsgStruct, deleted SEQUENCE OF %[ type_Qmgr_QidList %] QID OPTIONAL } ProcMsg ::= SEQUENCE { qid QID, users UserList, -- if USER 0, do all outstanding DNs channel Channel -- Channel to apply -- must be same for each user! -- Warning and Expiry channels have "special" behaviour } Control ::= CHOICE { stop [0] NULL, start [1] NULL, cacheClear [2] NULL, cacheAdd [3] UTCTime } ChannelControl ::= SEQUENCE { channel [0] Channel, control [1] Control } MtaControl ::= SEQUENCE { channel [0] Channel, mta [1] Mta, control [2] Control } MsgControl ::= SEQUENCE { qid [0] QID, users [1] UserList, control [2] Control } UserList ::= SEQUENCE OF RecipientId RecipientId ::= INTEGER MsgStruct ::= SEQUENCE { messageinfo [0] PerMessageInfo, recipientlist [1] SEQUENCE OF %[ type_Qmgr_RecipientList %] RecipientInfo -- only recipients with responsibility bit set -- AND originator (recipient 0) -- The originator is needed for DRs } PerMessageInfo ::= SEQUENCE { queueid [0] QID, mpduiden [1] MPDUIdentifier, originator [2] User, contenttype [3] ContentType OPTIONAL, eit [4] EncodedInformationTypes OPTIONAL, priority [5] Priority, size [6] INTEGER, -- size in bytes age [7] UTCTime, warnInterval [8] INTEGER, numberWarningsSent [9] INTEGER, expiryTime [10] UTCTime, deferredTime [11] UTCTime OPTIONAL, uaContentId [12] UAContentId OPTIONAL, errorCount [13] INTEGER OPTIONAL, inChannel [14] Channel OPTIONAL } ProcStatus ::= SEQUENCE { enabled [0] BOOLEAN, lastAttempt [1] UTCTime OPTIONAL, cachedUntil [2] UTCTime OPTIONAL, lastSuccess [3] UTCTime OPTIONAL } RecipientInfo ::= SEQUENCE { user [0] User, id [1] RecipientId, mta [2] Mta, channelList [3] SEQUENCE OF %[ type_Qmgr_ChannelList %] Channel, channelsDone [4] INTEGER, -- Number of channels processed -- If EQUAL to the number of channels, -- this implies DN is still pending procStatus [4] ProcStatus OPTIONAL, info [5] IA5String OPTIONAL } FilterList ::= SEQUENCE OF Filter Filter ::= SEQUENCE { contenttype [0] ContentType OPTIONAL, eit [1] EncodedInformationTypes OPTIONAL, -- message must have only specified types priority [2] Priority OPTIONAL, -- messages of this priority and above moreRecentThan [3] UTCTime OPTIONAL, earlierThan [4] UTCTime OPTIONAL, maxSize [5] INTEGER DEFAULT 0, -- size in bytes originator [6] User OPTIONAL, recipient [7] User OPTIONAL, channel [8] Channel OPTIONAL, mta [9] Mta OPTIONAL, queueid [10] QID OPTIONAL, mpduiden [11] MPDUIdentifier OPTIONAL, uaContentId [12] UAContentId OPTIONAL } ChannelReadResult ::= SEQUENCE { channels [0] PrioritisedChannelList, load1 [1] INTEGER, load2 [2] INTEGER, currchans [3] INTEGER, maxchans [4] INTEGER } PrioritisedChannelList ::= SEQUENCE OF PrioritisedChannel PrioritisedChannel ::= SEQUENCE { channel ChannelInfo, priority Priority } ChannelInfo ::= SEQUENCE { channel [0] Channel, channelDescription [1] PrintableString, oldestMessage [2] UTCTime, numberMessages [3] INTEGER, -- not including DRs volumeMessages [4] INTEGER, -- bytes numberActiveProcesses [5] INTEGER, status [6] ProcStatus, numberReports [7] INTEGER, direction [8] BITSTRING { inbound (0), -- supports inbound traffic outbound (1) -- supports outbound traffic -- both bits on => does both -- both bits off is internal }, chantype [9] ENUMERATED { mta (0), -- is an MTA level channel mts (1), -- is an MTS level channel internal (2), -- is an internal channel (formatter etc) passive (3) -- responding channel? }, maxprocs [10] INTEGER DEFAULT 0 } MtaRead ::= SEQUENCE { channel Channel, time UTCTime OPTIONAL } MsgRead ::= SEQUENCE { channel Channel, mta Mta, time UTCTime OPTIONAL } PrioritisedMtaList ::= SEQUENCE OF PrioritisedMta PrioritisedMta ::= SEQUENCE { mta MtaInfo, priority Priority } MtaInfo ::= SEQUENCE { channel [0] Channel, mta [1] Mta, oldestMessage [2] UTCTime, numberMessage [3] INTEGER, -- not DRs volumeMessages [4] INTEGER, status [5] ProcStatus, numberDRs [6] INTEGER, active [7] BOOLEAN DEFAULT FALSE, info [8] IA5String OPTIONAL } DeliveryStatus ::= SEQUENCE OF IndividualDeliveryStatus IndividualDeliveryStatus ::= SEQUENCE { recipient [0] RecipientId, status [1] ENUMERATED { -- The QMGR should treat the following -- as successful. In the latter cases -- a DR is processed in conjuction -- with a different recipient success (0), successSharedDR (1), failureSharedDR (2), -- The next set are treated by the -- QMGR as now having to send a DR negativeDR (3), -- negative DR positiveDR (4), -- positive DR -- the final set are different types -- of transient failure, needing -- different QMGR retry strategies messageFailure (5),-- temp failure on the Message (e.g. -- protocol temp reject) mtaFailure (6), -- MTA failure (e.g. couldn't connect) mtaAndMessageFailure (7) -- Both (e.g. connection bust) }, info[2] IA5String OPTIONAL } QMGRControl ::= SEQUENCE { op [0] QMGROp } QMGROp ::= ENUMERATED { abort (0), gracefulTerminate (1), restart (2), -- as if from cold rereadQueue (3), -- but don't disguard curent information disableSubmission (4), -- Don't let processes submit enableSubmission (5), disableAll (6), enableAll (7), increasemaxchans(8), decreasemaxchans(9) } END