package test.interop.miop_tao_interop;
import java.util.Arrays;
import java.util.HashMap;
public class UIPMCObjectImpl extends UIPMC_ObjectPOA
{
private int payload;
private int clients;
private Integer calls;
private HashMap received;
public UIPMCObjectImpl (int payload, int clients, int calls)
{
this.payload = payload;
this.clients = clients;
this.calls = calls;
this.received = new HashMap();
}
public void final_check()
{
if (this.received.size() == 0)
{
System.err.println("ERROR: expected " + this.clients
+ " clients but only " + this.received.size()
+ " encountered");
return;
}
for (int i = 0; i < this.clients; ++i)
{
Integer count = (Integer) this.received.get((byte) ClientIDs.value.charAt(i));
if (count == null) count = 0;
if (count != this.calls)
// This perfectly ok for MIOP to lose messages.
// So, this is not an error.
System.out.println("DEBUG: expected " + this.calls
+ " messages from '" + ClientIDs.value.charAt(i)
+ "' client but only " + count + " encountered");
}
}
public void process(byte[] payload)
{
if (this.payload != payload.length)
{
System.err.println("ERROR: expected " + this.payload
+ " but received " + payload.length + " sequence length");
return;
}
byte c = payload[0];
Integer count = (Integer) this.received.get(c);
if (count == null) count = 0;
byte[] seq = new byte[this.payload];
Arrays.fill(seq, c);
if (!Arrays.equals(seq, payload))
{
System.err.println("ERROR: received malformed message from client '"
+ c + "'");
return;
}
if (!ClientIDs.value.contains(String.valueOf((char) c)))
{
System.err.println("ERROR: client id '" + c
+ "' doesn't match any known value");
return;
}
++count;
this.received.put(c, count);
}
}