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
		
			
				
	
	
		
			152 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			HLSL
		
	
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			HLSL
		
	
	
	
	
	
typedef choke TestChoke;
 | 
						|
typedef unchoke TestUnchoke;
 | 
						|
typedef interested TestInterested;
 | 
						|
typedef uninterested TestUninterested;
 | 
						|
typedef request TestRequest;
 | 
						|
typedef cancel TestCancel;
 | 
						|
typedef piece TestPiece;
 | 
						|
typedef bitfield TestBitfield;
 | 
						|
typedef have TestHave;
 | 
						|
typedef piececomplete TestPieceComplete;
 | 
						|
 | 
						|
CheckinWithTracker (torrent_data_t *tdata)
 | 
						|
    => ();
 | 
						|
 | 
						|
SendRequestToTracker (torrent_data_t *tdata)
 | 
						|
    => (torrent_data_t *tdata, int socket);
 | 
						|
    
 | 
						|
GetTrackerResponse (torrent_data_t *tdata, int socket)
 | 
						|
    => ();
 | 
						|
 | 
						|
UpdateChokeList (torrent_data_t *tdata)
 | 
						|
    => ();
 | 
						|
 | 
						|
PickChoked (torrent_data_t *tdata)
 | 
						|
    => (torrent_data_t *tdata, chokelist_t clist);
 | 
						|
    
 | 
						|
SendChokeUnchoke (torrent_data_t *tdata, chokelist_t clist)
 | 
						|
    => ();
 | 
						|
    
 | 
						|
SetupConnection (torrent_data_t *tdata, int socket)
 | 
						|
    => ();
 | 
						|
    
 | 
						|
Handshake (torrent_data_t *tdata, int socket)
 | 
						|
    => (torrent_data_t *tdata, client_data_t *client);
 | 
						|
    
 | 
						|
SendBitfield (torrent_data_t *tdata, client_data_t *client)
 | 
						|
    => ();
 | 
						|
 | 
						|
Message (torrent_data_t *tdata, client_data_t *client)
 | 
						|
    => ();
 | 
						|
    
 | 
						|
ReadMessage (torrent_data_t *tdata, client_data_t *client)
 | 
						|
    => (torrent_data_t *tdata, client_data_t *client, int type, int length, char *payload);
 | 
						|
    
 | 
						|
HandleMessage (torrent_data_t *tdata, client_data_t *client, int type, int length, char *payload)
 | 
						|
    => (client_data_t *client);
 | 
						|
    
 | 
						|
MessageDone (client_data_t *client)
 | 
						|
    => ();
 | 
						|
    
 | 
						|
CompletePiece (torrent_data_t *tdata, client_data_t *client, int piece)
 | 
						|
    => (torrent_data_t *tdata, client_data_t *client);
 | 
						|
 | 
						|
VerifyPiece (torrent_data_t *tdata, client_data_t *client, int piece)
 | 
						|
    => (torrent_data_t *tdata, client_data_t *client, int piece);
 | 
						|
 | 
						|
SendHave (torrent_data_t *tdata, client_data_t *client, int piece)
 | 
						|
    => (torrent_data_t *tdata, client_data_t *client);
 | 
						|
 | 
						|
SendUninterested (torrent_data_t *tdata, client_data_t *client)
 | 
						|
    => (torrent_data_t *tdata, client_data_t *client);
 | 
						|
    
 | 
						|
Choke (torrent_data_t *tdata, client_data_t *client, int type, int length, char *payload)
 | 
						|
    => (client_data_t *client);
 | 
						|
    
 | 
						|
Cancel (torrent_data_t *tdata, client_data_t *client, int type, int length, char *payload)
 | 
						|
    => (client_data_t *client);
 | 
						|
 | 
						|
Interested (torrent_data_t *tdata, client_data_t *client, int type, int length, char *payload)
 | 
						|
    => (client_data_t *client);
 | 
						|
 | 
						|
Uninterested (torrent_data_t *tdata, client_data_t *client, int type, int length, char *payload)
 | 
						|
    => (client_data_t *client);
 | 
						|
 | 
						|
Bitfield (torrent_data_t *tdata, client_data_t *client, int type, int length, char *payload)
 | 
						|
    => (client_data_t *client);
 | 
						|
 | 
						|
