module Reservation { struct Date { long day; long month; long year; }; struct Moment { long hour; long minute; }; struct Time { Date date; Moment moment; }; struct Interval { Time start; Time end; }; typedef sequence Intervals; exception UnspecifiedTimeTable {}; interface ReservationService { Intervals getTimeTable() raises(UnspecifiedTimeTable); long getAvailableSeats(in Interval interval) raises(UnspecifiedTimeTable); boolean makeReservation(in long customerId, in Interval interval, in Interval numberOfSeats) raises(UnspecifiedTimeTable); boolean cancelReservation (in long customerId, in Interval interval) raises(UnspecifiedTimeTable); }; };