// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. library stdio.server; import 'dart:async'; import 'dart:io'; import 'package:analysis_server/src/channel.dart'; import 'package:analysis_server/src/socket_server.dart'; /** * Instances of the class [StdioServer] implement a simple server operating * over standard input and output. The primary responsibility of this server * is to split incoming messages on newlines and pass them along to the * analysis server. */ class StdioAnalysisServer { /** * An object that can handle either a WebSocket connection or a connection * to the client over stdio. */ SocketServer socketServer; /** * Initialize a newly created stdio server. */ StdioAnalysisServer(this.socketServer); /** * Begin serving requests over stdio. * * Return a future that will be completed when stdin closes. */ Future serveStdio() { ByteStreamServerChannel serverChannel = new ByteStreamServerChannel(stdin, stdout); socketServer.createAnalysisServer(serverChannel); return serverChannel.closed; } }