Package org.deftserver.example.kv

Source Code of org.deftserver.example.kv.KeyValueStoreClient$WriteCallback

package org.deftserver.example.kv;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey;
import java.nio.channels.SocketChannel;

import org.deftserver.io.AsynchronousSocket;
import org.deftserver.io.IOLoop;
import org.deftserver.web.AsyncCallback;
import org.deftserver.web.AsyncResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class KeyValueStoreClient {
 
  private final static Logger logger = LoggerFactory.getLogger(KeyValueStoreClient.class);
 
  private AsynchronousSocket socket;
  private SocketChannel channel;
  private final String host;
  private final int port;
 
  public KeyValueStoreClient(String host, int port) {
    this.host = host;
    this.port = port;
  }

  public void connect() {
    try {
      channel = SocketChannel.open(new InetSocketAddress(host, port));
      channel.configureBlocking(false);
    } catch (IOException e) { e.printStackTrace(); }
    socket = new AsynchronousSocket(channel);
    IOLoop.INSTANCE.addHandler(channel, socket, SelectionKey.OP_READ, ByteBuffer.allocate(1024));
  }
 
  public void get(String value, AsyncResult<String> cb) {
    socket.write("GET deft\r\n", new WriteCallback(cb));
  }
 
  private class WriteCallback implements AsyncCallback {

    private final AsyncResult<String> cb;
   
    public WriteCallback(AsyncResult<String> cb) {
      this.cb = cb;
    }
   
    @Override
    public void onCallback() {
      // write is finished. read response from server
      logger.debug("readUntil: \r\n");
      socket.readUntil("\r\n", cb);
    }
   
  }
 
}
TOP

Related Classes of org.deftserver.example.kv.KeyValueStoreClient$WriteCallback

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.