public void write()

in core/src/main/java/org/apache/airavata/mft/core/DoubleStreamingBuffer.java [88:141]


        public void write(int b) throws IOException {

            if (!barrierPassed) {
                try {
                    if (readBuffer1) {
                        buffer2Lock.lock();
                    } else {
                        buffer1Lock.lock();
                    }

                    // wait for reader to enter into read block for the first time
                    barrier.await();

                    barrierPassed = true;
                } catch (Exception e) {
                    throw new IOException(e);
                }
            }

            //System.out.println("Write " + readBuffer1 + " " + buf1Remain + " " + buf2Remain);
            if (readBuffer1) {
                if (buf2Remain < bufferSize) {
                    buffer2[buf2Remain] = (byte)b;
                    buf2Remain ++;
                } else {
                    barrier.reset();
                    buffer2Lock.unlock();
                    buffer1Lock.lock();
                    try {
                        // Wait for reader to move into next buffer
                        barrier.await();
                    } catch (Exception e) {
                        throw new IOException();
                    }
                    write(b);
                }
            } else {
                if (buf1Remain < bufferSize) {
                    buffer1[buf1Remain] = (byte)b;
                    buf1Remain++;
                } else {
                    barrier.reset();
                    buffer1Lock.unlock();
                    buffer2Lock.lock();
                    try {
                        // Wait for reader to move into next buffer
                        barrier.await();
                    } catch (Exception e) {
                        throw new IOException();
                    }
                    write(b);
                }
            }
        }