home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
-
- ¢1mNAME
- ¢0mflow - manage the outbound directory
-
- ¢1mSYNOPSIS
-
- ¢0mAllocation
-
- ¢1mvoid FreeWorkNode¢0m(¢1msomework¢0m), ¢1mFloBase
- ¢0m-- d0 a6
- work_detail_node *somework;
-
- ¢1mvoid FreeDetail¢0m(¢1mdetail¢0m), ¢1mFloBase
- ¢0m-- d0 a6
- work_detail *detail;
-
- ¢1mwork¢0m_¢1mdetail ¢0m*¢1mAllocDetail¢0m(), ¢1mFloBase
- ¢0md0 a6
-
- Enqueuing
-
- ¢1mwork¢0m_¢1mdetail¢0m_¢1mnode ¢0m*¢1mAddWork¢0m(¢1mdetail¢0m,¢1mfile¢0m,¢1mflag¢0m), ¢1mFloBase
- ¢0md0 d0 d1 a0 a6
- work_detail *detail;
- char *file;
- int flag;
-
- ¢1mwork¢0m_¢1mdetail¢0m_¢1mnode ¢0m*¢1mAddWorkName¢0m(¢1mdetail¢0m,¢1mfile¢0m,¢1masfile¢0m,¢1mflag¢0m), ¢1mFloBase
- ¢0md0 d0 d1 a0 a1 a6
- work_detail *detail;
- char *file;
- char *asname;
- int flag;
-
- Traversing
-
- ¢1mwork¢0m_¢1mdetail¢0m_¢1mnode ¢0m*¢1mBeginTraverseOldWork¢0m(¢1mdetail¢0m), ¢1mFloBase
- ¢0md0 d0 a6
- work_detail *detail;
-
- ¢1mwork¢0m_¢1mdetail¢0m_¢1mnode ¢0m*¢1mBeginTraverseNewWork¢0m(¢1mdetail¢0m), ¢1mFloBase
- ¢0md0 d0 a6
- work_detail *detail;
-
- ¢1mwork¢0m_¢1mdetail¢0m_¢1mnode ¢0m*¢1mFindWork¢0m(¢1mlastwork¢0m), ¢1mFloBase
- ¢0md0 d0 a6
- work_detail_node *lastwork;
-
- ¢1mvoid EndTraverseWork¢0m(¢1mdetail¢0m), ¢1mFloBase
- ¢0m-- d0 a6
- work_detail *detail;
-
- ¢1mwork¢0m_¢1mdetail¢0m_¢1mnode ¢0m*¢1mBeginTraverseSlowWork¢0m(¢1mdetail¢0m),¢1mFloBase
- ¢0md0 d0 a6
- work_detail *detail;
-
- ¢1mwork¢0m_¢1mdetail¢0m_¢1mnode ¢0m*¢1mNextSlowTraverse¢0m(¢1mdetail¢0m,¢1moldwork¢0m), ¢1mFloBase
-
-
- ¢0m Sandelman Software -1- Rev. 2.2
-
-
- FLOW(3) Welmat Programmers Manual FLOW(3)
-
-
- d0 d0 d1 a6
- work_detail *detail;
- work_detail_node *oldwork;
-
- ¢1mvoid EndTraverseSlowWork¢0m(¢1mdetail¢0m), ¢1mFloBase ¢0m**¢1mOBSOLETE¢0m**
- -- d0 a6
- work_detail *detail;
-
- ¢1mvoid EndTraverseSlowWorkDetail¢0m(¢1mdetail¢0m,¢1moldwork¢0m), ¢1mFloBase
- ¢0m-- d0 d1 a6
- work_detail *detail;
- work_detail_node *oldwork;
-
- Queue rendezvous
-
- ¢1mwork¢0m_¢1mdetail ¢0m*¢1mFindDetail¢0m(¢1maSite¢0m), ¢1mFloBase
- ¢0md0 d0 a6
- site *aSite;
-
-
- Scanning outbound
-
- ¢1mint ScanOutbound¢0m(¢1moutbound¢0m), ¢1mFloBase
- ¢0md0 d0 a6
- char *outbound;
-
-
- ¢1mvoid DumpOutbound¢0m(¢1moutbound¢0m), ¢1mFloBase
- ¢0m-- d0 a6
- char *outbound;
-
-
- ¢1mwork¢0m_¢1mdetail ¢0m*¢1mBeginTraverseOutbound¢0m(), ¢1mFloBase
- ¢0md0 a6
-
- ¢1mwork¢0m_¢1mdetail ¢0m*¢1mFindOutbound¢0m(¢1mdetail¢0m), ¢1mFloBase
- ¢0md0 d0 a6
-
- ¢1mvoid EndTraverseOutbound¢0m(), ¢1mFloBase
- ¢0m-- a6
-
-
- Configuration
-
- ¢1mvoid SetDefaultAddress¢0m(¢1msite¢0m), ¢1mFloBase
- ¢0m-- d0 a6
- site *site;
-
- ¢1msite ¢0m*¢1mGetDefaultAddress¢0m(), ¢1mFloBase
- ¢0md0 a6
-
- ¢1mvoid SetOutbound¢0m(¢1moutbounddir¢0m), ¢1mFloBase
- ¢0m-- d0 a6
- char *outbounddir;
-
- ¢1mchar ¢0m*¢1mGetOutbound¢0m(), ¢1mFloBase
- ¢0md0 a6
-
-
-
- Sandelman Software -2- Rev. 2.2
-
-
- FLOW(3) Welmat Programmers Manual FLOW(3)
-
-
- Miscelaneous
-
- ¢1mint DetailCount¢0m(¢1mdetail¢0m), ¢1mFloBase
- ¢0md0 d0 a6
- work_detail *detail;
-
- ¢1mint DetaaxMinPri¢0m(¢1mdetail¢0m), ¢1mFloBase
- ¢0md0 d0 a6
- work_detail *detail;
-
- ¢1mvoid KillRequest¢0m(¢1mdetail¢0m), ¢1mFloBase
- ¢0m-- d0 a6
- work_detail *detail;
-
- ¢1mint ChangeDetailPri¢0m(¢1mdetail¢0m,¢1mdetail¢0m_¢1mnode¢0m,¢1mpri¢0m)
- d0 d0 d1 a0
- work_detail *detail;
- work_detail_node *detail_node
- int pri;
-
-
-
- ¢1mA Brief Overview
-
- Flow¢0m.¢1mlibrary ¢0m(known as ¢1mflo200¢0m.¢1mlibrary ¢0min revisions
- before 4.0) maintains a queue of outbound files that need to
- be sent to different remote sites. Typically, these sites
- are named within Fidonet-like technology's definition of an
- address: that of domain, zone, net, node and point, but
- there is no structural limitation to keep flow.library from
- being used for other addressing systems.
-
-
- In its library base, a list header is kept (with a
- semaphore to mediate access). Members of this list are of
- type ¢3mwork_detail ¢0mand hold the contents of a single queue.
- All requests for the queue structure for a particular site
- return the same structure. A second semaphore is exists to
- mediate access to the queue contents (hereafter called the
- "work detail")
-
- The actually list of files to be sent is not always
- present in memory, but rather is kept on disk, to be
- retrieved when access to that queue is desired. During the
- initial scanning phase, merely the ¢1mexistance ¢0mof an outbound
- file (file names ending in .FLOW, and if enabled, also
- Opus/Binkley style .xLO files where x is one of F, H, C, or
- D) is noted.
-
- When the work detail's contents are actually accessed,
- the fact that un-read files exist is noted and the
- appropriate file(s) are opened and read in. The queue files
- are either deleted, or if the library is compiled with
- suitable compiler flags, renamed to a harmless name to serve
- as backup.
-
- At this point, the work detail is considered to be
- dirty, and an up-to-date *.¢1mFLOW ¢0mdoes not exist as yet. (The
-
-
- Sandelman Software -3- Rev. 2.2
-
-
- FLOW(3) Welmat Programmers Manual FLOW(3)
-
-
- previous .FLOW file may not be accurate, as things may have
- been added via the 2D .FLO files) After the queue has been
- processed in some way, an eventual call is made to a routine
- that attemps to update the disk version of any modified work
- details. A new .FLOW file is produced if there is something
- to write out. Regardless, the in-memory version continues
- to exist until the library is expunged out of memory.
-
- The next time that a program wants to access the
- outbound queue, it too asks to have to outbound directory
- scanned --- but this time, only Opus/Binkley style 2D files
- are noticed (if this is currently enabled, more on this
- later). The .FLOW files are assumed to be either totally
- resident in memory (in which case reading them in again
- would just produce duplicate queue entries) or at least, to
- already have a work detail header that points to them.
-
- Because changes on the disk to .FLOW files are not paid
- attention to past the first scan, all modifications to the
- queue should be done through ¢1mflow¢0m.¢1mlibrary ¢0mand not by playing
- with the disk. The format of the .FLOW files (while fairly
- simple) is not defined.
-
- However, there still exists lots of software (e.g.
- ConfMail, oMMM, FastPoint, Paragon, etc.), and likely a
- mailer or two that do not support flow.library, and expect
- to be able to produce 2D .?LO files. Since ¢1mflow¢0m.¢1mlibrary
- ¢0munderstands the 2D files, it has no problem managing to send
- them (however, it must make certain assumptions about the
- zone and domain, and the point portion of the address is
- assumed to be zero. The zone is taken from the default
- address supplied to ¢1mflow¢0m.¢1mlibrary¢0m), but programs that wish to
- also read them (old mailers, old packers that do not wish to
- list a compressed bundle twice) must somehow be allowed to
- see .?LO files.
-
- In order to allow .?LO files to exist, unmolested
- (their contents can be deduced from the appropriate work
- detail), a flag exists within ¢1mflow¢0m.¢1mlibrary ¢0mto cause it to
- ignore .?LO files. Unfortunately, ¢1mflow¢0m.¢1mlibrary ¢0msupports
- many options (numeric priorities, rather than antiquated
- notions of 'Crash Mail' versus 'Direct Mail'), and the
- ability to send a given file under a second name, (This
- allows Welmat to make no special provisions for .OUT files,
- or UUCP's remote execution packets (X.*) files. They are
- simply files sent with a given name.) as well as having mail
- for a point, not all of the entries can be translated, so
- only those entries which fit are changed by the ¢1munflow
- ¢0mprogram.
-
- ¢1mTwo Queues
-
- ¢0mOne problem with lists and the like is that programs
- need to be able to traverse them safely, at different
- speeds. A mailer may take fifteen minutes to completely
- traverse the list, but one must still be able to add and
- delete entries from the list. The author doesn't claim to
- have thought of every single case, there are certainly some
-
-
- Sandelman Software -4- Rev. 2.2
-
-
- FLOW(3) Welmat Programmers Manual FLOW(3)
-
-
- esoteric cases that haven't been dealt with, but in order to
- provide the most safety, two methods of traversing the queue
- exist: the fast way, and the slow way.
-
- The Fast Way
-
- The fast way simply locks the whole queue for the
- duration of the search, the traversee effectively owns the
- list, and all other traversees will wait. Traversal of the
- lists this way is assumed to be a very fast search, anything
- that wants to deal with each entry extensively should not
- use it.
-
- The Slow Way
-
- The slower way assumes that something is going to be
- done with each entry (such as sending the file). It does
- not lock the list for the duration of the traversal, only
- while moving from one entry to the next.
-
- The current position in the queue is kept by returning
- the first entry on the ¢3mnew ¢0mlist, and moving it to the tail
- of the ¢3mold ¢0mlist when the traversee moves on to the next
- entry.
-
- During processing, the entry is left on the ¢3mnew ¢0mlist,
- but the ¢1mstatus ¢0mflag is changed to mark this entry as being
- ¢3min-transit. ¢0mWhen processing of this entry is finished, the
- ¢1mstatus ¢0mflag should be set to reflect what has happened to
- the entry, that is, was it sent, was it refused (why),
- etc... Should the entry still be set to ¢3min-transit ¢0mit will
- be reset to ¢3mnot-sent.
-
- ¢0mAfter each traversee finishes the list (and there may
- be more than one program traversing the list), any entries
- on the ¢3mold ¢0mlist that are not of type ¢3msent ¢0mare moved back to
- the ¢3mnew ¢0mlist.
-
-
- ¢1mDetail documentation
-
- ¢0mAllocation
-
- ¢1mvoid FreeWorkNode¢0m(¢1msomework¢0m), ¢1mFloBase
- ¢0m-- d0 a6
- work_detail_node *somework;
-
-
- Frees up a queue entry, getting its size from an
- internal field. Should be rarely called, as most of the
- management is done internally. Returns nothing usefull.
- The argument may be NULL, in which case, nothing is done.
-
-
- ¢1mvoid FreeDetail¢0m(¢1mdetail¢0m), ¢1mFloBase
- ¢0m-- d0 a6
- work_detail *detail;
-
-
-
- Sandelman Software -5- Rev. 2.2
-
-
- FLOW(3) Welmat Programmers Manual FLOW(3)
-
-
- Attempts to free up a ¢1mwork¢0m_¢1mdetail ¢0mstructure. While it
- does not return anything usefull, it may not actually
- succeed in freeing the memory --- this not of importance to
- the caller though. This routine lowers the current use
- count by one (doing appropriate locking) and then, provided
- there are no more users, frees the memory used by the new
- and old queues by calling ¢1mFreeWorkNode ¢0mfor each.
-
- ¢1mwork¢0m_¢1mdetail ¢0m*¢1mAllocDetail¢0m(), ¢1mFloBase
- ¢0md0 a6
-
- Allocates and initialises a ¢1mwork¢0m_¢1mdetail ¢0mstructure. The
- use count is set to zero, and the semaphores are
- initialized. The structure is not placed on ¢1mflow¢0m.¢1mlibrary¢0m'¢1ms
- ¢0mlist. This routine can be used to allocate private
- ¢1mwork¢0m_¢1mdetail ¢0mstructures.
-
- Enqueuing
-
- ¢1mwork¢0m_¢1mdetail¢0m_¢1mnode ¢0m*¢1mAddWork¢0m(¢1mdetail¢0m,¢1mfile¢0m,¢1mflag¢0m), ¢1mFloBase
- ¢0md0 d0 a0 d1 a6
- work_detail *detail;
- char *file;
- int flag;
-
- Adds a ¢1mfile ¢0mname to queue ¢1mdetail ¢0mwith given flag. The
- flag controls what is to be done with the file after it is
- sent. The file's remote name is set to NULL, indicating
- that the remote name should be produced via some relation to
- the local file name (usually just the basename). The ¢1mdetail
- ¢0mwill be faulted into memory if it has not been accessed as
- yet. The memory for the filename is allocated at the end of
- the ¢1mwork¢0m_¢1mdetail¢0m_¢1mnode ¢0mand the total length is recorded, but
- access should be through the pointer, as the structure may
- grow in size.
-
- ¢1mwork¢0m_¢1mdetail¢0m_¢1mnode ¢0m*¢1mAddWorkName¢0m(¢1mdetail¢0m,¢1mfile¢0m,¢1masfile¢0m,¢1mflag¢0m), ¢1mFloBase
- ¢0md0 d0 d1 a0 a1 a6
- work_detail *detail;
- char *file;
- char *asname;
- int flag;
-
- Adds a ¢1mfile ¢0mname to queue ¢1mdetail ¢0mwith given flag. The
- flag controls what is to be done with the file after it is
- sent. The file's remote name is set to ¢1masfile¢0m. The ¢1mdetail
- ¢0mwill be faulted into memory if it has not been accessed as
- yet. The memory for the local filename and remote filename
- is allocated at the end of the ¢1mwork¢0m_¢1mdetail¢0m_¢1mnode ¢0mand the
- total length is recorded, but access should be through the
- pointers, as the structure may grow in size.
-
- Traversing
-
- ¢1mwork¢0m_¢1mdetail¢0m_¢1mnode ¢0m*¢1mBeginTraverseOldWork¢0m(¢1mdetail¢0m), ¢1mFloBase
- ¢0md0 d0 a6
- work_detail *detail;
-
-
-
- Sandelman Software -6- Rev. 2.2
-
-
- FLOW(3) Welmat Programmers Manual FLOW(3)
-
-
- Start traversing the old list part queue of ¢1mdetail¢0m.
- The first entry is returned. A NULL indicates that the list
- is empty. The queue is locked.
-
- ¢1mwork¢0m_¢1mdetail¢0m_¢1mnode ¢0m*¢1mBeginTraverseNewWork¢0m(¢1mdetail¢0m), ¢1mFloBase
- ¢0md0 d0 a6
- work_detail *detail;
-
- Start traversing the new list part queue of ¢1mdetail¢0m.
- The first entry is returned. A NULL indicates that the list
- is empty. The queue is locked. If the queue is not
- (entirely) in memory, this routine will cause the disk files
- to be read. Only AmigaDOS Processes should call this
- routine.
-
- ¢1mwork¢0m_¢1mdetail¢0m_¢1mnode ¢0m*¢1mFindWork¢0m(¢1mlastwork¢0m), ¢1mFloBase
- ¢0md0 d0 a6
- work_detail_node *lastwork;
-
- Find the next queue member in the list that ¢1mlastwork
- ¢0mwas on. The queue is assumed to already be locked by
- ¢1mBeginTraverseNewWork ¢0mor ¢1mBeginTraverseOldWork¢0m. If there are
- no more members in this queue, then this routine returns
- NULL.
-
- ¢1mvoid EndTraverseWork¢0m(¢1mdetail¢0m), ¢1mFloBase
- ¢0m-- d0 a6
- work_detail *detail;
-
- Terminates access to the given queue by unlocking the
- semaphore locked by ¢1mBeginTraverseNewWork ¢0mor
- ¢1mBeginTraverseOldWork¢0m.
-
- ¢1mwork¢0m_¢1mdetail¢0m_¢1mnode ¢0m*¢1mBeginTraverseSlowWork¢0m(¢1mdetail¢0m),¢1mFloBase
- ¢0md0 d0 a6
- work_detail *detail;
-
- Starts access the the ¢1mdetail ¢0mthrough the ¢3mslow
- ¢0mmechanism. This routine attempts to find an entry in the
- ¢3mnew ¢0mqueue which is not currently being sent, and marks it as
- being sent and returns it. NULL is returned if there is no
- such entry. This routines calls ¢1mBeginTraverseNewWork ¢0min
- order to examine the queue, and therefore can cause disk
- I/O.
-
- In order to prevent the queue and entries from being
- freed, the use count is incremented.
-
- ¢1mwork¢0m_¢1mdetail¢0m_¢1mnode ¢0m*¢1mNextSlowTraverse¢0m(¢1mdetail¢0m,¢1moldwork¢0m), ¢1mFloBase
- ¢0md0 d0 d1 a6
- work_detail *detail;
- work_detail_node *oldwork;
-
- Removes ¢1moldwork ¢0mfrom its queue and places it on the ¢3mold
- ¢0mqueue of ¢1mdetail¢0m. If the status is still ¢3min-transit ¢0mthen it
- is changed to be ¢3mnot-sent. ¢0mThe next entry in the ¢3mnew ¢0mqueue
- is found returned by calling ¢1mBeginTraverseSlowWork
- ¢0minternally.
-
-
- Sandelman Software -7- Rev. 2.2
-
-
- FLOW(3) Welmat Programmers Manual FLOW(3)
-
-
- ¢1mvoid EndTraverseSlowWork¢0m(¢1mdetail¢0m), ¢1mFloBase
- ¢0m-- d0 a6
- work_detail *detail;
-
- OBSOLETE: it terminates access to the queue when there
- are NO outstanding in-transit entries, such as when
- ¢1mNextSlowTraverse ¢0mreturns NULL because the end of the queue
- has been reached.
-
- This function is equivalent to
- ¢1mEndTraverseSlowWorkDetail¢0m(¢1mdetail¢0m,N and exists for
- backward compatibility.
-
- ¢1mvoid EndTraverseSlowWorkDetail¢0m(¢1mdetail¢0m,¢1moldwork¢0m), ¢1mFloBase
- ¢0m-- d0 d1 a6
- work_detail *detail;
- work_detail_node *oldwork;
-
- Terminates slow access to ¢1mdetail ¢0mand replaces the work
- entry ¢1moldwork¢0m.
-
- This function replaces ¢1mEndTraverseSlowWork ¢0mfor cases
- where the traversee may need to stop traversing before
- reaching the end of the queue. This routine is new to
- version 2.20 of ¢1mflow¢0m.¢1mlibrary ¢0mWithout it, entries could be
- left stranded as being perpectually ¢3min-transit ¢0mand would
- never be processed. As an interim fix, the I/O routines
- will NOT output a queue entry that is marked as ¢3min-transit
- ¢0mbut will force the file to say ¢3mnot-sent ¢0minstead.
-
- The use count of this queue is decremented.
-
- Queue rendezvous
-
- ¢1mwork¢0m_¢1mdetail ¢0m*¢1mFindDetail¢0m(¢1maSite¢0m), ¢1mFloBase
- ¢0md0 d0 a6
- site *aSite;
-
- Searches for a ¢1mwork¢0m_¢1mdetail ¢0mon ¢1mflow¢0m.¢1mlibrary¢0m'¢1ms ¢0mmain
- outbound list that matches the information given by ¢1maSite¢0m.
- If the entry is NOT found, then a new one is allocated using
- ¢1mAllocDetail ¢0mand it is added to the outbound list. The use
- count is set to one (1) to prevent it from being freed.
-
- Scanning outbound
-
- ¢1mint ScanOutbound¢0m(¢1moutbound¢0m), ¢1mFloBase
- ¢0md0 d0 a6
- char *outbound;
-
- Causes ¢1mflow¢0m.¢1mlibrary ¢0mto scan the given outbound
- directory. If ¢1moutbound ¢0mis NULL, then the default outbound
- directory is used. If the passed string is NOT the same as
- the default outbound directory, then the default is updated
- to be this value.
-
- The number of files found is returned.
-
-
-
- Sandelman Software -8- Rev. 2.2
-
-
- FLOW(3) Welmat Programmers Manual FLOW(3)
-
-
- ¢1mvoid DumpOutbound¢0m(¢1moutbound¢0m), ¢1mFloBase
- ¢0m-- d0 a6
- char *outbound;
-
- Searches the outbound list to find details that need
- their disk counterparts updated (indicated by the a dirty
- flag). If necessary, the detail is written to disk, and the
- dirty flag reset. An attempt is made to free the memory
- used with ¢1mFreeDetail¢0m. This currently fails, as more garbage
- collection has done been implemented yet.
-
- ¢1mwork¢0m_¢1mdetail ¢0m*¢1mBeginTraverseOutbound¢0m(), ¢1mFloBase
- ¢0md0 a6
-
- Gives access to the outbound list to a client program.
- Returns the first detail found, or NULL if there are none.
- The ¢1mFloBase ¢0mis locked during this time which prevents other
- from searching this list, but does not prevent those
- traversing a detail from continuing. IN order to prevent
- deadlock, this routine should never be called while one or
- more detail is currently locked on your behalf.
-
- ¢1mwork¢0m_¢1mdetail ¢0m*¢1mFindOutbound¢0m(¢1mdetail¢0m), ¢1mFloBase
- ¢0md0 d0 a6
-
- Steps to the next entry in the outbound list. Returns
- NULL at the end.
-
- ¢1mvoid EndTraverseOutbound¢0m(), ¢1mFloBase
- ¢0m-- a6
-
- Unlocks ¢1mFloBase ¢0mat the end of a traversal.
-
- Configuration
-
- ¢1mvoid SetDefaultAddress¢0m(¢1maSite¢0m), ¢1mFloBase
- ¢0m-- d0 a6
- site *aSite;
-
- Sets ¢1mflow¢0m.¢1mlibrary¢0m'¢1ms ¢0midea of its address to the values
- found in ¢1maSite¢0m. The only value of great interest to it is
- the default zone number that should be added to 2D
- addresses.
-
- The site structure is copied into the ¢1mFloBase¢0m, and the
- domain name string is duplicated if necessary.
-
- ¢1msite ¢0m*¢1mGetDefaultAddress¢0m(), ¢1mFloBase
- ¢0md0 a6
-
- Returns a pointer to the stored default site
- structure.
-
- ¢1mvoid SetOutbound¢0m(¢1moutbounddir¢0m), ¢1mFloBase
- ¢0m-- d0 a6
- char *outbounddir;
-
-
-
-
- Sandelman Software -9- Rev. 2.2
-
-
- FLOW(3) Welmat Programmers Manual FLOW(3)
-
-
- Sets ¢1mflow¢0m.¢1mlibrary ¢0mdefault outbound directory.
-
- ¢1mchar ¢0m*¢1mGetOutbound¢0m(), ¢1mFloBase
- ¢0md0 a6
-
- Returns ¢1mflow¢0m.¢1mlibrary¢0m'¢1ms ¢0midea of what the current
- outbound directory is.
-
- Miscelaneous
-
- ¢1mint DetailCount¢0m(¢1mdetail¢0m), ¢1mFloBase
- ¢0md0 d0 a6
- work_detail *detail;
-
- Counts the number of entries in the detail. As a side
- effect, it determines what the lowest value of ¢1mdt¢0m_¢1mminCost ¢0mis
- and sets a flag indicating that the stored value is
- correct.
-
- ¢1mvoid KillRequest¢0m(¢1mdetail¢0m), ¢1mFloBase
- ¢0m-- d0 a6
- work_detail *detail;
-
- Removes any entries of type ¢3mDT_REQUEST ¢0mfrom the queue.
-
- ¢1mint ChangeDetailPri¢0m(¢1mdetail¢0m,¢1mdetail¢0m_¢1mnode¢0m,¢1mpri¢0m)
- d0 d0 a0 d1
- work_detail *detail;
- work_detail_node *detail_node
- int pri;
-
- Changes the minimum cost field before this file will
- (in theory) be sent. Direct manipulation of the cost field
- is not recommended, as the entry really needs to be
- de-queued and then requeued in order to keep the order
- correct. However, since this is the very operation that is
- happening during a slow traversal, this routine may be
- skipped.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sandelman Software -10- Rev. 2.2
-
-