All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.structr.cloud.message.PullChunk Maven / Gradle / Ivy

Go to download

Structr is an open source framework based on the popular Neo4j graph database.

The newest version!
/**
 * Copyright (C) 2010-2016 Structr GmbH
 *
 * This file is part of Structr .
 *
 * Structr is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * Structr is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with Structr.  If not, see .
 */
package org.structr.cloud.message;

import java.io.IOException;
import java.util.Iterator;
import org.structr.cloud.CloudConnection;
import org.structr.cloud.CloudService;
import org.structr.common.error.FrameworkException;

/**
 *
 *
 */
public class PullChunk extends FileNodeChunk {

	public PullChunk(final String containerId, final int sequenceNumber, final long fileSize) {
		super(containerId, fileSize, sequenceNumber, CloudService.CHUNK_SIZE);
	}

	@Override
	public void onRequest(CloudConnection serverConnection) throws IOException, FrameworkException {

		final Iterator chunkIterator = (Iterator)serverConnection.getValue(containerId);
		if (chunkIterator != null) {

			if (chunkIterator.hasNext()) {

				serverConnection.send(chunkIterator.next());

			} else {

				// chunk iterator is exhausted, remove it from context
				// so that only one FileNodeEndChunk is sent
				serverConnection.removeValue(containerId);

				// return finishing end chunk
				serverConnection.send(new FileNodeEndChunk(containerId, fileSize));
			}
		}
	}

	@Override
	public void onResponse(CloudConnection clientConnection) throws IOException, FrameworkException {
	}

	@Override
	public void afterSend(CloudConnection conn) {
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy