/// <summary> /// Write out contents of byte array b as a JSON string with base-64 encoded /// data /// </summary> private async Task WriteJsonBase64Async(byte[] b, CancellationToken cancellationToken) { await Context.WriteAsync(cancellationToken); await Trans.WriteAsync(Quote, cancellationToken); var len = b.Length; var off = 0; while (len >= 3) { // Encode 3 bytes at a time TBase64Utils.Encode(b, off, 3, _tempBuffer, 0); await Trans.WriteAsync(_tempBuffer, 0, 4, cancellationToken); off += 3; len -= 3; } if (len > 0) { // Encode remainder TBase64Utils.Encode(b, off, len, _tempBuffer, 0); await Trans.WriteAsync(_tempBuffer, 0, len + 1, cancellationToken); } await Trans.WriteAsync(Quote, cancellationToken); }
/// <summary> /// Write out contents of byte array b as a JSON string with base-64 encoded /// data /// </summary> private async Task WriteJsonBase64Async(byte[] bytes, CancellationToken cancellationToken) { await Context.WriteConditionalDelimiterAsync(cancellationToken); await Trans.WriteAsync(TJSONProtocolConstants.Quote, cancellationToken); var len = bytes.Length; var off = 0; while (len >= 3) { // Encode 3 bytes at a time TBase64Utils.Encode(bytes, off, 3, _tempBuffer, 0); await Trans.WriteAsync(_tempBuffer, 0, 4, cancellationToken); off += 3; len -= 3; } if (len > 0) { // Encode remainder TBase64Utils.Encode(bytes, off, len, _tempBuffer, 0); await Trans.WriteAsync(_tempBuffer, 0, len + 1, cancellationToken); } await Trans.WriteAsync(TJSONProtocolConstants.Quote, cancellationToken); }
/// <summary> /// Write out contents of byte array b as a JSON string with base-64 encoded /// data /// </summary> private async Task WriteJsonBase64Async(byte[] b, CancellationToken cancellationToken) { await Context.WriteAsync(cancellationToken); await Trans.WriteAsync(Quote, cancellationToken); var len = b.Length; var off = 0; // Ignore padding var bound = len >= 2 ? len - 2 : 0; for (var i = len - 1; i >= bound && b[i] == '='; --i) { --len; } while (len >= 3) { // Encode 3 bytes at a time TBase64Utils.Encode(b, off, 3, _tempBuffer, 0); await Trans.WriteAsync(_tempBuffer, 0, 4, cancellationToken); off += 3; len -= 3; } if (len > 0) { // Encode remainder TBase64Utils.Encode(b, off, len, _tempBuffer, 0); await Trans.WriteAsync(_tempBuffer, 0, len + 1, cancellationToken); } await Trans.WriteAsync(Quote, cancellationToken); }