mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 05:36:49 +00:00
9c702bc72e
Change-Id: Ia6eda18bb4ad6ae9f2705846e262f793f73d1e4f Tested: class type changes Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291343 Reviewed-by: Aske Simon Christensen <askesc@google.com> Reviewed-by: Lasse Nielsen <lrn@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com> Commit-Queue: Brian Quinlan <bquinlan@google.com> Reviewed-by: Sigmund Cherem <sigmund@google.com>
87 lines
3.7 KiB
Dart
87 lines
3.7 KiB
Dart
// Copyright (c) 2017, 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.
|
|
|
|
part of dart.io;
|
|
|
|
/// A low-level class for communicating synchronously over a TCP socket.
|
|
///
|
|
/// Warning: [RawSynchronousSocket] should probably only be used to connect to
|
|
/// 'localhost'. The operations below will block the calling thread to wait for
|
|
/// a response from the network. The thread can process no other events while
|
|
/// waiting for these operations to complete. [RawSynchronousSocket] is not
|
|
/// suitable for applications that require high performance or asynchronous I/O
|
|
/// such as a server. Instead such applications should use the non-blocking
|
|
/// sockets and asynchronous operations in the [Socket] or [RawSocket] classes.
|
|
abstract interface class RawSynchronousSocket {
|
|
/// Creates a new socket connection and returns a [RawSynchronousSocket].
|
|
///
|
|
/// The [host] can either be a [String] or an [InternetAddress].
|
|
/// If [host] is a [String], [connectSync] will perform a
|
|
/// [InternetAddress.lookup] and try all returned [InternetAddress]es,
|
|
/// until connected.
|
|
/// Unless a connection was established,
|
|
/// the error from the first failing connection is returned.
|
|
external static RawSynchronousSocket connectSync(host, int port);
|
|
|
|
/// The number of received and unread bytes in the socket that can be read.
|
|
int available();
|
|
|
|
/// Closes the [RawSynchronousSocket].
|
|
///
|
|
/// Once [closeSync] has been called, attempting to call [readSync],
|
|
/// [readIntoSync], [writeFromSync], [remoteAddress], and [remotePort] will
|
|
/// cause a [SocketException] to be thrown.
|
|
void closeSync();
|
|
|
|
/// Reads bytes into an existing [buffer].
|
|
///
|
|
/// Reads bytes and writes then into the range of [buffer]
|
|
/// from [start] to [end].
|
|
/// The [start] must be non-negative and no greater than [buffer].length.
|
|
/// If [end] is omitted, it defaults to [buffer].length.
|
|
/// Otherwise [end] must be no less than [start]
|
|
/// and no greater than [buffer].length.
|
|
///
|
|
/// Returns the number of bytes read. This maybe be less than `end - start`
|
|
/// if the file doesn't have that many bytes to read.
|
|
int readIntoSync(List<int> buffer, [int start = 0, int? end]);
|
|
|
|
/// Reads up to [bytes] bytes from the socket.
|
|
///
|
|
/// Blocks and waits for a response of up to a specified number of bytes
|
|
/// sent by the socket. [bytes] specifies the maximum number of bytes to
|
|
/// be read. Returns the list of bytes read, which could be less than the
|
|
/// value specified by [bytes].
|
|
List<int>? readSync(int bytes);
|
|
|
|
/// Shuts down a socket in the provided direction.
|
|
///
|
|
/// Calling shutdown will never throw an exception and calling it several times
|
|
/// is supported. If both [SocketDirection.receive] and [SocketDirection.send]
|
|
/// directions are closed, the socket is closed completely, the same as if
|
|
/// [closeSync] has been called.
|
|
void shutdown(SocketDirection direction);
|
|
|
|
/// Writes from a [buffer] to the socket.
|
|
///
|
|
/// Will read the buffer from index [start] to index [end].
|
|
/// The [start] must be non-negative and no greater than [buffer].length.
|
|
/// If [end] is omitted, it defaults to [buffer].length.
|
|
/// Otherwise [end] must be no less than [start]
|
|
/// and no greater than [buffer].length.
|
|
void writeFromSync(List<int> buffer, [int start = 0, int? end]);
|
|
|
|
/// The port used by this socket.
|
|
int get port;
|
|
|
|
/// The remote port connected to by this socket.
|
|
int get remotePort;
|
|
|
|
/// The [InternetAddress] used to connect this socket.
|
|
InternetAddress get address;
|
|
|
|
/// The remote [InternetAddress] connected to by this socket.
|
|
InternetAddress get remoteAddress;
|
|
}
|