mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 01:30:22 +00:00
These samples were taken from the paper "Flux: A Language for Programming High-Performance Servers", by Burns et al and Flux V0.02 which can be found here: https://plasma.cs.umass.edu/emery/flux.1.html
39 lines
1017 B
HLSL
39 lines
1017 B
HLSL
// concrete node signatures
|
|
Listen ()
|
|
=> (int socket);
|
|
|
|
ReadRequest (int socket)
|
|
=> (int socket, bool close, image_tag *request);
|
|
|
|
CheckCache (int socket, bool close, image_tag *request)
|
|
=> (int socket, bool close, image_tag *request);
|
|
|
|
// omitted for space:
|
|
// ReadInFromDisk, StoreInCache
|
|
Compress (int socket, bool close, image_tag *request, __u8 *rgb_data)
|
|
=> (int socket, bool close, image_tag *request);
|
|
Write (int socket, bool close, image_tag *request)
|
|
=> (int socket, bool close, image_tag *request);
|
|
Complete (int socket, bool close, image_tag *request) => ();
|
|
|
|
// source node
|
|
source Listen => Image;
|
|
|
|
// abstract node
|
|
Image = ReadRequest -> CheckCache -> Handler -> Write -> Complete;
|
|
|
|
// predicate type & dispatch
|
|
typedef hit TestInCache;
|
|
Handler:[_, _, hit] = ;
|
|
Handler:[_, _, _] =
|
|
ReadInFromDisk -> Compress -> StoreInCache;
|
|
|
|
// error handler
|
|
handle error ReadInFromDisk => FourOhFor;
|
|
|
|
// atomicity constraints
|
|
atomic CheckCache:{cache};
|
|
atomic StoreInCache:{cache};
|
|
atomic Complete:{cache};
|
|
|