PreviousUpNext

15.3.373  src/lib/src/lib/thread-kit/src/core-thread-kit/maildrop.api

## maildrop.api
#
# These are essentially concurrency-safe REF cells.
#
# See also:
#
#     src/lib/src/lib/thread-kit/src/core-thread-kit/oneshot-maildrop.api

# Compiled by:
#     src/lib/std/standard.lib





stipulate
    package mop =  mailop;                                                      # mailop        is from   src/lib/src/lib/thread-kit/src/core-thread-kit/mailop.pkg
herein

    # This api is implemented in:
    #
    #     src/lib/src/lib/thread-kit/src/core-thread-kit/maildrop.pkg
    #
    api Maildrop {
        #
        Maildrop(X);

        exception  MAY_NOT_FILL_ALREADY_FULL_MAILDROP;

        make_empty_maildrop:            Void -> Maildrop(X);                            # Construct maildrop which initially has no value.
        make_maildrop:                  X    -> Maildrop(X);                            # Construct maildrop which initially has given value X.
                                                                                        # We could equally well collapse these two into just   make_maildrop: Null_Or(X) -> Maildrop(X);   but whatever.
        put_in_maildrop:                (Maildrop(X), X) -> Void;
        take_from_maildrop:             Maildrop(X) -> X;

        take_from_maildrop':            Maildrop(X) -> mop::Mailop(X);

        nonblocking_take_from_maildrop: Maildrop(X) -> Null_Or(X);

        peek_in_maildrop:               Maildrop(X) -> X;
        peek_in_maildrop':              Maildrop(X) -> mop::Mailop(X);

        nonblocking_peek_in_maildrop:   Maildrop(X) -> Null_Or(X);

        maildrop_swap:                  (Maildrop(X), X) -> X;
        maildrop_swap':                 (Maildrop(X), X) -> mop::Mailop(X);

        same_maildrop:                  (Maildrop(X), Maildrop(X)) -> Bool;
    };
end;

## COPYRIGHT (c) 1989-1991 John H. Reppy
## COPYRIGHT (c) 1995 AT&T Bell Laboratories.
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2013,
## released per terms of SMLNJ-COPYRIGHT.


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext