-- Module Remote-Operations-Information-Objects (Rec. X.880:07/1994)
Remote-Operations-Information-Objects {joint-iso-itu-t remote-operations(4)
  informationObjects(5) version1(0)} DEFINITIONS ::=
BEGIN

-- exports everything
IMPORTS
  emptyBind, emptyUnbind
    FROM Remote-Operations-Useful-Definitions {joint-iso-itu-t
      remote-operations(4) useful-definitions(7) version1(0)};

OPERATION ::= CLASS {
  &ArgumentType          OPTIONAL,
  &argumentTypeOptional  BOOLEAN OPTIONAL,
  &returnResult          BOOLEAN DEFAULT TRUE,
  &ResultType            OPTIONAL,
  &resultTypeOptional    BOOLEAN OPTIONAL,
  &Errors                ERROR OPTIONAL,
  &Linked                OPERATION OPTIONAL,
  &synchronous           BOOLEAN DEFAULT FALSE,
  &alwaysReturns         BOOLEAN DEFAULT TRUE,
  &InvokePriority        Priority OPTIONAL,
  &ResultPriority        Priority OPTIONAL,
  &operationCode         Code UNIQUE OPTIONAL
}
WITH SYNTAX {
  [ARGUMENT &ArgumentType [OPTIONAL &argumentTypeOptional]]
  [RESULT &ResultType [OPTIONAL &resultTypeOptional]]
  [RETURN RESULT &returnResult]
  [ERRORS &Errors]
  [LINKED &Linked]
  [SYNCHRONOUS &synchronous]
  [ALWAYS RESPONDS &alwaysReturns]
  [INVOKE PRIORITY &InvokePriority]
  [RESULT-PRIORITY &ResultPriority]
  [CODE &operationCode]
}

ERROR ::= CLASS {
  &ParameterType          OPTIONAL,
  &parameterTypeOptional  BOOLEAN OPTIONAL,
  &ErrorPriority          Priority OPTIONAL,
  &errorCode              Code UNIQUE OPTIONAL
}
WITH SYNTAX {
  [PARAMETER &ParameterType [OPTIONAL &parameterTypeOptional]]
  [PRIORITY &ErrorPriority]
  [CODE &errorCode]
}

OPERATION-PACKAGE ::= CLASS {
  &Both      OPERATION OPTIONAL,
  &Consumer  OPERATION OPTIONAL,
  &Supplier  OPERATION OPTIONAL,
  &id        OBJECT IDENTIFIER UNIQUE OPTIONAL
}
WITH SYNTAX {
  [OPERATIONS &Both]
  [CONSUMER INVOKES &Supplier]
  [SUPPLIER INVOKES &Consumer]
  [ID &id]
}

CONNECTION-PACKAGE ::= CLASS {
  &bind                OPERATION DEFAULT emptyBind,
  &unbind              OPERATION DEFAULT emptyUnbind,
  &responderCanUnbind  BOOLEAN DEFAULT FALSE,
  &unbindCanFail       BOOLEAN DEFAULT FALSE,
  &id                  OBJECT IDENTIFIER UNIQUE OPTIONAL
}
WITH SYNTAX {
  [BIND &bind]
  [UNBIND &unbind]
  [RESPONDER UNBIND &responderCanUnbind]
  [FAILURE TO UNBIND &unbindCanFail]
  [ID &id]
}

CONTRACT ::= CLASS {
  &connection           CONNECTION-PACKAGE OPTIONAL,
  &OperationsOf         OPERATION-PACKAGE OPTIONAL,
  &InitiatorConsumerOf  OPERATION-PACKAGE OPTIONAL,
  &InitiatorSupplierOf  OPERATION-PACKAGE OPTIONAL,
  &id                   OBJECT IDENTIFIER UNIQUE OPTIONAL
}
WITH SYNTAX {
  [CONNECTION &connection]
  [OPERATIONS OF &OperationsOf]
  [INITIATOR CONSUMER OF &InitiatorConsumerOf]
  [RESPONDER CONSUMER OF &InitiatorSupplierOf]
  [ID &id]
}

ROS-OBJECT-CLASS ::= CLASS {
  &Is                    ROS-OBJECT-CLASS OPTIONAL,
  &Initiates             CONTRACT OPTIONAL,
  &Responds              CONTRACT OPTIONAL,
  &InitiatesAndResponds  CONTRACT OPTIONAL,
  &id                    OBJECT IDENTIFIER UNIQUE
}
WITH SYNTAX {
  [IS &Is]
  [BOTH &InitiatesAndResponds]
  [INITIATES &Initiates]
  [RESPONDS &Responds]
  ID &id
}

Code ::= CHOICE {local   INTEGER, global  OBJECT IDENTIFIER}

Priority ::= INTEGER(0..MAX)

END -- end of Information Object specifications
