blob: b30ab3f2795f6bb9379ba158f6b467136d263e4c [file] [log] [blame]
// 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.
library http2.src.flowcontrol.queue_messages;
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);
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);
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);
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);
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);
String toString() => 'GoawayMessage(lastStreamId: ${lastStreamId}, '
'errorCode: ${errorCode}, debugData: ${debugData.length})';
}