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.

Reply via email to