class NetworkClient extends AutoCloseable
A NetworkClient connects to a running sbt instance or starts a new instance if there isn't already one running. Once connected, it can send commands for sbt to run, it can send completions to sbt and print the completions to stdout so that a shell can consume the completions or it can enter an interactive sbt shell session in which it relays io bytes between sbt and the terminal.
- Self Type
- NetworkClient
- Alphabetic
- By Inheritance
- NetworkClient
- AutoCloseable
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
- new NetworkClient(configuration: AppConfiguration, args: List[String])
- new NetworkClient(configuration: AppConfiguration, arguments: Arguments)
-
new
NetworkClient(arguments: Arguments, console: ConsoleInterface, inputStream: InputStream, errorStream: PrintStream, printStream: PrintStream, useJNI: Boolean)
- arguments
the arguments for the forked sbt server if the client needs to start it. It also contains the sbt command arguments to send to the server if any are present.
- console
a logging instance. This can use a ConsoleAppender or just simply print to a PrintStream.
- inputStream
the InputStream from which the client reads bytes. It is not hardcoded to System.in so that a NetworkClient can be remotely controlled by a java process, which is useful in testing.
- errorStream
the sink for messages that we always want to be printed. It is usually System.err but could be overridden in tests or set to a null OutputStream if the NetworkClient needs to be silent.
- printStream
the sink for standard out messages. It is typically System.out but in the case of completions, the bytes written to System.out are usually treated as completion results so we need to reroute standard out messages to System.err. It's also useful to override this in testing.
- useJNI
toggles whether or not to use the jni based implementations in org.scalasbt.ipcsocket. These are only available on 64 bit linux, mac and windows. Any other platform will need to fall back on jna.
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
- def batchExecute(userCommands: List[String]): Int
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
def
close(): Unit
- Definition Classes
- NetworkClient → AutoCloseable
- def connect(log: Boolean, promptCompleteUsers: Boolean): Boolean
- def connection: ServerConnection
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def getCompletions(query: String): Seq[String]
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def init(promptCompleteUsers: Boolean, retry: Boolean): ServerConnection
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def messageTypeToLevel(severity: Long): util.Level.Value
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def onNotification(msg: JsonRpcNotificationMessage): Unit
- def onRequest(msg: JsonRpcRequestMessage): Unit
- def onResponse(msg: JsonRpcResponseMessage): Unit
-
def
onReturningReponse(msg: JsonRpcResponseMessage): Unit
Called on the response for a returning message.
- def run(): Int
- def sendCancelAllCommand(): LinkedBlockingQueue[Boolean]
- def sendCommand(command: CommandMessage): Unit
- def sendCommandResponse(method: String, command: EventMessage, id: String): Unit
- def sendExecCommand(commandLine: String): LinkedBlockingQueue[Integer]
- def sendJson(method: String, params: String, uuid: String): Unit
- def sendJson(method: String, params: String): String
- def sendNotification(method: String, params: String): Unit
- def splitDiagnostics(params: PublishDiagnosticsParams): Vector[(util.Level.Value, String)]
- def splitLogMessage(params: LogMessageParams): Vector[(util.Level.Value, String)]
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
def
waitForServer(portfile: File, log: Boolean, startServer: Boolean): Unit
Forks another instance of sbt in the background.
Forks another instance of sbt in the background. This instance must be shutdown explicitly via
sbt -client shutdown