-
Data: 2010-09-01 15:31:09
Temat: Re: Streamin c#
Od: Selvin <p...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]po co stream :) kolejka nie moze byc?
jak chcesz to mozesz to odziedziczyc po System.IO.Stream
public class MyBuffer
{
Queue<MemoryChunk> buffers = new Queue<MemoryChunk>();
object readlock = new object();
public uint AvailableDataLength { get; private set; }
public void Write(byte[] data, int offset, int count)
{
var mem = AllocateMemoryChunk(count);
Buffer.BlockCopy(data, offset, mem.Buffer, 0, count);
lock (readlock)
{
buffers.Enqueue(mem);
AvailableDataLength += count;
}
}
public int Read(byte[] buffer, int offset, int count)
{
int toread = 0;
lock (readlock)
{
if (buffers.Count != 0)
{
var buf = buffers.Peek();
toread = buf.Buffer.Length - buf.Offset;
int off = buf.Offset;
if (count >= toread)
buffers.Dequeue();
else
{
toread = count;
buf.Offset += toread;
}
Buffer.BlockCopy(buf.Buffer, off, buffer, offset,
toread);
AvailableDataLength -= toread;
}
return toread;
}
}
private MemoryChunk AllocateMemoryChunk(int newSize)
{
//zawsze mozna zrobic z tego pool zeby nie tworzyc nowych
MemoryChunk chunk = new MemoryChunk(newSize);
return chunk;
}
private class MemoryChunk
{
internal byte[] Buffer;
internal int Offset = 0;
internal MemoryChunk(uint bufferSize)
{
Buffer = new byte[bufferSize];
Offset = 0;
}
}
}
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
Najnowsze wątki
- 2025-07-16 deltaT w pompie ciepla
- 2025-07-16 dron na granicy polsko niemieckiej
- 2025-07-16 Warszawa => Senior IT Recruitment Consultant <=
- 2025-07-16 Gdańsk => Mainframe (z/OS, Assembler) Developer <=
- 2025-07-16 Gdańsk => Delphi Programmer <=
- 2025-07-16 Warszawa => BI Developer <=
- 2025-07-16 Gdańsk => Programista Delphi <=
- 2025-07-16 chroń PESEL dziecka
- 2025-07-16 Rzeszów => Spedytor Międzynarodowy <=
- 2025-07-16 Gdańsk => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-07-16 Kraków => Kotlin Developer <=
- 2025-07-16 Warszawa => Inżynier oprogramowania .Net <=
- 2025-07-16 Tadeusz Rolke RIP
- 2025-07-14 Dwa dylematy
- 2025-07-14 Re: Dwa dylematy