| Index: sdk/lib/io/sync_socket.dart
|
| diff --git a/sdk/lib/io/sync_socket.dart b/sdk/lib/io/sync_socket.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..cc055a7f9d6be171d01663dca61646e2d80f83a1
|
| --- /dev/null
|
| +++ b/sdk/lib/io/sync_socket.dart
|
| @@ -0,0 +1,108 @@
|
| +// 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 class RawSynchronousSocket {
|
| + /**
|
| + * Creates a new socket connection and returns a [RawSynchronousSocket].
|
| + *
|
| + * [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);
|
| +
|
| + /**
|
| + * Returns 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 into an existing [List<int>] from the socket into the range:
|
| + * [[start],[end]).
|
| + *
|
| + * Reads into an existing [List<int>] from the socket. If [start] is present,
|
| + * the bytes will be filled into [buffer] from index [start], otherwise index
|
| + * 0. If [end] is present, [end] - [start] bytes will be read into [buffer],
|
| + * otherwise up to [buffer.length]. If [end] == [start], no bytes are read.
|
| + * Returns the number of bytes 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);
|
| +
|
| + /**
|
| + * Shutdown a socket in the provided direction.
|
| + *
|
| + * Calling shutdown will never throw an exception and calling it several times
|
| + * is supported. If both [RECEIVE] and [SEND] directions are closed, the
|
| + * socket is closed completely, the same as if [closeSync] has been called.
|
| + */
|
| + void shutdown(SocketDirection direction);
|
| +
|
| + /**
|
| + * Writes data from a specified range in a [List<int>] to the socket.
|
| + *
|
| + * Writes into the socket from a [List<int>]. If [start] is present, the bytes
|
| + * will be written to the socket starting from index [start]. If [start] is
|
| + * not present, the bytes will be written starting from index 0. If [end] is
|
| + * present, the [end] - [start] bytes will be written into the socket starting
|
| + * at index [start]. If [end] is not provided, [buffer.length] elements will
|
| + * be written to the socket starting from index [start]. If [end] == [start],
|
| + * nothing happens.
|
| + */
|
| + 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;
|
| +}
|
|
|