Skip to content
Snippets Groups Projects
Select Git revision
  • 66258a20d8575222bb7a2602ffb49b5861d61038
  • master default protected
2 results

setup.Rd

Blame
  • Forked from SERG / woRkflow
    Source project has a limited visibility.
    FileReceiver.java 1.15 KiB
    final class FileReceiver {
     
        private final int port;
        private final FileWriter fileWriter;
        private final long size;
     
        FileReceiver(final int port, final FileWriter fileWriter, final long size) {
            this.port = port;
            this.fileWriter = fileWriter;
            this.size = size;
        }
     
        void receive() throws IOException {
            SocketChannel channel = null;
     
            try (final ServerSocketChannel serverSocketChannel = ServerSocketChannel.open()) {
                init(serverSocketChannel);
     
                channel = serverSocketChannel.accept();
     
                doTransfer(channel);
            } finally {
                if (!Objects.isNull(channel)) {
                    channel.close();
                }
     
                this.fileWriter.close();
            }
        }
     
        private void doTransfer(final SocketChannel channel) throws IOException {
            assert !Objects.isNull(channel);
     
            this.fileWriter.transfer(channel, this.size);
        }
     
        private void init(final ServerSocketChannel serverSocketChannel) throws IOException {
            assert !Objects.isNull(serverSocketChannel);
     
            serverSocketChannel.bind(new InetSocketAddress(this.port));
        }
    }