Awesome, thank you Rogan!
On Monday, September 5, 2016 at 8:09:18 AM UTC-4, L_DisplayName wrote:
>
> Greetings All,
> I wanted to know how can I manage a group of channels outside of a
> server's channel handler? I am implementing a file server and I want the
> server to be able to transfer files through parallel data channels once it
> receives a file request from a client. For example, if I have a single 4GB
> file and 4 data channels/connections, I want the server to transfer 1GB
> through each of the data channels simultaneously (note files are divided
> evenly among all data channels). In essence, the server receives and
> processes the file request through one of the channel's channelHandler -
> channelRead method, but then how can I inform and have each channel send
> their part/portion of the file?
>
> For example, if I have a simple FileServerHandler class as below for each
> of the 4 channels, and I wanted to know how can I inform and have each
> channel send their part/portion of the file.
>
> public class FileServerHandler extends SimpleChannelInboundHandler<ByteBuf
> > {
>
> private Logger logger; private String currentFileName;
> private String currentDirectory;
> private long currentFileOffset;
> private long currentFileChunkSize;
> private boolean isDirectory;
>
>
> public FileServerHandler() {
>
> logger = Logger.getLogger(this.getClass().getName());
>
> }
>
> public void channelActive(ChannelHandlerContext ctx) throws Exception{
>
> logger.info("Server:channel is active ");
>
> }
>
>
> @Override
> public void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) throws
> Exception {
> logger.info("Server:channelRead0: filePath = " + msg);
> processFileRequest(msg); //Obtains the file or directory to retrieve and
> the size of the file or
> //files within a directory to retrieve recursively
>
> /*
> *At this point I wish to tell the other channels the file or directory
> to retrieve, the file size, and the portion of the file(s) it should send?
> How can I do this? Also, if I implemented a channelManager, How can I pass
> this information to the channelManager and have it write the data to each
> channel?*
> */
>
> }
>
> @Override
> public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
> cause.printStackTrace();
>
> if (ctx.channel().isActive()) {
> ctx.writeAndFlush("ERR: " +
> cause.getClass().getSimpleName() + ": " +
> cause.getMessage() + '\n').addListener(ChannelFutureListener.CLOSE);
> }
> }
> }
>
>
>
>
>
>
--
You received this message because you are subscribed to the Google Groups
"Netty discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/netty/9ce5db8b-282a-4c5f-9ccd-8fcb9ad68cd1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.