0; // Temperature, 3 digits
// Control state
public static Socket serverSocket = Socket.None;
public static Socket clientSocket = Socket.None;
public static Phase phase = Phase.Send;
// Data state
public static double clientBuffer = EmptyBuffer;
// Server enabling conditions and actions
public static bool ServerSocketEnabled()
{
return (serverSocket == Socket.None);
}
[Action]
public static void ServerSocket()
{
serverSocket = Socket.Created;
}
public static bool ServerBindEnabled()
{
return (serverSocket == Socket.Created);
}
[Action]
public static void ServerBind()
{
serverSocket = Socket.Bound;
}
Figure 5.7. Remote instrument client/server: model program (part 1).
Systems with Finite Models 77
// ... continued
public static bool ServerListenEnabled()
{
return (serverSocket == Socket.Bound);
}
[Action]
public static void ServerListen()
{
serverSocket = Socket.Listening;
}
public static bool ServerAcceptEnabled()
{
return (serverSocket == Socket.Listening
&& clientSocket == Socket.Connecting);
}
[Action]
public static void ServerAccept()
{
serverSocket = Socket.Connected; clientSocket = Socket.Connected;
}
public static bool ServerReceiveEnabled()
{
return (serverSocket == Socket.Connected
&& phase == Phase.ServerReceive);
}
// No parameter needed here, client always sends same thing
[Action]
public static void ServerReceive()
{
phase = Phase.
Pages:
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125