public void oldWriteImpl(ByteBuffer b, OperationCallback h) throws IOException, InterruptedException {
		if(!getSelectorManager().isRunning())
			throw new IllegalStateException(this+"ChannelManager must be running and is stopped");		
		else if(isClosed) {
			AsynchronousCloseException exc = new AsynchronousCloseException();
			IOException ioe = new IOException(this+"Client cannot write after the client closed the socket");
			exc.initCause(ioe);
			throw exc;
		}
		if(apiLog.isLoggable(Level.FINER))
			apiLog.finer(this+"Basic.write callback="+h);
		
        //copy the buffer here
        ByteBuffer newOne = ByteBuffer.allocate(b.remaining());
        newOne.put(b);
        newOne.flip();
        WriteRunnable holder = new WriteRunnable(this, newOne, h);
        
		tryWriteOrClose(holder);
        
        if(log.isLoggable(Level.FINER)) {
        	log.finest(this+"sent write to queue");
       	}
	}