| // Copyright (c) 2015, 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. | |
| import '../../transport.dart'; | |
| /// The subclasses of [Message] are objects that are coming from the | |
| /// connection layer on top of frames. | |
| /// | |
| /// Messages on a HTTP/2 stream will be represented by a different class | |
| /// hierarchy. | |
| abstract class Message { | |
| final int streamId; | |
| final bool endStream; | |
| Message(this.streamId, this.endStream); | |
| } | |
| class HeadersMessage extends Message { | |
| final List<Header> headers; | |
| HeadersMessage(int streamId, this.headers, bool endStream) | |
| : super(streamId, endStream); | |
| @override | |
| String toString() => | |
| 'HeadersMessage(headers: ${headers.length}, endStream: $endStream)'; | |
| } | |
| class DataMessage extends Message { | |
| final List<int> bytes; | |
| DataMessage(int streamId, this.bytes, bool endStream) | |
| : super(streamId, endStream); | |
| @override | |
| String toString() => | |
| 'DataMessage(bytes: ${bytes.length}, endStream: $endStream)'; | |
| } | |
| class PushPromiseMessage extends Message { | |
| final List<Header> headers; | |
| final int promisedStreamId; | |
| final ClientTransportStream pushedStream; | |
| PushPromiseMessage( | |
| int streamId, | |
| this.headers, | |
| this.promisedStreamId, | |
| this.pushedStream, | |
| bool endStream, | |
| ) : super(streamId, endStream); | |
| @override | |
| String toString() => | |
| 'PushPromiseMessage(bytes: ${headers.length}, ' | |
| 'promisedStreamId: $promisedStreamId, endStream: $endStream)'; | |
| } | |
| class ResetStreamMessage extends Message { | |
| final int errorCode; | |
| ResetStreamMessage(int streamId, this.errorCode) : super(streamId, false); | |
| @override | |
| String toString() => 'ResetStreamMessage(errorCode: $errorCode)'; | |
| } | |
| class GoawayMessage extends Message { | |
| final int lastStreamId; | |
| final int errorCode; | |
| final List<int> debugData; | |
| GoawayMessage(this.lastStreamId, this.errorCode, this.debugData) | |
| : super(0, false); | |
| @override | |
| String toString() => | |
| 'GoawayMessage(lastStreamId: $lastStreamId, ' | |
| 'errorCode: $errorCode, debugData: ${debugData.length})'; | |
| } |