Unchoke (torrent_data_t *tdata, client_data_t *client, int type, int length, char *payload)
 | 
						|
    => (torrent_data_t *tdata, client_data_t *client);
 | 
						|
 | 
						|
SendRequest (torrent_data_t *tdata, client_data_t *client)
 | 
						|
    => (client_data_t *client);
 | 
						|
 | 
						|
Have (torrent_data_t *tdata, client_data_t *client, int type, int length, char *payload)
 | 
						|
    => (torrent_data_t *tdata, client_data_t *client);
 | 
						|
 | 
						|
Piece (torrent_data_t *tdata, client_data_t *client, int type, int length, char *payload)
 | 
						|
    => (torrent_data_t *tdata, client_data_t *client, int piece);
 | 
						|
 | 
						|
Request (torrent_data_t *tdata, client_data_t *client, int type, int length, char *payload)
 | 
						|
    => (client_data_t *client);
 | 
						|
    
 | 
						|
SendKeepAlives (torrent_data_t *tdata)
 | 
						|
    => ();
 | 
						|
 | 
						|
GetClients () 
 | 
						|
    => (int maxfd, fd_set *fds);
 | 
						|
 | 
						|
SelectSockets (int maxfd, fd_set *fds)
 | 
						|
    => (fd_set *fds);
 | 
						|
 | 
						|
CheckSockets (fd_set *fds)
 | 
						|
    => (torrent_data_t *tdata, client_data_t *client);
 | 
						|
 | 
						|
TrackerTimer () 
 | 
						|
    => (torrent_data_t *tdata);
 | 
						|
 | 
						|
ChokeTimer ()
 | 
						|
    => (torrent_data_t *tdata);
 | 
						|
 | 
						|
Connect ()
 | 
						|
    => (torrent_data_t *tdata, int socket);
 | 
						|
 | 
						|
KeepAliveTimer ()
 | 
						|
    => (torrent_data_t *tdata);
 | 
						|
 | 
						|
Listen ()
 | 
						|
    => (torrent_data_t *tdata, client_data_t *client);
 | 
						|
 | 
						|
source TrackerTimer => CheckinWithTracker;
 | 
						|
source ChokeTimer => UpdateChokeList;
 | 
						|
source Connect => SetupConnection;
 | 
						|
source Listen => Message;
 | 
						|
source KeepAliveTimer => SendKeepAlives;
 | 
						|
 | 
						|
Listen = GetClients -> SelectSockets -> CheckSockets;
 | 
						|
CheckinWithTracker = SendRequestToTracker -> GetTrackerResponse;
 | 
						|
UpdateChokeList = PickChoked -> SendChokeUnchoke;
 | 
						|
SetupConnection = Handshake -> SendBitfield;
 | 
						|
Message = ReadMessage -> HandleMessage -> MessageDone;
 | 
						|
 | 
						|
CompletePiece:[_, _, piececomplete] = VerifyPiece -> SendHave -> SendUninterested;
 | 
						|
 | 
						|
HandleMessage:[_, _, choke, _, _] = Choke;
 | 
						|
HandleMessage:[_, _, unchoke, _, _] = Unchoke -> SendRequest;
 | 
						|
HandleMessage:[_, _, interested, _, _] = Interested;
 | 
						|
 | 
						|
HandleMessage:[_, _, uninterested, _, _] = Uninterested;
 | 
						|
HandleMessage:[_, _, request, _, _] = Request;
 | 
						|
HandleMessage:[_, _, cancel, _, _] = Cancel;
 | 
						|
HandleMessage:[_, _, piece, _, _] = Piece -> CompletePiece -> SendRequest;
 | 
						|
HandleMessage:[_, _, bitfield, _, _] = Bitfield;
 | 
						|
HandleMessage:[_, _, have, _, _] = Have -> SendRequest;
 | 
						|
 | 
						|
atomic GetClients:{BigLock};
 | 
						|
atomic CheckSockets:{BigLock};
 | 
						|
atomic Message:{BigLock};
 | 
						|
atomic CheckinWithTracker:{BigLock};
 | 
						|
atomic UpdateChokeList:{BigLock};
 | 
						|
atomic SetupConnection:{BigLock};
 | 
						|
atomic SendKeepAlives:{BigLock};
 |