home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / pp / pp-6.0 / doc / manual / volume1 / qmgrros.ry < prev    next >
Encoding:
Text File  |  1991-03-24  |  11.3 KB  |  528 lines

  1. -- qmgr.ry - Qmgr operation definitions
  2.  
  3. Qmgr 
  4. DEFINITIONS ::=
  5. BEGIN
  6.  
  7. IMPORTS MPDUIdentifier FROM QmgrP1;
  8.  
  9. -- EXPORTS everything
  10.  
  11.  
  12. -- PORTS
  13. qmgr-use OBJECT
  14.         PORTS { newmessage[S],
  15.         readmsginfo[S],
  16.         msginfo[C],
  17.         channelinitialise[C],
  18.         processmessage,
  19.         channelbegin[S],
  20.         readqueue[C],
  21.                 channelread[S],
  22.         channelinfo[C],
  23.         channelcontrol[S],
  24.         mtaread[S],
  25.         mtainfo[C],
  26.         mtacontrol[S],
  27.         qmgrstatus[S],
  28.         readchannelmtamessage[S] } ::= id-pt-qmgr-use
  29.  
  30.  
  31. activeChannel OBJECT
  32.             PORTS { channelinitialise, 
  33.             processmessage [S] }
  34.     ::= id-pt-activeChannel
  35.  
  36. passiveChannel OBJECT
  37.             PORTS { processmessage[S],
  38.                     channelbegin[C] }
  39.     ::= id-pt-passiveChannel
  40.  
  41. submitProcess OBJECT
  42.         PORTS { newmessage[C] }
  43.     ::= id-pt-submitProcess
  44.  
  45. queueReadProcess OBJECT 
  46.         PORTS { readqueue[S] }
  47.     ::= id-pt-queueReadProcess
  48.  
  49. managementUA OBJECT 
  50.             PORTS { processmessage[C],
  51.                     readmsginfo[C],
  52.             msginfo[S],
  53.                     channelread[C],
  54.             channelinfo[S],
  55.             channelcontrol[C],
  56.                     mtaread[C],
  57.             mtainfo[S],
  58.                     mtacontrol[C],
  59.             qmgrstatus[C],
  60.             readchannelmtamessage[C] }
  61.     ::= id-pt-managementUA
  62.  
  63. -- OPERATIONS
  64.  
  65.                 -- new message arrived
  66.                 -- Submit -> QMGR
  67. newmessage OPERATION
  68.     ARGUMENT MsgStruct
  69.     RESULT NULL
  70.     ERRORS { congested, protocol }
  71.     ::= 0
  72.  
  73.                 -- read a message
  74.                 -- Console -> QMGR
  75.                 -- QMGR -> QMGR
  76. readmsginfo OPERATION
  77.     ARGUMENT ReadMessageArgument
  78.     RESULT MsgList
  79.     ERRORS { congested, protocol }
  80.     LINKED {msginfo}
  81.     ::= 1
  82.  
  83.                 -- QMGR -> Console
  84.                 -- Incremental update
  85. msginfo OPERATION
  86.     ARGUMENT MsgList
  87.     ::= 10
  88.  
  89.                 -- processes a message
  90.                 -- QMGR -> Channel
  91. processmessage OPERATION
  92.     ARGUMENT ProcMsg
  93.     RESULT DeliveryStatus
  94.     ERRORS { congested, protocol }
  95.     ::= 2
  96.  
  97.                 -- start up a channel
  98.                 -- Channel -> QMGR
  99. channelbegin OPERATION
  100.     ARGUMENT FilterList
  101.             -- type of message requested
  102.     RESULT FilterList
  103.             -- what you are going to get
  104.     ERRORS { congested, protocol }
  105.     ::= 3
  106.  
  107.                 -- read the entire queue
  108.                 -- QMGR -> Q reader
  109. readqueue OPERATION
  110.     ARGUMENT NULL
  111.     RESULT MsgList
  112.     ERRORS { congested, protocol }
  113.     ::= 4
  114.  
  115.                 -- read a channel
  116.                 -- Console -> QMGR
  117.                 -- get info at channel level
  118. channelread OPERATION
  119.     ARGUMENT UTCTime
  120.     RESULT ChannelReadResult
  121.     ERRORS { congested, protocol }
  122.     LINKED {chaninfo}
  123.     ::= 5
  124.  
  125.                 -- QMGR -> Console
  126.                 -- Incremental update
  127. chaninfo OPERATION
  128.     ARGUMENT ChannelReadResult
  129.             -- info on ALL channels
  130.     ::= 11
  131.  
  132.                 -- control a channels behaviour
  133.                 -- Console -> QMGR
  134. channelcontrol OPERATION
  135.     ARGUMENT ChannelControl
  136.     RESULT PrioritisedChannelList
  137.     ERRORS { congested, protocol, noSuchChannel, illegalOperation,
  138.         authenticationFailure}
  139.     ::= 6
  140.  
  141.                 -- read about a mta
  142.                 -- Console -> QMGR
  143. mtaread OPERATION
  144.     ARGUMENT MtaRead
  145.     RESULT PrioritisedMtaList
  146.     ERRORS { congested, protocol, noSuchChannel }
  147.     LINKED {mtainfo}
  148.     ::= 7
  149.  
  150.                 -- QMGR -> Console
  151.                 -- Incremental update
  152. mtainfo OPERATION
  153.     ARGUMENT PrioritisedMtaList
  154.     ::= 12
  155.  
  156.                 -- control a mta
  157.                 -- Console -> QMGR
  158. mtacontrol OPERATION
  159.     ARGUMENT MtaControl
  160.     RESULT MtaInfo
  161.     ERRORS { congested, noSuchChannel, mtaNotInQueue,
  162.          authenticationFailure}
  163.     ::= 8
  164.  
  165.                 -- control a message
  166.                 -- Console -> QMGR
  167. msgcontrol OPERATION
  168.     ARGUMENT MsgControl
  169.     RESULT NULL
  170.     ERRORS { congested, protocol, noSuchChannel, mtaNotInQueue,
  171.          authenticationFailure}
  172.     ::= 13
  173.  
  174.                 -- QMGR -> Channel (process)
  175. channelInitialise OPERATION
  176.     ARGUMENT Channel
  177.     RESULT NULL
  178.     ERRORS { congested, protocol, noSuchChannel}
  179.     ::= 9
  180.  
  181. qmgrControl OPERATION
  182.     ARGUMENT QMGRControl
  183.     RESULT NULL -- always works
  184.     ERRORS { congested, protocol, authenticationFailure}
  185.     ::= 14
  186.  
  187. readChannelMtaMessage OPERATION
  188.     ARGUMENT MsgRead
  189.     RESULT MsgList
  190.     ERRORS { congested, protocol, noSuchChannel, mtaNotInQueue }
  191.     ::= 15
  192.  
  193. qmgrStatus OPERATION
  194.     ARGUMENT NULL
  195.     RESULT QmgrStatus
  196.     ERRORS { congested, protocol }
  197.     ::= 16
  198. -- ERRORS
  199.  
  200.             -- congestion at the responder
  201. congested ERROR
  202.     ::=        0
  203.  
  204.             -- unknown channel
  205. noSuchChannel ERROR
  206.     ::=        1
  207.  
  208.             -- unknown operation
  209. illegalOperation ERROR
  210.     ::=        2
  211.  
  212.             -- operation on mta makes no sense
  213. mtaNotInQueue ERROR
  214.     ::=        3
  215.  
  216.             -- error in the protocol
  217. protocol ERROR
  218.     ::=        4
  219.  
  220. authenticationFailure ERROR
  221.     ::=         5
  222.  
  223. -- Bind Arguments
  224.  
  225. BindArgument ::= CHOICE {    -- structure used in association request
  226.     noAuthentication [0] NULL,
  227.     weakAuthentication [1] WeakAuthentication
  228.     }
  229.  
  230. WeakAuthentication ::= SEQUENCE {
  231.     username [0] IA5String,
  232.     passwd   [1] IA5String OPTIONAL
  233.     }
  234.  
  235. BindResult ::= SEQUENCE {
  236.         result[0] ENUMERATED {    -- result from the association request
  237.             acceptedLimitedAccess(0), -- accepted limited access
  238.             acceptedFullAccess(1)      -- accepted full access
  239.         },
  240.         information[1] IA5String OPTIONAL,
  241.         version[2] IA5String OPTIONAL
  242.     }
  243.  
  244.  
  245. BindError ::= SEQUENCE {
  246.         reason[0] ENUMERATED {
  247.             badCredentials(0),    -- dont know this person
  248.             congested(1)        -- some system problem
  249.         },
  250.         information[1] IA5String OPTIONAL
  251.     }
  252.  
  253. -- DATA TYPES
  254.  
  255. Mta ::= IA5String
  256.  
  257. Channel ::= PrintableString
  258.  
  259. Priority ::= ENUMERATED {low(0), normal(1), high(2)}
  260.             -- Internal priorities COULD be different
  261.             -- to external ones
  262.  
  263. UAContentId ::= PrintableString
  264.  
  265. ContentType ::= PrintableString
  266.  
  267. EncodedInformationTypes ::= SEQUENCE OF PrintableString
  268.  
  269. QID ::= PrintableString
  270.  
  271. User ::= IA5String
  272.             -- QMGR just sees users as strings.
  273.             -- This is 822 or /= X.400 syntax
  274.             -- The caller must get the right form!
  275.             
  276.  
  277. ReadMessageArgument ::= SEQUENCE {
  278.         filters  FilterList,
  279.         interval UTCTime OPTIONAL
  280.             -- interval for control of the LINKED operation
  281.         }
  282.  
  283. MsgList    ::= SEQUENCE {
  284.         msgs SEQUENCE OF %[ type_Qmgr_MsgStructList %]
  285.             MsgStruct,
  286.         deleted SEQUENCE OF %[ type_Qmgr_QidList %] QID OPTIONAL
  287.         }
  288.  
  289. ProcMsg ::= SEQUENCE {
  290.     qid QID,
  291.     users UserList,
  292.             -- if USER 0, do all outstanding DNs
  293.     channel Channel  -- Channel to apply
  294.         -- must be same for each user!
  295.         -- Warning and Expiry channels have "special" behaviour
  296. }
  297.  
  298. Control ::= CHOICE {
  299.         stop [0] NULL,
  300.         start [1] NULL,
  301.         cacheClear [2] NULL,
  302.         cacheAdd [3] UTCTime }
  303.  
  304. ChannelControl ::=  SEQUENCE {
  305.         channel [0] Channel,
  306.         control [1] Control 
  307.         }
  308.  
  309. MtaControl ::= SEQUENCE {
  310.         channel [0] Channel,
  311.         mta [1] Mta,
  312.         control [2] Control 
  313.         }
  314.  
  315. MsgControl ::= SEQUENCE {
  316.         qid [0] QID,
  317.         users [1] UserList,
  318.         control [2] Control
  319.         }
  320.  
  321. UserList ::= SEQUENCE OF RecipientId
  322.  
  323. RecipientId ::= INTEGER
  324.  
  325. MsgStruct ::= SEQUENCE {
  326.     messageinfo    [0] PerMessageInfo,
  327.     recipientlist    [1] SEQUENCE OF %[ type_Qmgr_RecipientList %]
  328.                 RecipientInfo
  329.             -- only recipients with responsibility bit set
  330.             -- AND originator (recipient 0)
  331.             -- The originator is needed for DRs
  332.     }
  333.             
  334.  
  335. PerMessageInfo ::= SEQUENCE {
  336.     queueid        [0] QID,
  337.     mpduiden    [1] MPDUIdentifier,
  338.     originator    [2] User,
  339.     contenttype    [3] ContentType OPTIONAL,
  340.     eit        [4] EncodedInformationTypes OPTIONAL,
  341.     priority    [5] Priority,
  342.     size        [6] INTEGER,
  343.             -- size in bytes
  344.     age        [7] UTCTime,
  345.     warnInterval    [8] INTEGER,
  346.     numberWarningsSent [9] INTEGER,
  347.     expiryTime     [10] UTCTime,
  348.     deferredTime    [11] UTCTime OPTIONAL,
  349.     uaContentId    [12] UAContentId OPTIONAL,
  350.     errorCount    [13] INTEGER OPTIONAL,
  351.     inChannel    [14] Channel OPTIONAL
  352.     }
  353.  
  354. ProcStatus ::=     SEQUENCE {
  355.     enabled        [0] BOOLEAN,
  356.     lastAttempt    [1] UTCTime OPTIONAL,
  357.     cachedUntil    [2] UTCTime OPTIONAL,
  358.     lastSuccess    [3] UTCTime OPTIONAL
  359.     }
  360.  
  361. RecipientInfo ::= SEQUENCE {
  362.     user         [0] User,
  363.     id        [1] RecipientId,
  364.     mta        [2] Mta,
  365.     channelList    [3] SEQUENCE OF %[ type_Qmgr_ChannelList %] Channel,
  366.     channelsDone    [4] INTEGER,
  367.                 -- Number of channels processed
  368.                 -- If EQUAL to the number of channels, 
  369.                 -- this implies DN is still pending
  370.     procStatus     [4] ProcStatus OPTIONAL,
  371.     info        [5] IA5String OPTIONAL }
  372.  
  373.  
  374. FilterList ::= SEQUENCE OF Filter
  375.  
  376. Filter ::= SEQUENCE {
  377.     contenttype    [0] ContentType OPTIONAL,
  378.     eit        [1] EncodedInformationTypes OPTIONAL,
  379.             -- message must have only specified types
  380.     priority    [2] Priority OPTIONAL,
  381.             -- messages of this priority and above
  382.     moreRecentThan    [3] UTCTime OPTIONAL,
  383.     earlierThan    [4] UTCTime OPTIONAL,
  384.     maxSize        [5] INTEGER DEFAULT 0,
  385.             -- size in bytes
  386.     originator    [6] User OPTIONAL,
  387.     recipient    [7] User OPTIONAL,
  388.     channel        [8] Channel OPTIONAL,
  389.     mta        [9] Mta OPTIONAL,
  390.     queueid        [10] QID OPTIONAL,
  391.     mpduiden    [11] MPDUIdentifier OPTIONAL,
  392.     uaContentId    [12] UAContentId OPTIONAL }
  393.  
  394. ChannelReadResult ::= SEQUENCE {
  395.     channels    [0] PrioritisedChannelList,
  396.     load1        [1] INTEGER DEFAULT 0,
  397.     load2        [2] INTEGER DEFAULT 0,
  398.     currchans    [3] INTEGER DEFAULT 0,
  399.     maxchans    [4] INTEGER DEFAULT 0}
  400.  
  401. PrioritisedChannelList ::= SEQUENCE OF PrioritisedChannel
  402.  
  403. PrioritisedChannel ::= SEQUENCE {
  404.     channel    ChannelInfo,
  405.     priority Priority }
  406.  
  407. ChannelInfo ::= SEQUENCE {
  408.     channel        [0] Channel,
  409.     channelDescription [1] PrintableString,
  410.     oldestMessage    [2] UTCTime,
  411.     numberMessages    [3] INTEGER,    -- not including DRs
  412.     volumeMessages    [4] INTEGER,    -- bytes
  413.     numberActiveProcesses [5] INTEGER,
  414.     status        [6] ProcStatus,
  415.     numberReports   [7] INTEGER,
  416.     direction    [8] BITSTRING {
  417.         inbound (0),    -- supports inbound traffic
  418.         outbound (1)    -- supports outbound traffic
  419.                 -- both bits on => does both
  420.                 -- both bits off is internal
  421.         },
  422.     chantype    [9] ENUMERATED {
  423.         mta (0),    -- is an MTA level channel
  424.         mts (1),    -- is an MTS level channel
  425.         internal (2),    -- is an internal channel (formatter etc)
  426.         passive (3)    -- responding channel?
  427.         },
  428.     maxprocs    [10] INTEGER DEFAULT 0,
  429.     numberMtas    [11] INTEGER DEFAULT 0
  430.     
  431.     }
  432.  
  433. MtaRead ::= SEQUENCE {
  434.     channel Channel,
  435.     time UTCTime OPTIONAL
  436.     }
  437.  
  438. MsgRead ::= SEQUENCE {
  439.     channel Channel,
  440.     mta Mta,
  441.     time UTCTime OPTIONAL
  442.     }
  443.  
  444. PrioritisedMtaList ::= SEQUENCE OF PrioritisedMta
  445.  
  446. PrioritisedMta ::= SEQUENCE {
  447.     mta MtaInfo,
  448.     priority Priority }
  449.  
  450. MtaInfo ::= SEQUENCE {
  451.     channel        [0] Channel,
  452.     mta        [1] Mta,
  453.     oldestMessage    [2] UTCTime,
  454.     numberMessage    [3] INTEGER, -- not DRs
  455.     volumeMessages    [4] INTEGER,
  456.     status        [5] ProcStatus,
  457.     numberDRs    [6] INTEGER,
  458.     active        [7] BOOLEAN DEFAULT FALSE,
  459.     info        [8] IA5String OPTIONAL
  460.     }
  461.  
  462. DeliveryStatus ::= SEQUENCE OF IndividualDeliveryStatus
  463.  
  464.  
  465. IndividualDeliveryStatus ::=  SEQUENCE {
  466.     recipient [0] RecipientId,
  467.     status      [1] ENUMERATED {
  468.                   -- The QMGR should treat the following
  469.                   -- as successful.  In the latter cases
  470.                   -- a DR is processed in conjuction
  471.                   -- with a different recipient
  472.         success (0),
  473.         successSharedDR (1),
  474.         failureSharedDR (2),
  475.     
  476.                   -- The next set are treated by the
  477.                   -- QMGR as now having to send a DR
  478.         negativeDR (3),   -- negative DR
  479.         positiveDR (4),      -- positive DR
  480.                   
  481.  
  482.                   -- the final set are different types
  483.                   -- of transient failure, needing
  484.                   -- different QMGR retry strategies
  485.         messageFailure (5),-- temp failure on the Message (e.g. 
  486.                     -- protocol temp reject)
  487.         mtaFailure (6),      -- MTA failure (e.g. couldn't connect)
  488.         mtaAndMessageFailure (7)  -- Both (e.g. connection bust)
  489.         },
  490.     info[2] IA5String OPTIONAL
  491.     }
  492.  
  493.  
  494. QMGRControl ::= SEQUENCE {
  495.     op [0] QMGROp
  496.     }
  497.  
  498. QMGROp ::= ENUMERATED {
  499.     abort (0),    
  500.     gracefulTerminate (1),
  501.     restart (2),    -- as if from cold
  502.     rereadQueue (3),   -- but don't discard current information
  503.     disableSubmission (4),  -- Don't let processes submit
  504.     enableSubmission (5),
  505.     disableAll (6),
  506.     enableAll (7),
  507.     increasemaxchans(8),
  508.     decreasemaxchans(9) }
  509.     
  510.  
  511. QmgrStatus ::= SEQUENCE {
  512.     boottime     UTCTime,
  513.     messagesIn     INTEGER,
  514.     messagesOut     INTEGER,
  515.     addrIn        INTEGER,
  516.     addrOut        INTEGER,
  517.     opsPerSec     INTEGER,    -- * 100
  518.     runnableChans     INTEGER,    -- * 100
  519.     msgsInPerSec     INTEGER,    -- * 100
  520.     msgsOutPerSec     INTEGER,    -- * 100
  521.     maxChans     INTEGER,
  522.     currChans     INTEGER,
  523.     totalMsgs    INTEGER,
  524.     totalVolume    INTEGER,
  525.     totalDrs    INTEGER
  526.     }
  527. END
  528.