Mercurial > hg > Database > Christie
view src/main/java/christie/daemon/IncomingTcpConnection.java @ 13:bcd4f2c19185
don't work MessagePack unconvert for remote put
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 10 Jan 2018 20:37:47 +0900 |
parents | b49a926cbdd9 |
children | f2b30b47ef67 |
line wrap: on
line source
package christie.daemon; import christie.codegear.CodeGearManager; import christie.codegear.Command; import christie.codegear.CommandType; import christie.datagear.DataGear; import christie.datagear.RemoteDataGearManager; import org.msgpack.MessagePack; import org.msgpack.unpacker.Unpacker; import java.io.IOException; import java.nio.channels.ClosedChannelException; import java.util.concurrent.ConcurrentHashMap; public class IncomingTcpConnection extends Thread { ConcurrentHashMap<String, CodeGearManager> cgms; Connection connection; private static final MessagePack packer = new MessagePack(); public IncomingTcpConnection(Connection connection, CodeGearManager cgm) { this.cgms = cgm.getCgms(); this.connection = connection; } public void run() { Unpacker unpacker = null; try { unpacker = packer.createUnpacker(connection.socket.getInputStream()); } catch (IOException e) { e.printStackTrace(); } if (unpacker == null) { return; } while (true) { try { Command cmd = null; DataGear dg = null; RemoteMessage msg = unpacker.read(RemoteMessage.class); CommandType type = CommandType.getCommandTypeFromId(msg.type); int dataSize = unpacker.readInt(); byte[] data = new byte[dataSize]; switch (type) { case PUT: connection.socket.getInputStream().read(data); try { cgms.get(msg.cgmName).getDGM().put(msg.key, new DataGear(data, Class.forName(msg.clazz))); } catch (ClassNotFoundException e) { e.printStackTrace(); } break; /* case PEEK: case TAKE: cmd = new Command(null, dg, null, null, null); break; case REPLY: connection.socket.getInputStream().read(data); dg = new DataGear(data, data.getClass()); Command rCmd = new Command(null, dg, null, null, null); //cmd.cg.idg.reply(cmd.dg, rCmd); break;*/ default: break; } } catch (ClosedChannelException e) { return; } catch (IOException e) { e.printStackTrace(); } } } }