summaryrefslogtreecommitdiff
path: root/vdrmanager/src
diff options
context:
space:
mode:
authorlado <herrlado@gmail.com>2011-11-02 21:57:10 +0100
committerlado <herrlado@gmail.com>2011-11-02 21:57:10 +0100
commit6bcf6edd8ec3c65a1409201bbff6c7016a618a3c (patch)
treee119ea6980534a32c389ecad520d893d6ff47b2f /vdrmanager/src
parente921c0f6dd4167aa56747913766e26e1854772e9 (diff)
downloadvdr-manager-6bcf6edd8ec3c65a1409201bbff6c7016a618a3c.tar.gz
vdr-manager-6bcf6edd8ec3c65a1409201bbff6c7016a618a3c.tar.bz2
let user also cancel the client even if connect() blockin. After it gets
connected abort will be found to be true and it breaks
Diffstat (limited to 'vdrmanager/src')
-rw-r--r--vdrmanager/src/de/bjusystems/vdrmanager/gui/SvdrpProgressDialog.java7
-rw-r--r--vdrmanager/src/de/bjusystems/vdrmanager/utils/svdrp/SvdrpClient.java100
2 files changed, 39 insertions, 68 deletions
diff --git a/vdrmanager/src/de/bjusystems/vdrmanager/gui/SvdrpProgressDialog.java b/vdrmanager/src/de/bjusystems/vdrmanager/gui/SvdrpProgressDialog.java
index 4e34590..304e922 100644
--- a/vdrmanager/src/de/bjusystems/vdrmanager/gui/SvdrpProgressDialog.java
+++ b/vdrmanager/src/de/bjusystems/vdrmanager/gui/SvdrpProgressDialog.java
@@ -22,7 +22,6 @@ public class SvdrpProgressDialog<T> extends ProgressDialog implements
this.client = client;
progress = new ProgressDialog(activity);
progress.setOnCancelListener(this);
- progress.setCancelable(false);
}
public void svdrpEvent(final SvdrpEvent event) {
@@ -74,10 +73,8 @@ public class SvdrpProgressDialog<T> extends ProgressDialog implements
}
private void abort() {
- if (client.isConnected()) {
- client.abort();
- dismiss();
- }
+ client.abort();
+ dismiss();
}
public void dismiss() {
diff --git a/vdrmanager/src/de/bjusystems/vdrmanager/utils/svdrp/SvdrpClient.java b/vdrmanager/src/de/bjusystems/vdrmanager/utils/svdrp/SvdrpClient.java
index 46c8e9d..9553fd5 100644
--- a/vdrmanager/src/de/bjusystems/vdrmanager/utils/svdrp/SvdrpClient.java
+++ b/vdrmanager/src/de/bjusystems/vdrmanager/utils/svdrp/SvdrpClient.java
@@ -36,20 +36,20 @@ public abstract class SvdrpClient<Result> {
/** listener */
private final List<SvdrpListener<Result>> listeners = new ArrayList<SvdrpListener<Result>>();
/** list of results */
- //private final List<Result> results = new ArrayList<Result>();
+ // private final List<Result> results = new ArrayList<Result>();
/** should the listener be informed about each received result */
- //private boolean resultInfoEnabled = false;
+ // private boolean resultInfoEnabled = false;
/**
* @return true if the client has result
*/
-// public boolean hasResults(){
-// return results.isEmpty() == false;
-// }
+ // public boolean hasResults(){
+ // return results.isEmpty() == false;
+ // }
private Timer watchDog = new Timer();
-
- public boolean isConnected(){
- if(socket == null){
+
+ public boolean isConnected() {
+ if (socket == null) {
return false;
}
return socket.isConnected();
@@ -111,17 +111,10 @@ public abstract class SvdrpClient<Result> {
public void abort() {
abort = true;
try {
- if (socket != null) {
- if (socket.isConnected()) {
- socket.shutdownInput();
- socket.shutdownOutput();
- socket.close();
- } else {
- if(st != null){
- st.interrupt();
- }
- socket.close();
- }
+ if (isConnected()) {
+ socket.shutdownInput();
+ socket.shutdownOutput();
+ socket.close();
}
} catch (Exception ex) {
Log.w(TAG, ex);
@@ -129,17 +122,15 @@ public abstract class SvdrpClient<Result> {
}
-// /**
-// * Gets the list of results
-// *
-// * @return results
-// */
-// public List<Result> getResults() {
-// return results;
-// }
-
- private Thread st;
-
+ // /**
+ // * Gets the list of results
+ // *
+ // * @return results
+ // */
+ // public List<Result> getResults() {
+ // return results;
+ // }
+
/**
* Connect to SVDRP
*
@@ -159,31 +150,14 @@ public abstract class SvdrpClient<Result> {
// connect
informListener(SvdrpEvent.CONNECTING, null);
socket = new Socket();
- //st = new Thread(){
-// @Override
-// public void run() {
-// try{
- socket.connect(
- new InetSocketAddress(prefs.getSvdrpHost(), prefs
- .getSvdrpPort()),
- prefs.getConnectionTimeout() * 1000);// 8 secs for connect
-// }catch(IOException iox){
-// throw new RuntimeException();
-// }
-// }
-//
-// };
-
-// st.start();
-//
-// try {
-// st.join();
-// } catch (InterruptedException e) {
-// Thread.currentThread().interrupt();
-// // TODO Auto-generated catch block
-// e.printStackTrace();
-// }
-//
+ socket.connect(
+ new InetSocketAddress(prefs.getSvdrpHost(), prefs
+ .getSvdrpPort()),
+ prefs.getConnectionTimeout() * 1000);// 8 secs for connect
+ if(abort){
+ informListener(SvdrpEvent.ABORTED, null);
+ }
+ //
socket.setSoTimeout(prefs.getReadTimeout() * 1000);// 15 sec for
// each read
final long delay = C.ONE_MINUTE_IN_MILLIS * prefs.getTimeout() * 60; // in
@@ -301,7 +275,7 @@ public abstract class SvdrpClient<Result> {
abort = false;
// clear results
- //results.clear();
+ // results.clear();
// connect
final boolean connected = connect();
@@ -355,10 +329,10 @@ public abstract class SvdrpClient<Result> {
break;
}
if (result != null) {
- //results.add(result);
- //if (resultInfoEnabled) {
- informListener(SvdrpEvent.RESULT_RECEIVED, result);
- //}
+ // results.add(result);
+ // if (resultInfoEnabled) {
+ informListener(SvdrpEvent.RESULT_RECEIVED, result);
+ // }
}
}
@@ -379,9 +353,9 @@ public abstract class SvdrpClient<Result> {
}
}
-// public void setResultInfoEnabled(final boolean resultInfoEnabled) {
-// this.resultInfoEnabled = resultInfoEnabled;
-// }
+ // public void setResultInfoEnabled(final boolean resultInfoEnabled) {
+ // this.resultInfoEnabled = resultInfoEnabled;
+ // }
protected void informListenerError(final SvdrpEvent event,
final Throwable result) {