(**** * * Module MultiUserEnvir defines objects and operations related to the * multi-user operating environment of the Calendar Tool and Calendar Tool * Administration program. This includes an abstract model of a central host * server and local computers within the networked environment. * *) module MultiUserEnvir; import Admin.UserId, Admin.IsRunning, Admin.NotificationMessage; export Network, Server, HostId, ScheduledToStopIn, ConnectedUsers, NotificationQueue; object Network components: servers:Server*, locals:LocalUserMachine*; description: (* *); end Network; object Server components: id:HostId and is_running:IsRunning and users:ConnectedUsers and stop_in:ScheduledToStopIn and notification_queue:NotificationQueue; description: (* *); end Server; object HostId = string description: (* The network ID of a central host computer. Typically in the form of an IP or other network address, but the Calendar Tool does not enforce any specific standard. *); end HostId; object ConnectedUsers = UserId* description: (* *); end ConntectedUsers; object ScheduledToStopIn = integer description: (* Number of minutes in which the server is scheduled to stop. This models a simple count-down timer which when zero is reached, the server stops. When the server is running and the value is zero, the server remains running until the value is set to greater than zero. Note well that the temporal logic aspects of this modeling are not specified in the operation that sets this value, defined in Admin.StopServer, q.v. *); end ScheduledToStopIn; object LocalUserMachine components: user:UserId and notification_queue:NotificationQueue; description: (* *); end LocalUserMachine; object NotificationQueue components: NotificationMessage*; description: (* Queue of not-yet-viewed notifications from one or more hosts. *); end NotificationQueue; end MultiUserEnvir;