]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.compressions/src/org/simantics/compressions/impl/Channels.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.compressions / src / org / simantics / compressions / impl / Channels.java
1 /*******************************************************************************
2  * Copyright (c) 2007, 2011 Association for Decentralized Information Management
3  * in Industry THTH ry.
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v1.0
6  * which accompanies this distribution, and is available at
7  * http://www.eclipse.org/legal/epl-v10.html
8  *
9  * Contributors:
10  *     VTT Technical Research Centre of Finland - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.compressions.impl;
13
14 import java.io.IOException;
15 import java.io.InputStream;
16 import java.nio.ByteBuffer;
17 import java.nio.channels.ReadableByteChannel;
18
19 /**
20  * @author Tuukka Lehtonen
21  */
22 public class Channels {
23
24     public static int read(ReadableByteChannel channel, ByteBuffer intoBuffer, int expectedBytes) throws IOException {
25         int read = 0;
26         while (read < expectedBytes) {
27             int ret = channel.read(intoBuffer);
28             if (ret < 0)
29                 return read; // End-Of-Stream
30             read += ret;
31         }
32         return read;
33     }
34
35     public static int read(ReadableByteChannel channel, ByteBuffer intoBuffer) throws IOException {
36         return read(channel, intoBuffer, intoBuffer.limit());
37     }
38
39     public static int readStream(InputStream stream, byte[] array, int expectedBytes) throws IOException {
40         int read = 0;
41         while (read < expectedBytes) {
42             int ret = stream.read(array, read, expectedBytes - read);
43             if (ret < 0)
44                 return read; // End-Of-Stream
45             read += ret;
46         }
47         return read;
48     }
49
50 }