2
0
mirror of https://github.com/esiur/esiur-dart.git synced 2026-04-04 02:08:21 +00:00

null-safety

This commit is contained in:
2021-07-24 13:12:43 +03:00
parent 6be04c39ed
commit 614c6853e3
48 changed files with 3022 additions and 3320 deletions

View File

@@ -25,110 +25,82 @@ SOFTWARE.
import '../Data/DC.dart';
import 'dart:core';
class NetworkBuffer
{
DC _data;
class NetworkBuffer {
DC _data = new DC(0);
int _neededDataLength = 0;
NetworkBuffer()
{
int _neededDataLength = 0;
NetworkBuffer() {}
bool get protected => _neededDataLength > _data.length;
int get available => _data.length;
void holdForNextWrite(DC src, int offset, int size) {
holdFor(src, offset, size, size + 1);
}
void holdFor(DC src, int offset, int size, int needed) {
//lock (syncLock)
//{
if (size >= needed) throw new Exception("Size >= Needed !");
//trim = true;
_data = DC.combine(src, offset, size, _data, 0, _data.length);
_neededDataLength = needed;
//}
}
void holdForNeeded(DC src, int needed) {
holdFor(src, 0, src.length, needed);
}
bool protect(DC data, int offset, int needed) {
int dataLength = _data.length - offset;
// protection
if (dataLength < needed) {
holdFor(data, offset, dataLength, needed);
return true;
} else
return false;
}
void write(DC src, int offset, int length) {
//lock(syncLock)
_data.append(src, offset, length);
}
bool get canRead {
if (_data.length == 0) return false;
if (_data.length < _neededDataLength) return false;
return true;
}
DC? read() {
//lock (syncLock)
//{
if (_data.length == 0) return null;
DC? rt = null;
if (_neededDataLength == 0) {
rt = _data;
_data = new DC(0);
} else {
if (_data.length >= _neededDataLength) {
rt = _data;
_data = new DC(0);
}
bool get protected => _neededDataLength > _data.length;
int get available => _data.length;
void holdForNextWrite(DC src, int offset, int size)
{
holdFor(src, offset, size, size + 1);
}
void holdFor(DC src, int offset, int size, int needed)
{
//lock (syncLock)
//{
if (size >= needed)
throw new Exception("Size >= Needed !");
//trim = true;
_data = DC.combine(src, offset, size, _data, 0, _data.length);
_neededDataLength = needed;
//}
}
void holdForNeeded(DC src, int needed)
{
holdFor(src, 0, src.length, needed);
}
bool protect(DC data, int offset, int needed)
{
int dataLength = _data.length - offset;
// protection
if (dataLength < needed)
{
holdFor(data, offset, dataLength, needed);
return true;
}
else
return false;
}
void write(DC src, int offset, int length)
{
//lock(syncLock)
_data.append(src, offset, length);
}
bool get canRead
{
if (_data.length == 0)
return false;
if (_data.length < _neededDataLength)
return false;
return true;
}
DC read()
{
//lock (syncLock)
//{
if (_data.length == 0)
return null;
DC rt = null;
if (_neededDataLength == 0)
{
rt = _data;
_data = new DC(0);
}
else
{
if (_data.length >= _neededDataLength)
{
rt = _data;
_data = new DC(0);
_neededDataLength = 0;
return rt;
}
else
{
return null;
}
}
//}
_neededDataLength = 0;
return rt;
} else {
return null;
}
}
}
//}
return rt;
}
}