1 /*
2 (C) Copyright IBM Corp. 2005, 2009
3
4 THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
5 ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
6 CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
7
8 You can obtain a current copy of the Eclipse Public License from
9 http://www.opensource.org/licenses/eclipse-1.0.php
10
11 @author : Roberto Pineiro, IBM, roberto.pineiro@us.ibm.com
12 * @author : Chung-hao Tan, IBM, chungtan@us.ibm.com
13 *
14 *
15 * Change History
16 * Flag Date Prog Description
17 *-------------------------------------------------------------------------------
18 * 1535756 2006-08-07 lupusalex Make code warning free
19 * 1565892 2006-11-28 lupusalex Make SBLIM client JSR48 compliant
20 * 2003590 2008-06-30 blaschke-oss Change licensing from CPL to EPL
21 * 2524131 2009-01-21 raman_arora Upgrade client to JDK 1.5 (Phase 1)
22 */
23 package org.metricshub.wbem.sblim.cimclient.internal.http.io;
24
25 /*-
26 * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
27 * WBEM Java Client
28 * ჻჻჻჻჻჻
29 * Copyright 2023 - 2025 MetricsHub
30 * ჻჻჻჻჻჻
31 * Licensed under the Apache License, Version 2.0 (the "License");
32 * you may not use this file except in compliance with the License.
33 * You may obtain a copy of the License at
34 *
35 * http://www.apache.org/licenses/LICENSE-2.0
36 *
37 * Unless required by applicable law or agreed to in writing, software
38 * distributed under the License is distributed on an "AS IS" BASIS,
39 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
40 * See the License for the specific language governing permissions and
41 * limitations under the License.
42 * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
43 */
44
45 import java.io.FilterInputStream;
46 import java.io.IOException;
47 import java.io.InputStream;
48 import org.metricshub.wbem.sblim.cimclient.internal.http.HttpClient;
49
50 /**
51 * Class KeepAliveInputStream implements an input stream for connections that
52 * keep iAlive after a request is completed
53 *
54 */
55 public class KeepAliveInputStream extends FilterInputStream {
56 private HttpClient iClient;
57
58 /**
59 * Ctor.
60 *
61 * @param pStream
62 * The underlying stream
63 * @param pClient
64 * The associated client.
65 */
66 public KeepAliveInputStream(InputStream pStream, HttpClient pClient) {
67 super(pStream);
68 this.iClient = pClient;
69 }
70
71 @Override
72 public int read() throws IOException {
73 int i = super.read();
74 if (i == -1 && this.iClient != null) {
75 this.iClient.streamFinished();
76 this.iClient = null;
77 }
78 return i;
79 }
80
81 @Override
82 public int read(byte buf[]) throws IOException {
83 return read(buf, 0, buf.length);
84 }
85
86 @Override
87 public int read(byte buf[], int off, int len) throws IOException {
88 int i = super.read(buf, off, len);
89 if (i == -1 && this.iClient != null) {
90 this.iClient.streamFinished();
91 this.iClient = null;
92 }
93 return i;
94 }
95
96 @Override
97 public long skip(long len) throws IOException {
98 long i = super.skip(len);
99
100 if (i == -1 && this.iClient != null) {
101 this.iClient.streamFinished();
102 this.iClient = null;
103 }
104 return i;
105 }
106
107 @Override
108 public void close() throws IOException {
109 super.close();
110 if (this.iClient != null) {
111 this.iClient.streamFinished();
112 this.iClient = null;
113 }
114 }
115 }