// natPipeImplPosix.cc

/* Copyright (C) 2003, 2004  Free Software Foundation

   This file is part of libgcj.

This software is copyrighted work licensed under the terms of the
Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
details.  */

#include <config.h>
#include <platform.h>

#include <errno.h>
#include <string.h>
#include <unistd.h>

#include <gnu/java/nio/PipeImpl.h>
#include <gnu/java/nio/VMPipe.h>
//#include <gnu/java/nio/PipeImpl$SinkChannelImpl.h>
//#include <gnu/java/nio/PipeImpl$SourceChannelImpl.h>
#include <java/io/IOException.h>
#include <java/nio/channels/spi/SelectorProvider.h>

void
gnu::java::nio::VMPipe::init (gnu::java::nio::PipeImpl*, /*self*/
			      ::java::nio::channels::spi::SelectorProvider*
			      /*provider*/)
{
  int filedes [2];

  if (_Jv_pipe (filedes) < 0)
    throw new ::java::io::IOException (JvNewStringUTF (strerror (errno)));

  /* FIXME
  source = new gnu::java::nio::PipeImpl$SourceChannelImpl
    (this, provider, filedes [0]);
  sink = new gnu::java::nio::PipeImpl$SinkChannelImpl
    (this, provider, filedes [1]);
  */
}
