code: public FileSender sendFile(String filePath, final Handler<AsyncResult<Void>> doneHandler) {
      final File file = new File(filePath);
      output.vertx().fileSystem().exists(file.getAbsolutePath(), new Handler<AsyncResult<Boolean>>() {
        @Override
        public void handle(AsyncResult<Boolean> result) {
          if (result.failed()) {
            new DefaultFutureResult<Void>(result.cause()).setHandler(doneHandler);
          } else if (!result.result()) {
            new DefaultFutureResult<Void>(new IOException("File not found.")).setHandler(doneHandler);
          } else {
            output.group("file", file.getName(), new Handler<OutputGroup>() {
              @Override
              public void handle(final OutputGroup group) {
                output.vertx().fileSystem().open(file.getAbsolutePath(), new Handler<AsyncResult<AsyncFile>>() {
                  @Override
                  public void handle(AsyncResult<AsyncFile> result) {
                    if (result.failed()) {
                      new DefaultFutureResult<Void>(result.cause()).setHandler(doneHandler);
                    } else {
                      doSendFile(result.result(), group, doneHandler);
                    }
                  }
                });
              }
            });
          }
        }
      });
      return this;
    }
docs: Sends a file on the output port.
  
  @param filePath The path to the file to send.
  @param doneHandler An asynchronous handler to be called once the file has been sent.
  @return The file sender.