mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50: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};
 | 
						|
 |