@Override
 public void close() {
   try {
     datagramChannelSupplier.dispose();
   } catch (ObjectDisposeException | InterruptedException ex) {
     throw new RuntimeException(ex);
   }
 }
 @Override
 public Connection getConnection() throws SQLException {
   try {
     return pool.get();
   } catch (InterruptedException
       | TimeoutException
       | ObjectBorrowException
       | ObjectCreationException ex) {
     throw new SQLException(ex);
   }
 }