86 lines
2.2 KiB
Dart
86 lines
2.2 KiB
Dart
/// Acknowledgment message sent by client to confirm message receipt
|
|
class AcknowledgmentMessage {
|
|
/// ID of the message being acknowledged
|
|
final String messageId;
|
|
|
|
/// Status of the acknowledgment
|
|
final AcknowledgmentStatus status;
|
|
|
|
/// Timestamp when the acknowledgment was created
|
|
final DateTime timestamp;
|
|
|
|
/// Optional error message if status is FAILED
|
|
final String? errorMessage;
|
|
|
|
AcknowledgmentMessage({
|
|
required this.messageId,
|
|
required this.status,
|
|
required this.timestamp,
|
|
this.errorMessage,
|
|
});
|
|
|
|
/// Create AcknowledgmentMessage from JSON
|
|
factory AcknowledgmentMessage.fromJson(Map<String, dynamic> json) {
|
|
return AcknowledgmentMessage(
|
|
messageId: json['messageId'] as String,
|
|
status: AcknowledgmentStatus.fromString(json['status'] as String),
|
|
timestamp: DateTime.parse(json['timestamp'] as String),
|
|
errorMessage: json['errorMessage'] as String?,
|
|
);
|
|
}
|
|
|
|
/// Convert AcknowledgmentMessage to JSON
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'messageId': messageId,
|
|
'status': status.toString(),
|
|
'timestamp': timestamp.toIso8601String(),
|
|
if (errorMessage != null) 'errorMessage': errorMessage,
|
|
};
|
|
}
|
|
|
|
@override
|
|
String toString() {
|
|
return 'AcknowledgmentMessage(messageId: $messageId, status: $status)';
|
|
}
|
|
}
|
|
|
|
/// Status of an acknowledgment
|
|
enum AcknowledgmentStatus {
|
|
/// Message was received by the client
|
|
received,
|
|
|
|
/// Message was processed successfully
|
|
processed,
|
|
|
|
/// Message processing failed
|
|
failed;
|
|
|
|
/// Convert string to AcknowledgmentStatus
|
|
static AcknowledgmentStatus fromString(String value) {
|
|
switch (value.toUpperCase()) {
|
|
case 'RECEIVED':
|
|
return AcknowledgmentStatus.received;
|
|
case 'PROCESSED':
|
|
return AcknowledgmentStatus.processed;
|
|
case 'FAILED':
|
|
return AcknowledgmentStatus.failed;
|
|
default:
|
|
return AcknowledgmentStatus.received;
|
|
}
|
|
}
|
|
|
|
@override
|
|
String toString() {
|
|
switch (this) {
|
|
case AcknowledgmentStatus.received:
|
|
return 'RECEIVED';
|
|
case AcknowledgmentStatus.processed:
|
|
return 'PROCESSED';
|
|
case AcknowledgmentStatus.failed:
|
|
return 'FAILED';
|
|
}
|
|
}
|
|
}
|
|
|