
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __gnu_java_nio_PipeImpl$SinkChannelImpl__
#define __gnu_java_nio_PipeImpl$SinkChannelImpl__

#pragma interface

#include <java/nio/channels/Pipe$SinkChannel.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace nio
      {
          class PipeImpl$SinkChannelImpl;
          class VMChannel;
      }
    }
  }
  namespace java
  {
    namespace nio
    {
        class ByteBuffer;
      namespace channels
      {
        namespace spi
        {
            class SelectorProvider;
        }
      }
    }
  }
}

class gnu::java::nio::PipeImpl$SinkChannelImpl : public ::java::nio::channels::Pipe$SinkChannel
{

public:
  PipeImpl$SinkChannelImpl(::java::nio::channels::spi::SelectorProvider *, jint);
public: // actually protected
  void implCloseSelectableChannel();
  void implConfigureBlocking(jboolean);
public:
  jint write(::java::nio::ByteBuffer *);
  jlong write(JArray< ::java::nio::ByteBuffer * > *);
  jlong write(JArray< ::java::nio::ByteBuffer * > *, jint, jint);
  jint getNativeFD();
private:
  jint __attribute__((aligned(__alignof__( ::java::nio::channels::Pipe$SinkChannel)))) native_fd;
  ::gnu::java::nio::VMChannel * vmch;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_nio_PipeImpl$SinkChannelImpl__
