publish method
Implementation
void publish(String subject, List<int> data, Map<String, dynamic> options) {
bool delay = options['delay'] ?? true;
List<int> proto = [];
List<int>? headers;
if (options['headers'] is Map) {
List<String> build = ['NATS/1.0'];
options['headers'].forEach((key, value) {
build.add('$key: $value');
});
build.add('\r\n');
headers = utf8.encode(build.join('\r\n'));
final hlen = headers.length;
final len = data.length + hlen;
if (options['reply'] is String) {
proto.addAll(utf8.encode('HPUB $subject ${options['reply']} $hlen $len\r\n'));
} else {
proto.addAll(utf8.encode('HPUB $subject $hlen $len\r\n'));
}
} else {
if (options['reply'] is String) {
proto.addAll(utf8.encode('PUB $subject ${options['reply']} ${data.length}\r\n'));
} else {
proto.addAll(utf8.encode('PUB $subject ${data.length}\r\n'));
}
}
if (headers != null) {
proto.addAll(headers);
}
proto.addAll(data);
proto.addAll(_CRLF);
_delayCommand(proto, delay, headers);
debug('Nats::publish($delay) - $subject');
}