Author: gnodet
Date: Mon Jun 16 02:58:46 2008
New Revision: 668098
URL: http://svn.apache.org/viewvc?rev=668098&view=rev
Log:
Move streams to the session
Modified:
servicemix/sandbox/gshell-web/gshell-gwt/src/org/apache/servicemix/gshellweb/server/ShellServiceImpl.java
Modified:
servicemix/sandbox/gshell-web/gshell-gwt/src/org/apache/servicemix/gshellweb/server/ShellServiceImpl.java
URL:
http://svn.apache.org/viewvc/servicemix/sandbox/gshell-web/gshell-gwt/src/org/apache/servicemix/gshellweb/server/ShellServiceImpl.java?rev=668098&r1=668097&r2=668098&view=diff
==============================================================================
---
servicemix/sandbox/gshell-web/gshell-gwt/src/org/apache/servicemix/gshellweb/server/ShellServiceImpl.java
(original)
+++
servicemix/sandbox/gshell-web/gshell-gwt/src/org/apache/servicemix/gshellweb/server/ShellServiceImpl.java
Mon Jun 16 02:58:46 2008
@@ -40,13 +40,6 @@
private Map<String, Session> sessions = new ConcurrentHashMap<String,
Session>();
private Timer timer = new Timer(true);
private long timeout = 5 * 60 * 1000;
- private InputStream out;
- private InputStream err;
- private BufferedReader outReader;
- private BufferedReader errReader;
-
- private PipedOutputStream outPipe;
- private PipedOutputStream errPipe;
public void init() throws ServletException {
super.init();
@@ -56,26 +49,17 @@
}
}, 1000, 1000);
- try {
- // TODO: bridge the out / err to gshell
- outPipe = new PipedOutputStream();
- errPipe = new PipedOutputStream();
-
- out = new PipedInputStream(outPipe);
- outReader = new BufferedReader(new InputStreamReader(out));
- err = new PipedInputStream(errPipe);
- errReader = new BufferedReader(new InputStreamReader(err));
- } catch (IOException e) {
- throw new ServletException(e);
- }
}
public String login(String username, String password) {
- Session session = new Session();
- String sessionId = session.toString();
- sessions.put(sessionId, session);
- useSession(sessionId);
- return sessionId;
+ try {
+ Session session = new Session();
+ String sessionId = session.toString();
+ sessions.put(sessionId, session);
+ return sessionId;
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
}
public void logout(String sessionId) {
@@ -86,7 +70,7 @@
System.out.println("setNextLineIn [sessionId=" + sessionId + ", in=" +
in + "]");
Session session = useSession(sessionId);
try {
- outPipe.write(("Command: " + in + "\n").getBytes());
+ session.outPipe.write(("Command: " + in + "\n").getBytes());
} catch (IOException e) {
handleException(sessionId, e);
}
@@ -96,7 +80,7 @@
System.out.println("getNextLineOut [sessionId=" + sessionId + "]");
Session session = useSession(sessionId);
try {
- return outReader.readLine();
+ return session.outReader.readLine();
} catch (IOException e) {
handleException(sessionId, e);
return null;
@@ -107,7 +91,7 @@
System.out.println("getNextLineErr [sessionId=" + sessionId + "]");
Session session = useSession(sessionId);
try {
- return errReader.readLine();
+ return session.errReader.readLine();
} catch (IOException e) {
handleException(sessionId, e);
return null;
@@ -139,6 +123,25 @@
private static class Session {
private long lastUsed;
+ private InputStream out;
+ private InputStream err;
+ private BufferedReader outReader;
+ private BufferedReader errReader;
+ private PipedOutputStream outPipe;
+ private PipedOutputStream errPipe;
+
+ public Session() throws IOException {
+ // TODO: bridge the out / err to gshell
+ outPipe = new PipedOutputStream();
+ errPipe = new PipedOutputStream();
+
+ out = new PipedInputStream(outPipe);
+ outReader = new BufferedReader(new InputStreamReader(out));
+ err = new PipedInputStream(errPipe);
+ errReader = new BufferedReader(new InputStreamReader(err));
+
+ updateLastUsed();
+ }
public long getLastUsed() {
return lastUsed;
}