smtupmd.l


!----------------------------------------------------------------------------
!   Name:       smtupmd.l
!   Title:      Dialog for SMT Unattended Task Manager daemon
!   Package:    Libero SMT 2.x
!
!   Written:    1996/09/05  iMatix SMT kernel team smt@imatix.com
!   Revised:    1997/09/08
!
!   Copyright:  Copyright (c) 1991-2000 iMatix Corporation
!   This program is free software; you can redistribute it and/or modify it
!   under the terms of the GNU General Public License as published by the Free
!   Software Foundation; either version 2 of the License, or (at your option)
!   any later version. This program is distributed in the hope that it will be
!   useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
!   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
!   Public License for more details.  You should have received a copy of the
!   GNU General Public License along with this program; if not, write to the
!   Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
!----------------------------------------------------------------------------
-schema=smtschm.c

After-Init:    !   Master thread manages connection requests on UPM master socket

    (--) Master                             -> Master-Input
          + Create-Task-Threads
          + Open-Manager-Log-File
          + Open-Master-Socket
          + Wait-For-Socket-Input
    !   Control threads handle front-end control socket connections
    (--) Control                            -> Have-Control-Message
          + Reply-Ready-For-Command
          + Read-Control-Message
          + Check-Control-Message
    !   Task threads each handle one defined UPM task
    (--) Task                               -> Task-Stopped
          + Load-Task-Time-Slots
          + Load-Task-Values
          + Run-Task-Idle-Command
!  These states control the master thread, which waits for control
!  connections.

Master-Input:
    (--) Ok                                 -> Master-Input
          + Accept-Control-Connection
          + Wait-For-Socket-Input
!  These states define the control threads, one for each client
!  connection.

Have-Control-Message:
    (--) List                               -> Have-Control-Message
          + Reply-List-Of-Tasks
          + Reply-Ready-For-Command
          + Read-Control-Message
          + Check-Control-Message
    (--) Halt                               ->
          + Reply-Halting
          + Commit-Outgoing-Replies
          + Shutdown-The-Application
          + Terminate-The-Thread
    (--) Start                              -> Have-Task-For-Start
          + Get-First-Affected-Task
    (--) Stop                               -> Have-Task-For-Stop
          + Get-First-Affected-Task
    (--) Status                             -> Have-Task-For-Status
          + Get-First-Affected-Task
    (--) Error                              -> Have-Control-Message
          + Reply-Unrecognised-Control
          + Reply-Ready-For-Command
          + Read-Control-Message
          + Check-Control-Message

Have-Task-For-Start:
    (--) Ok                                 -> Wait-Task-Started
          + Pass-Start-To-Task-Thread
    (--) No-More                            -> Have-Control-Message
          + Reply-Ready-For-Command
          + Read-Control-Message
          + Check-Control-Message
    (--) Not-Found                          -> Have-Control-Message
          + Reply-Ready-For-Command
          + Read-Control-Message
          + Check-Control-Message

Wait-Task-Started:
    (--) Ok                                 -> Have-Task-For-Start
          + Reply-Task-Started-Ok
          + Get-Next-Affected-Task
    (--) Error                              -> Have-Task-For-Start
          + Reply-Task-Started-Error
          + Get-Next-Affected-Task

Have-Task-For-Stop: <>
    (--) Ok                                 -> Wait-Task-Stopped
          + Pass-Stop-To-Task-Thread

Wait-Task-Stopped:
    (--) Ok                                 -> Have-Task-For-Stop
          + Reply-Task-Stopped-Ok
          + Get-Next-Affected-Task
    (--) Error                              -> Have-Task-For-Stop
          + Reply-Task-Stopped-Error
          + Get-Next-Affected-Task

Have-Task-For-Status: <>
    (--) Ok                                 -> Wait-Task-Status
          + Pass-Status-To-Task-Thread

Wait-Task-Status:
    (--) Running                            -> Have-Task-For-Status
          + Reply-Task-Running
          + Get-Next-Affected-Task
    (--) Stopped                            -> Have-Task-For-Status
          + Reply-Task-Stopped
          + Get-Next-Affected-Task
    (--) Error                              -> Have-Task-For-Status
          + Get-Next-Affected-Task
!  These states define the task threads, one for each task defined
!  in the UPM initialisation file.

Task-Stopped:
    (--) Start                              -> Task-Running
          + Load-Task-Time-Slots
          + Load-Task-Values
          + Run-Task-Startup-Command
          + Monitor-Active-Task-Status
          + Signal-Task-Started-Okay
    (--) Stop                               -> Task-Stopped
          + Signal-Task-Not-Running
    (--) Start-Auto                         -> Task-Running
          + Load-Task-Values
          + Run-Task-Startup-Command
          + Monitor-Active-Task-Status
    (--) Stop-Auto                          -> Task-Stopped
          +
    (--) Status                             -> Task-Stopped
          + Signal-Task-Stopped
    (--) Task-Alarm                         -> Task-Stopped
          +
    (--) Exception                          -> Task-Stopped
          + Signal-Task-Started-Error

Task-Running:
    (--) Start                              -> Task-Running
          + Shut-Down-Child-Task
          + Run-Task-Cancel-Command
          + Load-Task-Time-Slots
          + Load-Task-Values
          + Run-Task-Startup-Command
          + Signal-Task-Started-Okay
    (--) Stop                               -> Task-Stopped
          + Shut-Down-Child-Task
          + Run-Task-Cancel-Command
          + Run-Task-Idle-Command
          + Signal-Task-Stopped-Okay
    (--) Start-Auto                         -> Task-Running
          +
    (--) Stop-Auto                          -> Task-Stopped
          + Shut-Down-Child-Task
          + Run-Task-Cancel-Command
          + Run-Task-Idle-Command
    (--) Status                             -> Task-Running
          + Signal-Task-Running
    (--) Task-Alarm                         -> Task-Running
          + Check-Task-Still-Running
          + Monitor-Active-Task-Status
    (--) Task-Stopped                       -> Task-Stopped
          + Run-Task-Idle-Command
    (--) Exception                          -> Task-Stopped
          + Signal-Task-Started-Error
    !  Shutdown handling for an active task is a special case
    (--) Shutdown                           ->
          + Shut-Down-Child-Task
          + Run-Task-Cancel-Command
          + Run-Task-Idle-Command
          + Destroy-The-Task
          + Terminate-The-Thread

Defaults:
    (--) Sock-Error                         -> End-Thread
          + Signal-Socket-Error
          + Check-Thread-Type
    (--) Sock-Closed                        -> End-Thread
          + Check-Thread-Type
    (--) Exception                          -> End-Thread
          + Check-Thread-Type
    (--) Shutdown                           -> End-Thread
          + Check-Thread-Type
    (--) Fatal                              -> End-Thread
          + Check-Thread-Type

End-Thread:
    (--) Master                             ->
          + Close-Manager-Log-File
          + Shutdown-The-Application
          + Terminate-The-Thread
    (--) Control                            ->
          + Terminate-The-Thread
    (--) Task                               ->
          + Destroy-The-Task
          + Terminate-The-Thread

Generated by Framer 1.0 © 1997 iMatix