Changeset View
Changeset View
Standalone View
Standalone View
src/org/kde/kdeconnect/Backends/BluetoothBackend/BluetoothLink.java
Show First 20 Lines • Show All 192 Lines • ▼ Show 20 Line(s) | 192 | } catch (Exception e) { | |||
---|---|---|---|---|---|
193 | callback.onFailure(e); | 193 | callback.onFailure(e); | ||
194 | return false; | 194 | return false; | ||
195 | } | 195 | } | ||
196 | } | 196 | } | ||
197 | 197 | | |||
198 | sendMessage(np); | 198 | sendMessage(np); | ||
199 | 199 | | |||
200 | if (serverSocket != null) { | 200 | if (serverSocket != null) { | ||
201 | BluetoothSocket transferSocket = serverSocket.accept(); | 201 | try (BluetoothSocket transferSocket = serverSocket.accept()) { | ||
202 | try { | | |||
203 | serverSocket.close(); | 202 | serverSocket.close(); | ||
204 | 203 | | |||
205 | int idealBufferLength = 4096; | 204 | int idealBufferLength = 4096; | ||
206 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M | 205 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M | ||
207 | && transferSocket.getMaxReceivePacketSize() > 0) { | 206 | && transferSocket.getMaxReceivePacketSize() > 0) { | ||
208 | idealBufferLength = transferSocket.getMaxReceivePacketSize(); | 207 | idealBufferLength = transferSocket.getMaxReceivePacketSize(); | ||
209 | } | 208 | } | ||
210 | byte[] buffer = new byte[idealBufferLength]; | 209 | byte[] buffer = new byte[idealBufferLength]; | ||
211 | int bytesRead; | 210 | int bytesRead; | ||
212 | long progress = 0; | 211 | long progress = 0; | ||
213 | InputStream stream = np.getPayload().getInputStream(); | 212 | InputStream stream = np.getPayload().getInputStream(); | ||
214 | while ((bytesRead = stream.read(buffer)) != -1) { | 213 | while ((bytesRead = stream.read(buffer)) != -1) { | ||
215 | progress += bytesRead; | 214 | progress += bytesRead; | ||
216 | transferSocket.getOutputStream().write(buffer, 0, bytesRead); | 215 | transferSocket.getOutputStream().write(buffer, 0, bytesRead); | ||
217 | if (np.getPayloadSize() > 0) { | 216 | if (np.getPayloadSize() > 0) { | ||
218 | callback.onProgressChanged((int) (100 * progress / np.getPayloadSize())); | 217 | callback.onProgressChanged((int) (100 * progress / np.getPayloadSize())); | ||
219 | } | 218 | } | ||
220 | } | 219 | } | ||
221 | transferSocket.getOutputStream().flush(); | 220 | transferSocket.getOutputStream().flush(); | ||
222 | stream.close(); | 221 | stream.close(); | ||
223 | } catch (Exception e) { | 222 | } catch (Exception e) { | ||
224 | callback.onFailure(e); | 223 | callback.onFailure(e); | ||
225 | return false; | 224 | return false; | ||
226 | } finally { | | |||
227 | try { | | |||
228 | transferSocket.close(); | | |||
229 | } catch (IOException ignored) { | | |||
230 | } | | |||
231 | } | 225 | } | ||
232 | } | 226 | } | ||
233 | 227 | | |||
234 | callback.onSuccess(); | 228 | callback.onSuccess(); | ||
235 | return true; | 229 | return true; | ||
236 | } catch (Exception e) { | 230 | } catch (Exception e) { | ||
237 | callback.onFailure(e); | 231 | callback.onFailure(e); | ||
238 | return false; | 232 | return false; | ||
Show All 18 Lines |