소스 검색

Merge pull request #69 from linhanyu/example_probleam

change interface of ssh.dart example to satisfied new dartssh.
xuty 4 년 전
부모
커밋
9e35b8914e
1개의 변경된 파일6개의 추가작업 그리고 5개의 파일을 삭제
  1. 6 5
      example/lib/ssh.dart

+ 6 - 5
example/lib/ssh.dart

@@ -42,8 +42,8 @@ class SSHTerminalBackend extends TerminalBackend {
   String _username;
   String _password;
 
-  Completer<int> _exitCodeCompleter;
-  StreamController<String> _outStream;
+  final _exitCodeCompleter = Completer<int>();
+  final _outStream = StreamController<String>();
 
   SSHTerminalBackend(this._host, this._username, this._password);
 
@@ -56,8 +56,9 @@ class SSHTerminalBackend extends TerminalBackend {
 
   @override
   void init() {
-    _exitCodeCompleter = Completer<int>();
-    _outStream = StreamController<String>();
+    // Use utf8.decoder to handle broken utf8 chunks
+    final _sshOutput = StreamController<List<int>>();
+    _sshOutput.stream.transform(utf8.decoder).listen(onWrite);
 
     onWrite('connecting $_host...');
     client = SSHClient(
@@ -69,7 +70,7 @@ class SSHTerminalBackend extends TerminalBackend {
       termvar: 'xterm-256color',
       getPassword: () => utf8.encode(_password),
       response: (transport, data) {
-        onWrite(data);
+        _sshOutput.add(data);
       },
       success: () {
         onWrite('connected.\n');