smttran.l


!----------------------------------------------------------------------------
!   Name:       smttran.l
!   Title:      Dialog for SMT transfer agent
!   Package:    Libero SMT 2.x
!
!   Written:    1996/09/05  iMatix SMT kernel team smt@imatix.com
!   Revised:    1999/08/282
!
!   Copyright:  Copyright (c) 1991-2000 iMatix Corporation
!   License:    This is free software; you can redistribute it and/or modify
!               it under the terms of the SMT License Agreement as provided
!               in the file LICENSE.TXT.  This software is distributed in
!               the hope that it will be useful, but without any warranty.
!----------------------------------------------------------------------------
-schema=smtschm.c

After-Init:
    (--) Master                             -> Getting-Event
          +
    (--) Pipe-Manager                       -> Refresh-Pipes
          + Wait-For-Pipe-Refresh
    (--) Put-File                           -> File-Buffer-Out
          + Open-File-For-Input
          + Read-File-Data-Buffer
          + Convert-Ascii-To-Net-If-Reqd
          + Put-Buffer-To-Socket
    (--) Get-File                           -> File-Buffer-In
          + Open-File-For-Output
          + Get-Buffer-From-Socket

Getting-Event:
    (--) Put-Block                          -> Getting-Event
          + Create-Put-Block-Request
          + Process-Transfer-Requests
          + Get-Next-Event-From-Queue
    (--) Get-Block                          -> Getting-Event
          + Create-Get-Block-Request
          + Process-Transfer-Requests
          + Get-Next-Event-From-Queue
    (--) Put-Huge                           -> Getting-Event
          + Create-Put-Huge-Request
          + Process-Transfer-Requests
          + Get-Next-Event-From-Queue
    (--) Get-Huge                           -> Getting-Event
          + Create-Get-Huge-Request
          + Process-Transfer-Requests
          + Get-Next-Event-From-Queue
    (--) Put-File                           -> Getting-Event
          + Create-Put-File-Thread
          + Process-Transfer-Requests
          + Get-Next-Event-From-Queue
    (--) Get-File                           -> Getting-Event
          + Create-Get-File-Thread
          + Process-Transfer-Requests
          + Get-Next-Event-From-Queue
    (--) Pipe-Create                        -> Getting-Event
          + Create-Transfer-Pipe
          + Get-Next-Event-From-Queue
    (--) Clear-Pipes                        -> Getting-Event
          + Destroy-All-Transfer-Pipes
          + Get-Next-Event-From-Queue
    (--) Commit                             -> Getting-Event
          + Okay-If-No-Requests-Left
          + Get-Next-Event-From-Queue
    (--) Empty                              -> Getting-Event
!   We wait for an incoming event
          + Process-Transfer-Requests
    (--) Alarm                              -> Getting-Event
!   Several events could cause an eventual alarm - we loop
          + Regenerate-Alarm-Event
    (--) Write-Ok                           -> Getting-Event
          + Update-Request-After-Write
          + Process-Transfer-Requests
    (--) Read-Ok                            -> Getting-Event
          + Update-Request-After-Read
          + Process-Transfer-Requests
    (--) Writeh-Ok                          -> Getting-Event
          + Update-Request-After-Writeh
          + Process-Transfer-Requests
    (--) Readh-Ok                           -> Getting-Event
          + Update-Request-After-Readh
          + Process-Transfer-Requests
    (--) Sock-Closed                        -> Getting-Event
          + Update-Request-After-Closed
          + Process-Transfer-Requests
    (--) Sock-Error                         -> Getting-Event
          + Update-Request-After-Error
          + Process-Transfer-Requests

File-Buffer-Out:
    (--) Write-Ok                           -> File-Buffer-Out
          + Read-File-Data-Buffer
          + Convert-Ascii-To-Net-If-Reqd
          + Put-Buffer-To-Socket
    (--) Incomplete                         -> File-Buffer-Out
          + Put-Buffer-To-Socket
!   Alarm sent if we have to wait for pipe to be available
    (--) Alarm                              -> File-Buffer-Out
          + Put-Buffer-To-Socket
    (--) Sock-Closed                        ->
          + Signal-Socket-Closed
          + Terminate-The-Thread
    (--) Sock-Error                         ->
          + Signal-Socket-Error
          + Terminate-The-Thread

File-Buffer-In:
    (--) Read-Ok                            -> File-Buffer-In
          + Convert-Net-To-Ascii-If-Reqd
          + Write-File-Data-Buffer
          + Get-Buffer-From-Socket
!   Alarm sent if we have to wait for pipe to be available
    (--) Alarm                              -> File-Buffer-In
          + Get-Buffer-From-Socket
    (--) Sock-Closed                        ->
          + Signal-Get-File-Okay
          + Terminate-The-Thread
    (--) Sock-Error                         ->
          + Signal-Socket-Error
          + Terminate-The-Thread

Refresh-Pipes:
    (--) Alarm                              -> Refresh-Pipes
          + Refresh-All-Pipes
          + Wait-For-Pipe-Refresh

Defaults:
    (--) Shutdown                           -> End-Thread
          + Check-Thread-Type
    (--) Exception                          -> End-Thread
          + Check-Thread-Type
    (--) End-Of-File                        ->
          + Signal-Put-File-Okay
          + Terminate-The-Thread
    (--) Error                              ->
          + Terminate-The-Thread
    (--) Ok                                 ->
          +

End-Thread:
    (--) Master                             ->
          + Destroy-All-Requests
          + Terminate-The-Thread
    (--) Pipe-Manager                       ->
          + Destroy-All-Transfer-Pipes
          + Terminate-The-Thread
    (--) Put-File                           ->
          + Terminate-The-Thread
    (--) Get-File                           ->
          + Terminate-The-Thread

Generated by Framer 1.0 © 1997 iMatix