X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/fwd/blobdiff_plain/755e6619263d316dc46fa504e0c333c963ec8eaa..57ceb980e3c55306f3f70f92604703abf132cf27:/fwd.h diff --git a/fwd.h b/fwd.h index f075c53..e295c8b 100644 --- a/fwd.h +++ b/fwd.h @@ -899,6 +899,7 @@ typedef struct endpt_ops { typedef struct target { struct target_ops *ops; + unsigned ref; char *desc; } target; @@ -973,9 +974,13 @@ typedef struct target_ops { typedef struct source { struct source *next, *prev; struct source_ops *ops; + unsigned ref; + unsigned f; +#define SF_ACTIVE 1u char *desc; } source; + /* --- Forwarding source operations --- */ typedef struct source_ops { @@ -1019,6 +1024,18 @@ typedef struct source_ops { void (*attach)(source */*s*/, scanner */*sc*/, target */*t*/); + /* --- @shutdown@ --- * + * + * Arguments: @source *s@ = pointer to source + * + * Returns: --- + * + * Use: Deactivates the source so that it won't produce any more + * endpoints. + */ + + void (*shutdown)(source */*s*/); + /* --- @destroy@ --- * * * Arguments: @source *s@ = pointer to source @@ -1078,6 +1095,28 @@ extern void endpt_killall(void); extern void endpt_join(endpt */*a*/, endpt */*b*/, const char */*desc*/); +/* --- @target_inc@ --- * + * + * Arguments: @target *t@ = pointer to a source + * + * Returns: --- + * + * Use: Increments a target's refcount. + */ + +extern void target_inc(target */*t*/); + +/* --- @target_dec@ --- * + * + * Arguments: @target *t@ = pointer to a target + * + * Returns: --- + * + * Use: Decrements a target's refcount, destroying it if necessary. + */ + +extern void target_dec(target */*t*/); + /* --- @source_add@ --- * * * Arguments: @source *s@ = pointer to a source @@ -1102,6 +1141,28 @@ extern void source_add(source */*s*/); extern void source_remove(source */*s*/); +/* --- @source_inc@ --- * + * + * Arguments: @source *s@ = pointer to a source + * + * Returns: --- + * + * Use: Increments a source's refcount. + */ + +extern void source_inc(source */*s*/); + +/* --- @source_dec@ --- * + * + * Arguments: @source *s@ = pointer to a source + * + * Returns: --- + * + * Use: Decrements a source's refcount, destroying it if necessary. + */ + +extern void source_dec(source */*s*/); + /* --- @source_killall@ --- * * * Arguments: ---