global protocol HTTP(role Client, role Proxy1, role Proxy2, role Server)
{
OpenTCPConnection() from Client to Proxy1;
OpenTCPConnection() from Proxy1 to Proxy2;
OpenTCPConnection() from Proxy2 to Server;
choice at Server
{
Fail() from Server to Proxy2;
Fail() from Proxy2 to Proxy1;
Fail() from Proxy1 to Client;
} or {
Success() from Server to Proxy2;
Success() from Proxy2 to Proxy1;
Success() from Proxy1 to Client;
rec Loop {
choice at Client
{
RequestGet() from Client to Proxy1;
RequestGet() from Proxy1 to Proxy2;
RequestGet() from Proxy2 to Server;
choice at Server
{
Response200() from Server to Proxy2;
Response200() from Proxy2 to Proxy1;
Response200() from Proxy1 to Client;
continue Loop;
} or {
Response404() from Server to Proxy2;
Response404() from Proxy2 to Proxy1;
Response404() from Proxy1 to Client;
continue Loop;
} or {
Response418() from Server to Proxy2;
Response418() from Proxy2 to Proxy1;
Response418() from Proxy1 to Client;
continue Loop;
}
} or {
RequestPut() from Client to Proxy1;
RequestPut() from Proxy1 to Proxy2;
RequestPut() from Proxy2 to Server;
choice at Server
{
Response200() from Server to Proxy2;
Response200() from Proxy2 to Proxy1;
Response200() from Proxy1 to Client;
continue Loop;
} or {
Response404() from Server to Proxy2;
Response404() from Proxy2 to Proxy1;
Response404() from Proxy1 to Client;
continue Loop;
} or {
Response418() from Server to Proxy2;
Response418() from Proxy2 to Proxy1;
Response418() from Proxy1 to Client;
continue Loop;
}
} or {
RequestPost() from Client to Proxy1;
RequestPost() from Proxy1 to Proxy2;
RequestPost() from Proxy2 to Server;
choice at Server
{
Response200() from Server to Proxy2;
Response200() from Proxy2 to Proxy1;
Response200() from Proxy1 to Client;
continue Loop;
} or {
Response404() from Server to Proxy2;
Response404() from Proxy2 to Proxy1;
Response404() from Proxy1 to Client;
continue Loop;
} or {
Response418() from Server to Proxy2;
Response418() from Proxy2 to Proxy1;
Response418() from Proxy1 to Client;
continue Loop;
}
} or {
Close() from Client to Proxy1;
Close() from Proxy1 to Proxy2;
Close() from Proxy2 to Server;
}
}
}
}