Interface Definition Language

module java {
  module lang {
    extensible struct Object;
  };
};
module jdce {
  module util {
    module exception {
      exception jdceBahnException {
        long type;
      };
      exception jdceClientException {
        long type;
      };
    };
    module event {
      extensible struct jdceEvent {
        long type;
        string clientName;
      };
    };
    module message {
      extensible struct jdceMessage {
        string sender;
        string applicationType;
        string messageType;
        string protocolType;
        ::java::lang::Object content;
      };
    };
  };

  module client {
    interface clientProxy {
      boolean clientEvent(
        in ::jdce::util::event::jdceEvent arg0
      );
      boolean dataReceive(
        in string arg0
      );
      boolean messageReceive(
        in ::jdce::util::message::jdceMessage arg0
      );
    };
  };


  module byteways {
    interface dataBahn {
      string getApplicationServerName();
      long numberOfMembers();
      typedef sequence sequence_of_string;
      ::jdce::byteways::dataBahn::sequence_of_string getClientNames();
      boolean isEmpty();
      long register(
        in string arg0,
        in ::jdce::client::clientProxy arg1
      )
      raises(
        ::jdce::util::exception::jdceBahnException,
        ::jdce::util::exception::jdceClientException
      );
      boolean expelClient(
        in string arg0,
        in string arg1
      )
      raises(
        ::jdce::util::exception::jdceBahnException,
        ::jdce::util::exception::jdceClientException
      );
      boolean deregister(
        in string arg0
      )
      raises(
        ::jdce::util::exception::jdceClientException
      );
      boolean broadcast(
        in string arg0
      );
      boolean broadcastMessage(
        in ::jdce::util::message::jdceMessage arg0
      )
      raises(
        ::jdce::util::exception::jdceBahnException
      );
      boolean inform(
        in ::jdce::util::message::jdceMessage arg0
      )
      raises(
        ::jdce::util::exception::jdceBahnException
      );
      boolean whisper(
        in string arg0,
        in string arg1
      )
      raises(
        ::jdce::util::exception::jdceClientException,
        ::jdce::util::exception::jdceBahnException
      );
      boolean whisperMessage(
        in ::jdce::util::message::jdceMessage arg0,
        in string arg1
      )
      raises(
        ::jdce::util::exception::jdceClientException,
        ::jdce::util::exception::jdceBahnException
      );
    };
  };


  module scheduler {
    interface sessionScheduler {
      typedef sequence sequence_of_string;
      ::jdce::scheduler::sessionScheduler::sequence_of_string listApplications(
      )
      raises(
        ::jdce::util::exception::jdceBahnException
      );
      ::jdce::scheduler::sessionScheduler::sequence_of_string listBahns(
        in string arg0
      )
      raises(
        ::jdce::util::exception::jdceBahnException
      );
      boolean createBahn(
        in string arg0,
        in string arg1
      )
      raises(
        ::jdce::util::exception::jdceBahnException
      );
      boolean joinBahn(
        in string arg0,
        in string arg1
      )
      raises(
        ::jdce::util::exception::jdceBahnException
      );
      ::jdce::byteways::dataBahn getDataBahnHandle(
        in string arg0,
        in string arg1
      )
      raises(
        ::jdce::util::exception::jdceBahnException
      );
      boolean destroyBahn(
        in string arg0,
        in string arg1
      )
      raises(
        ::jdce::util::exception::jdceBahnException
      );
    };
  };
};