package org.smartly.commons.network.socket.server.handlers.impl;
import org.smartly.commons.network.socket.messages.multipart.MultipartInfo;
import org.smartly.commons.network.socket.messages.multipart.MultipartMessagePart;
import org.smartly.commons.network.socket.server.handlers.AbstractSocketHandler;
import org.smartly.commons.network.socket.server.handlers.SocketRequest;
import org.smartly.commons.network.socket.server.handlers.SocketResponse;
import org.smartly.commons.network.socket.messages.tools.MultipartMessageUtils;
/**
*
*/
public class HandlerMultipartMessage extends AbstractSocketHandler {
public static final String TYPE = MultipartMessagePart.class.getName();
@Override
public void handle(final SocketRequest request, final SocketResponse response) {
// add part to server pool
if (request.isTypeOf(MultipartMessagePart.class)) {
final MultipartMessagePart part = (MultipartMessagePart) request.read();
// multipart messages are used to upload or download
if (part.getInfo().getType() == MultipartInfo.MultipartInfoType.File) {
if (part.getInfo().getDirection() == MultipartInfo.MultipartInfoDirection.Upload) {
// UPLOAD
MultipartMessageUtils.saveOnDisk(part);
request.getServer().addMultipartMessagePart(part);
} else {
// DOWNLOAD
MultipartMessageUtils.setPartBytes(part); // read chunk bytes
// send back data with bytes
response.write(part);
}
}
}
}
// --------------------------------------------------------------------
// S T A T I C
// --------------------------------------------------------------------
}