TCAP-Remote-Operations-Information-Objects
{iso(1) memberbody(2) usa(840) t1-114(10013) modules(0) informationObjects(1) version4(4)} DEFINITIONS ::=
BEGIN

--Exports Everything
IMPORTS
   emptyBind, emptyUnbind
      FROM Remote-Operations-Useful-Definitions
      {joint-iso-ccitt 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,
   &invokeLast            BOOLEAN DEFAULT FALSE,
   &operationCode         OperationCode UNIQUE OPTIONAL
} WITH SYNTAX {
   [ARGUMENT              &ArgumentType [OPTIONAL &argumentTypeOptional]]
   [RESULT                &ResultType [OPTIONAL &resultTypeOptional]]
   [RETURN RESULT         &returnResult]
   [ERRORS                &Errors]
   [LINKED                &Linked]
   [SYNCHRONOUS           &synchronous]
   [ALWAYS RETURNS        &alwaysReturns]
   [INVOKE PRIORITY       &InvokePriority]
   [RESULT PRIORITY       &ResultPriority]
   [LAST                  &invokeLast]
   [CODE                  &operationCode]
}

ERROR ::= CLASS {
   &ParameterType          OPTIONAL,
   &parameterTypeOptional  BOOLEAN OPTIONAL,
   &ErrorPriority          Priority OPTIONAL,
   &errorCode              ErrorCode 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
}

OperationCode ::= CHOICE {
   national                [PRIVATE 16] IMPLICIT INTEGER(-32768..32767),
   private                 [PRIVATE 17] IMPLICIT INTEGER
}

ErrorCode ::= CHOICE {
   national                [PRIVATE 19]  INTEGER(-128..127),
   private                 [PRIVATE 20]  INTEGER
}

Priority ::= INTEGER(0..MAX)

END --end of Information Object Specifications
