// if isReadable = true
// then the server is ready to read
if (key.isReadable())
{
Message message = new Message();
String keyName = null;
String valueData = null;
SocketChannel client = (SocketChannel) key.channel();
int BUFFER_SIZE = 2;
ByteBuffer buffer = ByteBuffer.allocate(BUFFER_SIZE);
// Read byte coming from the MemcacheClient
try
{
client.read(buffer);
buffer.flip();
CharBuffer charBuffer = decoder.decode(buffer);
int noOfParams = Integer.parseInt(charBuffer
.toString());
for (int i = 0; i < noOfParams; i++)
{
// KeyLength
ByteBuffer lengthOfKey = ByteBuffer
.allocate(LENGTH);
client.read(lengthOfKey);
lengthOfKey.flip();
CharBuffer keyCharBuffer = decoder
.decode(lengthOfKey);
int keyLength = Integer.parseInt(keyCharBuffer
.toString());
// KeyName
ByteBuffer keyNameBuffer = ByteBuffer
.allocate(keyLength);
client.read(keyNameBuffer);
keyNameBuffer.flip();
CharBuffer keyNameCharBuffer = decoder
.decode(keyNameBuffer);
keyName = keyNameCharBuffer.toString();
// ValueLength
ByteBuffer lengthOfValue = ByteBuffer
.allocate(LENGTH);
client.read(lengthOfValue);
lengthOfValue.flip();
CharBuffer valueCharBuffer = decoder
.decode(lengthOfValue);
int valueLength = Integer
.parseInt(valueCharBuffer.toString());
// ValueData
ByteBuffer valueNameBuffer = ByteBuffer
.allocate(valueLength);
client.read(valueNameBuffer);
valueNameBuffer.flip();
CharBuffer valueNameCharBuffer = decoder
.decode(valueNameBuffer);
valueData = valueNameCharBuffer.toString();
message.put(keyName, valueData);
}
String processName = (String) message.get("action");
KorusRuntime.send(processName,message,KorusRuntime.getExecutionMode());
}
catch (Exception e)
{