mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +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
55 lines
1.5 KiB
HLSL
55 lines
1.5 KiB
HLSL
typedef engine isEngineMessage;
|
|
typedef turn isTurnMessage;
|
|
typedef connect isConnectMessage;
|
|
typedef disconnect isDisconnectMessage;
|
|
|
|
ClientMessage(char* data) => ();
|
|
ParseMessage(char* data) => (int type, int client, char* data);
|
|
ReadMessage(int type, int client, char* data) => ();
|
|
|
|
ParseEngine(int type, int client, char* data) => (int client, int direction);
|
|
DoEngine(int client, int direction) => ();
|
|
|
|
ParseTurn(int type, int client, char* data) => (int client, int direction);
|
|
DoTurn(int client, int direction) => ();
|
|
|
|
ParseConnect(int type, int client, char* data)
|
|
=> (int client, char* host, int port);
|
|
DoConnect(int client, char* host, int port) => ();
|
|
|
|
ParseDisconnect(int type, int client, char* data) => (int client);
|
|
DoDisconnect(int client) => ();
|
|
|
|
UpdateBoard(ClientList clients) => (ClientList clients);
|
|
SendData(ClientList clients) => ();
|
|
|
|
DoUpdate(ClientList clients) => ();
|
|
|
|
DataTimer() => (ClientList clients);
|
|
|
|
GetClients() => (ClientList clients);
|
|
|
|
Wait(ClientList clients) => (ClientList clients);
|
|
|
|
Listen () => (char* data);
|
|
|
|
source Listen => ClientMessage;
|
|
source DataTimer => DoUpdate;
|
|
|
|
DataTimer = GetClients -> Wait;
|
|
|
|
DoUpdate = UpdateBoard -> SendData;
|
|
|
|
ClientMessage=ParseMessage -> ReadMessage;
|
|
|
|
ReadMessage:[engine, _, _] = ParseEngine -> DoEngine;
|
|
ReadMessage:[turn, _, _] = ParseTurn -> DoTurn;
|
|
ReadMessage:[connect, _, _] = ParseConnect -> DoConnect;
|
|
ReadMessage:[disconnect, _, _] = ParseDisconnect -> DoDisconnect;
|
|
|
|
atomic GetClients:{client_lock};
|
|
atomic DoConnect:{client_lock};
|
|
atomic DoDisconnect:{client_lock};
|
|
|
|
|