12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622 |
- <?xml version="1.0"?>
- <doc>
- <assembly>
- <name>Microsoft.IO.RecyclableMemoryStream</name>
- </assembly>
- <members>
- <member name="T:Microsoft.IO.RecyclableMemoryStreamManager">
- <summary>
- Manages pools of <see cref="T:Microsoft.IO.RecyclableMemoryStream"/> objects.
- </summary>
- <remarks>
- <para>
- There are two pools managed in here. The small pool contains same-sized buffers that are handed to streams
- as they write more data.
- </para>
- <para>
- For scenarios that need to call <see cref="M:Microsoft.IO.RecyclableMemoryStream.GetBuffer"/>, the large pool contains buffers of various sizes, all
- multiples/exponentials of <see cref="P:Microsoft.IO.RecyclableMemoryStreamManager.LargeBufferMultiple"/> (1 MB by default). They are split by size to avoid overly-wasteful buffer
- usage. There should be far fewer 8 MB buffers than 1 MB buffers, for example.
- </para>
- </remarks>
- </member>
- <member name="T:Microsoft.IO.RecyclableMemoryStreamManager.StreamCreatedEventArgs">
- <summary>
- Arguments for the <see cref="E:Microsoft.IO.RecyclableMemoryStreamManager.StreamCreated"/> event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamCreatedEventArgs.Id">
- <summary>
- Unique ID for the stream.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamCreatedEventArgs.Tag">
- <summary>
- Optional Tag for the event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamCreatedEventArgs.RequestedSize">
- <summary>
- Requested stream size.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamCreatedEventArgs.ActualSize">
- <summary>
- Actual stream size.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.StreamCreatedEventArgs.#ctor(System.Guid,System.String,System.Int64,System.Int64)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStreamManager.StreamCreatedEventArgs"/> class.
- </summary>
- <param name="guid">Unique ID of the stream.</param>
- <param name="tag">Tag of the stream.</param>
- <param name="requestedSize">The requested stream size.</param>
- <param name="actualSize">The actual stream size.</param>
- </member>
- <member name="T:Microsoft.IO.RecyclableMemoryStreamManager.StreamDisposedEventArgs">
- <summary>
- Arguments for the <see cref="E:Microsoft.IO.RecyclableMemoryStreamManager.StreamDisposed"/> event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamDisposedEventArgs.Id">
- <summary>
- Unique ID for the stream.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamDisposedEventArgs.Tag">
- <summary>
- Optional Tag for the event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamDisposedEventArgs.AllocationStack">
- <summary>
- Stack where the stream was allocated.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamDisposedEventArgs.DisposeStack">
- <summary>
- Stack where stream was disposed.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamDisposedEventArgs.Lifetime">
- <summary>
- Lifetime of the stream.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.StreamDisposedEventArgs.#ctor(System.Guid,System.String,System.String,System.String)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStreamManager.StreamDisposedEventArgs"/> class.
- </summary>
- <param name="guid">Unique ID of the stream.</param>
- <param name="tag">Tag of the stream.</param>
- <param name="allocationStack">Stack of original allocation.</param>
- <param name="disposeStack">Dispose stack.</param>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.StreamDisposedEventArgs.#ctor(System.Guid,System.String,System.TimeSpan,System.String,System.String)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStreamManager.StreamDisposedEventArgs"/> class.
- </summary>
- <param name="guid">Unique ID of the stream.</param>
- <param name="tag">Tag of the stream.</param>
- <param name="lifetime">Lifetime of the stream</param>
- <param name="allocationStack">Stack of original allocation.</param>
- <param name="disposeStack">Dispose stack.</param>
- </member>
- <member name="T:Microsoft.IO.RecyclableMemoryStreamManager.StreamDoubleDisposedEventArgs">
- <summary>
- Arguments for the <see cref="E:Microsoft.IO.RecyclableMemoryStreamManager.StreamDoubleDisposed"/> event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamDoubleDisposedEventArgs.Id">
- <summary>
- Unique ID for the stream.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamDoubleDisposedEventArgs.Tag">
- <summary>
- Optional Tag for the event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamDoubleDisposedEventArgs.AllocationStack">
- <summary>
- Stack where the stream was allocated.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamDoubleDisposedEventArgs.DisposeStack1">
- <summary>
- First dispose stack.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamDoubleDisposedEventArgs.DisposeStack2">
- <summary>
- Second dispose stack.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.StreamDoubleDisposedEventArgs.#ctor(System.Guid,System.String,System.String,System.String,System.String)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStreamManager.StreamDoubleDisposedEventArgs"/> class.
- </summary>
- <param name="guid">Unique ID of the stream.</param>
- <param name="tag">Tag of the stream.</param>
- <param name="allocationStack">Stack of original allocation.</param>
- <param name="disposeStack1">First dispose stack.</param>
- <param name="disposeStack2">Second dispose stack.</param>
- </member>
- <member name="T:Microsoft.IO.RecyclableMemoryStreamManager.StreamFinalizedEventArgs">
- <summary>
- Arguments for the <see cref="E:Microsoft.IO.RecyclableMemoryStreamManager.StreamFinalized"/> event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamFinalizedEventArgs.Id">
- <summary>
- Unique ID for the stream.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamFinalizedEventArgs.Tag">
- <summary>
- Optional Tag for the event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamFinalizedEventArgs.AllocationStack">
- <summary>
- Stack where the stream was allocated.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.StreamFinalizedEventArgs.#ctor(System.Guid,System.String,System.String)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStreamManager.StreamFinalizedEventArgs"/> class.
- </summary>
- <param name="guid">Unique ID of the stream.</param>
- <param name="tag">Tag of the stream.</param>
- <param name="allocationStack">Stack of original allocation.</param>
- </member>
- <member name="T:Microsoft.IO.RecyclableMemoryStreamManager.StreamConvertedToArrayEventArgs">
- <summary>
- Arguments for the <see cref="E:Microsoft.IO.RecyclableMemoryStreamManager.StreamConvertedToArray"/> event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamConvertedToArrayEventArgs.Id">
- <summary>
- Unique ID for the stream.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamConvertedToArrayEventArgs.Tag">
- <summary>
- Optional Tag for the event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamConvertedToArrayEventArgs.Stack">
- <summary>
- Stack where ToArray was called.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamConvertedToArrayEventArgs.Length">
- <summary>
- Length of stack.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.StreamConvertedToArrayEventArgs.#ctor(System.Guid,System.String,System.String,System.Int64)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStreamManager.StreamConvertedToArrayEventArgs"/> class.
- </summary>
- <param name="guid">Unique ID of the stream.</param>
- <param name="tag">Tag of the stream.</param>
- <param name="stack">Stack of ToArray call.</param>
- <param name="length">Length of stream.</param>
- </member>
- <member name="T:Microsoft.IO.RecyclableMemoryStreamManager.StreamOverCapacityEventArgs">
- <summary>
- Arguments for the <see cref="E:Microsoft.IO.RecyclableMemoryStreamManager.StreamOverCapacity"/> event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamOverCapacityEventArgs.Id">
- <summary>
- Unique ID for the stream.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamOverCapacityEventArgs.Tag">
- <summary>
- Optional Tag for the event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamOverCapacityEventArgs.AllocationStack">
- <summary>
- Original allocation stack.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamOverCapacityEventArgs.RequestedCapacity">
- <summary>
- Requested capacity.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamOverCapacityEventArgs.MaximumCapacity">
- <summary>
- Maximum capacity.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.StreamOverCapacityEventArgs.#ctor(System.Guid,System.String,System.Int64,System.Int64,System.String)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStreamManager.StreamOverCapacityEventArgs"/> class.
- </summary>
- <param name="guid">Unique ID of the stream.</param>
- <param name="tag">Tag of the stream.</param>
- <param name="requestedCapacity">Requested capacity.</param>
- <param name="maximumCapacity">Maximum stream capacity of the manager.</param>
- <param name="allocationStack">Original allocation stack.</param>
- </member>
- <member name="T:Microsoft.IO.RecyclableMemoryStreamManager.BlockCreatedEventArgs">
- <summary>
- Arguments for the <see cref="E:Microsoft.IO.RecyclableMemoryStreamManager.BlockCreated"/> event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.BlockCreatedEventArgs.SmallPoolInUse">
- <summary>
- How many bytes are currently in use from the small pool.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.BlockCreatedEventArgs.#ctor(System.Int64)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStreamManager.BlockCreatedEventArgs"/> class.
- </summary>
- <param name="smallPoolInUse">Number of bytes currently in use from the small pool.</param>
- </member>
- <member name="T:Microsoft.IO.RecyclableMemoryStreamManager.LargeBufferCreatedEventArgs">
- <summary>
- Arguments for the <see cref="E:Microsoft.IO.RecyclableMemoryStreamManager.LargeBufferCreated"/> events.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.LargeBufferCreatedEventArgs.Id">
- <summary>
- Unique ID for the stream.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.LargeBufferCreatedEventArgs.Tag">
- <summary>
- Optional Tag for the event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.LargeBufferCreatedEventArgs.Pooled">
- <summary>
- Whether the buffer was satisfied from the pool or not.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.LargeBufferCreatedEventArgs.RequiredSize">
- <summary>
- Required buffer size.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.LargeBufferCreatedEventArgs.LargePoolInUse">
- <summary>
- How many bytes are in use from the large pool.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.LargeBufferCreatedEventArgs.CallStack">
- <summary>
- If the buffer was not satisfied from the pool, and <see cref="P:Microsoft.IO.RecyclableMemoryStreamManager.GenerateCallStacks"/> is turned on, then.
- this will contain the callstack of the allocation request.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.LargeBufferCreatedEventArgs.#ctor(System.Guid,System.String,System.Int64,System.Int64,System.Boolean,System.String)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStreamManager.LargeBufferCreatedEventArgs"/> class.
- </summary>
- <param name="guid">Unique ID of the stream.</param>
- <param name="tag">Tag of the stream.</param>
- <param name="requiredSize">Required size of the new buffer.</param>
- <param name="largePoolInUse">How many bytes from the large pool are currently in use.</param>
- <param name="pooled">Whether the buffer was satisfied from the pool or not.</param>
- <param name="callStack">Callstack of the allocation, if it wasn't pooled.</param>
- </member>
- <member name="T:Microsoft.IO.RecyclableMemoryStreamManager.BufferDiscardedEventArgs">
- <summary>
- Arguments for the <see cref="E:Microsoft.IO.RecyclableMemoryStreamManager.BufferDiscarded"/> event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.BufferDiscardedEventArgs.Id">
- <summary>
- Unique ID for the stream.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.BufferDiscardedEventArgs.Tag">
- <summary>
- Optional Tag for the event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.BufferDiscardedEventArgs.BufferType">
- <summary>
- Type of the buffer.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.BufferDiscardedEventArgs.Reason">
- <summary>
- The reason this buffer was discarded.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.BufferDiscardedEventArgs.#ctor(System.Guid,System.String,Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamBufferType,Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamDiscardReason)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStreamManager.BufferDiscardedEventArgs"/> class.
- </summary>
- <param name="guid">Unique ID of the stream.</param>
- <param name="tag">Tag of the stream.</param>
- <param name="bufferType">Type of buffer being discarded.</param>
- <param name="reason">The reason for the discard.</param>
- </member>
- <member name="T:Microsoft.IO.RecyclableMemoryStreamManager.StreamLengthEventArgs">
- <summary>
- Arguments for the <see cref="E:Microsoft.IO.RecyclableMemoryStreamManager.StreamLength"/> event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.StreamLengthEventArgs.Length">
- <summary>
- Length of the stream.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.StreamLengthEventArgs.#ctor(System.Int64)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStreamManager.StreamLengthEventArgs"/> class.
- </summary>
- <param name="length">Length of the strength.</param>
- </member>
- <member name="T:Microsoft.IO.RecyclableMemoryStreamManager.UsageReportEventArgs">
- <summary>
- Arguments for the <see cref="E:Microsoft.IO.RecyclableMemoryStreamManager.UsageReport"/> event.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.UsageReportEventArgs.SmallPoolInUseBytes">
- <summary>
- Bytes from the small pool currently in use.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.UsageReportEventArgs.SmallPoolFreeBytes">
- <summary>
- Bytes from the small pool currently available.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.UsageReportEventArgs.LargePoolInUseBytes">
- <summary>
- Bytes from the large pool currently in use.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.UsageReportEventArgs.LargePoolFreeBytes">
- <summary>
- Bytes from the large pool currently available.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.UsageReportEventArgs.#ctor(System.Int64,System.Int64,System.Int64,System.Int64)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStreamManager.UsageReportEventArgs"/> class.
- </summary>
- <param name="smallPoolInUseBytes">Bytes from the small pool currently in use.</param>
- <param name="smallPoolFreeBytes">Bytes from the small pool currently available.</param>
- <param name="largePoolInUseBytes">Bytes from the large pool currently in use.</param>
- <param name="largePoolFreeBytes">Bytes from the large pool currently available.</param>
- </member>
- <member name="T:Microsoft.IO.RecyclableMemoryStreamManager.Events">
- <summary>
- ETW events for RecyclableMemoryStream.
- </summary>
- </member>
- <member name="F:Microsoft.IO.RecyclableMemoryStreamManager.Events.Writer">
- <summary>
- Static log object, through which all events are written.
- </summary>
- </member>
- <member name="T:Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamBufferType">
- <summary>
- Type of buffer.
- </summary>
- </member>
- <member name="F:Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamBufferType.Small">
- <summary>
- Small block buffer.
- </summary>
- </member>
- <member name="F:Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamBufferType.Large">
- <summary>
- Large pool buffer.
- </summary>
- </member>
- <member name="T:Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamDiscardReason">
- <summary>
- The possible reasons for discarding a buffer.
- </summary>
- </member>
- <member name="F:Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamDiscardReason.TooLarge">
- <summary>
- Buffer was too large to be re-pooled.
- </summary>
- </member>
- <member name="F:Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamDiscardReason.EnoughFree">
- <summary>
- There are enough free bytes in the pool.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamCreated(System.Guid,System.String,System.Int64,System.Int64)">
- <summary>
- Logged when a stream object is created.
- </summary>
- <param name="guid">A unique ID for this stream.</param>
- <param name="tag">A temporary ID for this stream, usually indicates current usage.</param>
- <param name="requestedSize">Requested size of the stream.</param>
- <param name="actualSize">Actual size given to the stream from the pool.</param>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamDisposed(System.Guid,System.String,System.Int64,System.String,System.String)">
- <summary>
- Logged when the stream is disposed.
- </summary>
- <param name="guid">A unique ID for this stream.</param>
- <param name="tag">A temporary ID for this stream, usually indicates current usage.</param>
- <param name="lifetimeMs">Lifetime in milliseconds of the stream</param>
- <param name="allocationStack">Call stack of initial allocation.</param>
- <param name="disposeStack">Call stack of the dispose.</param>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamDoubleDispose(System.Guid,System.String,System.String,System.String,System.String)">
- <summary>
- Logged when the stream is disposed for the second time.
- </summary>
- <param name="guid">A unique ID for this stream.</param>
- <param name="tag">A temporary ID for this stream, usually indicates current usage.</param>
- <param name="allocationStack">Call stack of initial allocation.</param>
- <param name="disposeStack1">Call stack of the first dispose.</param>
- <param name="disposeStack2">Call stack of the second dispose.</param>
- <remarks>Note: Stacks will only be populated if RecyclableMemoryStreamManager.GenerateCallStacks is true.</remarks>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamFinalized(System.Guid,System.String,System.String)">
- <summary>
- Logged when a stream is finalized.
- </summary>
- <param name="guid">A unique ID for this stream.</param>
- <param name="tag">A temporary ID for this stream, usually indicates current usage.</param>
- <param name="allocationStack">Call stack of initial allocation.</param>
- <remarks>Note: Stacks will only be populated if RecyclableMemoryStreamManager.GenerateCallStacks is true.</remarks>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamToArray(System.Guid,System.String,System.String,System.Int64)">
- <summary>
- Logged when ToArray is called on a stream.
- </summary>
- <param name="guid">A unique ID for this stream.</param>
- <param name="tag">A temporary ID for this stream, usually indicates current usage.</param>
- <param name="stack">Call stack of the ToArray call.</param>
- <param name="size">Length of stream.</param>
- <remarks>Note: Stacks will only be populated if RecyclableMemoryStreamManager.GenerateCallStacks is true.</remarks>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamManagerInitialized(System.Int32,System.Int32,System.Int32)">
- <summary>
- Logged when the RecyclableMemoryStreamManager is initialized.
- </summary>
- <param name="blockSize">Size of blocks, in bytes.</param>
- <param name="largeBufferMultiple">Size of the large buffer multiple, in bytes.</param>
- <param name="maximumBufferSize">Maximum buffer size, in bytes.</param>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamNewBlockCreated(System.Int64)">
- <summary>
- Logged when a new block is created.
- </summary>
- <param name="smallPoolInUseBytes">Number of bytes in the small pool currently in use.</param>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamNewLargeBufferCreated(System.Int64,System.Int64)">
- <summary>
- Logged when a new large buffer is created.
- </summary>
- <param name="requiredSize">Requested size.</param>
- <param name="largePoolInUseBytes">Number of bytes in the large pool in use.</param>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamNonPooledLargeBufferCreated(System.Guid,System.String,System.Int64,System.String)">
- <summary>
- Logged when a buffer is created that is too large to pool.
- </summary>
- <param name="guid">Unique stream ID.</param>
- <param name="tag">A temporary ID for this stream, usually indicates current usage.</param>
- <param name="requiredSize">Size requested by the caller.</param>
- <param name="allocationStack">Call stack of the requested stream.</param>
- <remarks>Note: Stacks will only be populated if RecyclableMemoryStreamManager.GenerateCallStacks is true.</remarks>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamDiscardBuffer(System.Guid,System.String,Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamBufferType,Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamDiscardReason,System.Int64,System.Int64,System.Int64,System.Int64,System.Int64,System.Int64)">
- <summary>
- Logged when a buffer is discarded (not put back in the pool, but given to GC to clean up).
- </summary>
- <param name="guid">Unique stream ID.</param>
- <param name="tag">A temporary ID for this stream, usually indicates current usage.</param>
- <param name="bufferType">Type of the buffer being discarded.</param>
- <param name="reason">Reason for the discard.</param>
- <param name="smallBlocksFree">Number of free small pool blocks.</param>
- <param name="smallPoolBytesFree">Bytes free in the small pool.</param>
- <param name="smallPoolBytesInUse">Bytes in use from the small pool.</param>
- <param name="largeBlocksFree">Number of free large pool blocks.</param>
- <param name="largePoolBytesFree">Bytes free in the large pool.</param>
- <param name="largePoolBytesInUse">Bytes in use from the large pool.</param>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.Events.MemoryStreamOverCapacity(System.Guid,System.String,System.Int64,System.Int64,System.String)">
- <summary>
- Logged when a stream grows beyond the maximum capacity.
- </summary>
- <param name="guid">Unique stream ID</param>
- <param name="requestedCapacity">The requested capacity.</param>
- <param name="maxCapacity">Maximum capacity, as configured by RecyclableMemoryStreamManager.</param>
- <param name="tag">A temporary ID for this stream, usually indicates current usage.</param>
- <param name="allocationStack">Call stack for the capacity request.</param>
- <remarks>Note: Stacks will only be populated if RecyclableMemoryStreamManager.GenerateCallStacks is true.</remarks>
- </member>
- <member name="F:Microsoft.IO.RecyclableMemoryStreamManager.MaxArrayLength">
- <summary>
- Maximum length of a single array.
- </summary>
- <remarks>See documentation at https://docs.microsoft.com/dotnet/api/system.array?view=netcore-3.1
- </remarks>
- </member>
- <member name="F:Microsoft.IO.RecyclableMemoryStreamManager.DefaultBlockSize">
- <summary>
- Default block size, in bytes.
- </summary>
- </member>
- <member name="F:Microsoft.IO.RecyclableMemoryStreamManager.DefaultLargeBufferMultiple">
- <summary>
- Default large buffer multiple, in bytes.
- </summary>
- </member>
- <member name="F:Microsoft.IO.RecyclableMemoryStreamManager.DefaultMaximumBufferSize">
- <summary>
- Default maximum buffer size, in bytes.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.#ctor">
- <summary>
- Initializes the memory manager with the default block/buffer specifications. This pool may have unbounded growth unless you modify <see cref="P:Microsoft.IO.RecyclableMemoryStreamManager.MaximumFreeSmallPoolBytes"/> and <see cref="P:Microsoft.IO.RecyclableMemoryStreamManager.MaximumFreeLargePoolBytes"/>.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.#ctor(System.Int64,System.Int64)">
- <summary>
- Initializes the memory manager with the default block/buffer specifications and maximum free bytes specifications.
- </summary>
- <param name="maximumSmallPoolFreeBytes">Maximum number of bytes to keep available in the small pool before future buffers get dropped for garbage collection</param>
- <param name="maximumLargePoolFreeBytes">Maximum number of bytes to keep available in the large pool before future buffers get dropped for garbage collection</param>
- <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="maximumSmallPoolFreeBytes"/> is negative, or <paramref name="maximumLargePoolFreeBytes"/> is negative.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.#ctor(System.Int32,System.Int32,System.Int32)">
- <summary>
- Initializes the memory manager with the given block requiredSize. This pool may have unbounded growth unless you modify <see cref="P:Microsoft.IO.RecyclableMemoryStreamManager.MaximumFreeSmallPoolBytes"/> and <see cref="P:Microsoft.IO.RecyclableMemoryStreamManager.MaximumFreeLargePoolBytes"/>.
- </summary>
- <param name="blockSize">Size of each block that is pooled. Must be > 0.</param>
- <param name="largeBufferMultiple">Each large buffer will be a multiple of this value.</param>
- <param name="maximumBufferSize">Buffers larger than this are not pooled</param>
- <exception cref="T:System.ArgumentOutOfRangeException">
- <paramref name="blockSize"/> is not a positive number,
- or <paramref name="largeBufferMultiple"/> is not a positive number,
- or <paramref name="maximumBufferSize"/> is less than <paramref name="blockSize"/>.</exception>
- <exception cref="T:System.ArgumentException"><paramref name="maximumBufferSize"/> is not a multiple of <paramref name="largeBufferMultiple"/>.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.#ctor(System.Int32,System.Int32,System.Int32,System.Int64,System.Int64)">
- <summary>
- Initializes the memory manager with the given block requiredSize.
- </summary>
- <param name="blockSize">Size of each block that is pooled. Must be > 0.</param>
- <param name="largeBufferMultiple">Each large buffer will be a multiple of this value.</param>
- <param name="maximumBufferSize">Buffers larger than this are not pooled</param>
- <param name="maximumSmallPoolFreeBytes">Maximum number of bytes to keep available in the small pool before future buffers get dropped for garbage collection</param>
- <param name="maximumLargePoolFreeBytes">Maximum number of bytes to keep available in the large pool before future buffers get dropped for garbage collection</param>
- <exception cref="T:System.ArgumentOutOfRangeException">
- <paramref name="blockSize"/> is not a positive number,
- or <paramref name="largeBufferMultiple"/> is not a positive number,
- or <paramref name="maximumBufferSize"/> is less than <paramref name="blockSize"/>,
- or <paramref name="maximumSmallPoolFreeBytes"/> is negative,
- or <paramref name="maximumLargePoolFreeBytes"/> is negative.
- </exception>
- <exception cref="T:System.ArgumentException"><paramref name="maximumBufferSize"/> is not a multiple of <paramref name="largeBufferMultiple"/>.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.#ctor(System.Int32,System.Int32,System.Int32,System.Boolean)">
- <summary>
- Initializes the memory manager with the given block requiredSize. This pool may have unbounded growth unless you modify <see cref="P:Microsoft.IO.RecyclableMemoryStreamManager.MaximumFreeSmallPoolBytes"/> and <see cref="P:Microsoft.IO.RecyclableMemoryStreamManager.MaximumFreeLargePoolBytes"/>.
- </summary>
- <param name="blockSize">Size of each block that is pooled. Must be > 0.</param>
- <param name="largeBufferMultiple">Each large buffer will be a multiple/exponential of this value.</param>
- <param name="maximumBufferSize">Buffers larger than this are not pooled</param>
- <param name="useExponentialLargeBuffer">Switch to exponential large buffer allocation strategy</param>
- <exception cref="T:System.ArgumentOutOfRangeException">
- <paramref name="blockSize"/> is not a positive number,
- or <paramref name="largeBufferMultiple"/> is not a positive number,
- or <paramref name="maximumBufferSize"/> is less than <paramref name="blockSize"/>.</exception>
- <exception cref="T:System.ArgumentException"><paramref name="maximumBufferSize"/> is not a multiple/exponential of <paramref name="largeBufferMultiple"/>.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.#ctor(System.Int32,System.Int32,System.Int32,System.Boolean,System.Int64,System.Int64)">
- <summary>
- Initializes the memory manager with the given block requiredSize.
- </summary>
- <param name="blockSize">Size of each block that is pooled. Must be > 0.</param>
- <param name="largeBufferMultiple">Each large buffer will be a multiple/exponential of this value.</param>
- <param name="maximumBufferSize">Buffers larger than this are not pooled.</param>
- <param name="useExponentialLargeBuffer">Switch to exponential large buffer allocation strategy.</param>
- <param name="maximumSmallPoolFreeBytes">Maximum number of bytes to keep available in the small pool before future buffers get dropped for garbage collection.</param>
- <param name="maximumLargePoolFreeBytes">Maximum number of bytes to keep available in the large pool before future buffers get dropped for garbage collection.</param>
- <exception cref="T:System.ArgumentOutOfRangeException">
- <paramref name="blockSize"/> is not a positive number,
- or <paramref name="largeBufferMultiple"/> is not a positive number,
- or <paramref name="maximumBufferSize"/> is less than <paramref name="blockSize"/>,
- or <paramref name="maximumSmallPoolFreeBytes"/> is negative,
- or <paramref name="maximumLargePoolFreeBytes"/> is negative.
- </exception>
- <exception cref="T:System.ArgumentException"><paramref name="maximumBufferSize"/> is not a multiple/exponential of <paramref name="largeBufferMultiple"/>.</exception>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.BlockSize">
- <summary>
- The size of each block. It must be set at creation and cannot be changed.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.LargeBufferMultiple">
- <summary>
- All buffers are multiples/exponentials of this number. It must be set at creation and cannot be changed.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.UseMultipleLargeBuffer">
- <summary>
- Use multiple large buffer allocation strategy. It must be set at creation and cannot be changed.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.UseExponentialLargeBuffer">
- <summary>
- Use exponential large buffer allocation strategy. It must be set at creation and cannot be changed.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.MaximumBufferSize">
- <summary>
- Gets the maximum buffer size.
- </summary>
- <remarks>Any buffer that is returned to the pool that is larger than this will be
- discarded and garbage collected.</remarks>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.SmallPoolFreeSize">
- <summary>
- Number of bytes in small pool not currently in use.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.SmallPoolInUseSize">
- <summary>
- Number of bytes currently in use by stream from the small pool.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.LargePoolFreeSize">
- <summary>
- Number of bytes in large pool not currently in use.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.LargePoolInUseSize">
- <summary>
- Number of bytes currently in use by streams from the large pool.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.SmallBlocksFree">
- <summary>
- How many blocks are in the small pool.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.LargeBuffersFree">
- <summary>
- How many buffers are in the large pool.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.MaximumFreeSmallPoolBytes">
- <summary>
- How many bytes of small free blocks to allow before we start dropping
- those returned to us.
- </summary>
- <remarks>The default value is 0, meaning the pool is unbounded.</remarks>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.MaximumFreeLargePoolBytes">
- <summary>
- How many bytes of large free buffers to allow before we start dropping
- those returned to us.
- </summary>
- <remarks>The default value is 0, meaning the pool is unbounded.</remarks>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.MaximumStreamCapacity">
- <summary>
- Maximum stream capacity in bytes. Attempts to set a larger capacity will
- result in an exception.
- </summary>
- <remarks>A value of 0 indicates no limit.</remarks>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.GenerateCallStacks">
- <summary>
- Whether to save callstacks for stream allocations. This can help in debugging.
- It should NEVER be turned on generally in production.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.AggressiveBufferReturn">
- <summary>
- Whether dirty buffers can be immediately returned to the buffer pool.
- </summary>
- <remarks>
- <para>
- When <see cref="M:Microsoft.IO.RecyclableMemoryStream.GetBuffer"/> is called on a stream and creates a single large buffer, if this setting is enabled, the other blocks will be returned
- to the buffer pool immediately.
- </para>
- <para>
- Note when enabling this setting that the user is responsible for ensuring that any buffer previously
- retrieved from a stream which is subsequently modified is not used after modification (as it may no longer
- be valid).
- </para>
- </remarks>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStreamManager.ThrowExceptionOnToArray">
- <summary>
- Causes an exception to be thrown if <see cref="M:Microsoft.IO.RecyclableMemoryStream.ToArray"/> is ever called.
- </summary>
- <remarks>Calling <see cref="M:Microsoft.IO.RecyclableMemoryStream.ToArray"/> defeats the purpose of a pooled buffer. Use this property to discover code that is calling <see cref="M:Microsoft.IO.RecyclableMemoryStream.ToArray"/>. If this is
- set and <see cref="M:Microsoft.IO.RecyclableMemoryStream.ToArray"/> is called, a <c>NotSupportedException</c> will be thrown.</remarks>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetBlock">
- <summary>
- Removes and returns a single block from the pool.
- </summary>
- <returns>A <c>byte[]</c> array.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetLargeBuffer(System.Int64,System.Guid,System.String)">
- <summary>
- Returns a buffer of arbitrary size from the large buffer pool. This buffer
- will be at least the requiredSize and always be a multiple/exponential of largeBufferMultiple.
- </summary>
- <param name="requiredSize">The minimum length of the buffer.</param>
- <param name="id">Unique ID for the stream.</param>
- <param name="tag">The tag of the stream returning this buffer, for logging if necessary.</param>
- <returns>A buffer of at least the required size.</returns>
- <exception cref="T:System.OutOfMemoryException">Requested array size is larger than the maximum allowed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.ReturnLargeBuffer(System.Byte[],System.Guid,System.String)">
- <summary>
- Returns the buffer to the large pool.
- </summary>
- <param name="buffer">The buffer to return.</param>
- <param name="id">Unique stream ID.</param>
- <param name="tag">The tag of the stream returning this buffer, for logging if necessary.</param>
- <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is null.</exception>
- <exception cref="T:System.ArgumentException"><c>buffer.Length</c> is not a multiple/exponential of <see cref="P:Microsoft.IO.RecyclableMemoryStreamManager.LargeBufferMultiple"/> (it did not originate from this pool).</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.ReturnBlocks(System.Collections.Generic.List{System.Byte[]},System.Guid,System.String)">
- <summary>
- Returns the blocks to the pool.
- </summary>
- <param name="blocks">Collection of blocks to return to the pool.</param>
- <param name="id">Unique Stream ID.</param>
- <param name="tag">The tag of the stream returning these blocks, for logging if necessary.</param>
- <exception cref="T:System.ArgumentNullException"><paramref name="blocks"/> is null.</exception>
- <exception cref="T:System.ArgumentException"><paramref name="blocks"/> contains buffers that are the wrong size (or null) for this memory manager.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.ReturnBlock(System.Byte[],System.Guid,System.String)">
- <summary>
- Returns a block to the pool.
- </summary>
- <param name="block">Block to return to the pool.</param>
- <param name="id">Unique Stream ID.</param>
- <param name="tag">The tag of the stream returning this, for logging if necessary.</param>
- <exception cref="T:System.ArgumentNullException"><paramref name="block"/> is null.</exception>
- <exception cref="T:System.ArgumentException"><paramref name="block"/> is the wrong size for this memory manager.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with no tag and a default initial capacity.
- </summary>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.Guid)">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with no tag and a default initial capacity.
- </summary>
- <param name="id">A unique identifier which can be used to trace usages of the stream.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.String)">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the given tag and a default initial capacity.
- </summary>
- <param name="tag">A tag which can be used to track the source of the stream.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.Guid,System.String)">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the given tag and a default initial capacity.
- </summary>
- <param name="id">A unique identifier which can be used to trace usages of the stream.</param>
- <param name="tag">A tag which can be used to track the source of the stream.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.String,System.Int32)">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the given tag and at least the given capacity.
- </summary>
- <param name="tag">A tag which can be used to track the source of the stream.</param>
- <param name="requiredSize">The minimum desired capacity for the stream.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.Guid,System.String,System.Int32)">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the given tag and at least the given capacity.
- </summary>
- <param name="id">A unique identifier which can be used to trace usages of the stream.</param>
- <param name="tag">A tag which can be used to track the source of the stream.</param>
- <param name="requiredSize">The minimum desired capacity for the stream.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.Guid,System.String,System.Int64)">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the given tag and at least the given capacity.
- </summary>
- <param name="id">A unique identifier which can be used to trace usages of the stream.</param>
- <param name="tag">A tag which can be used to track the source of the stream.</param>
- <param name="requiredSize">The minimum desired capacity for the stream.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.Guid,System.String,System.Int32,System.Boolean)">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the given tag and at least the given capacity, possibly using
- a single contiguous underlying buffer.
- </summary>
- <remarks>Retrieving a <c>MemoryStream</c> which provides a single contiguous buffer can be useful in situations
- where the initial size is known and it is desirable to avoid copying data between the smaller underlying
- buffers to a single large one. This is most helpful when you know that you will always call <see cref="M:Microsoft.IO.RecyclableMemoryStream.GetBuffer"/>
- on the underlying stream.</remarks>
- <param name="id">A unique identifier which can be used to trace usages of the stream.</param>
- <param name="tag">A tag which can be used to track the source of the stream.</param>
- <param name="requiredSize">The minimum desired capacity for the stream.</param>
- <param name="asContiguousBuffer">Whether to attempt to use a single contiguous buffer.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.Guid,System.String,System.Int64,System.Boolean)">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the given tag and at least the given capacity, possibly using
- a single contiguous underlying buffer.
- </summary>
- <remarks>Retrieving a <c>MemoryStream</c> which provides a single contiguous buffer can be useful in situations
- where the initial size is known and it is desirable to avoid copying data between the smaller underlying
- buffers to a single large one. This is most helpful when you know that you will always call <see cref="M:Microsoft.IO.RecyclableMemoryStream.GetBuffer"/>
- on the underlying stream.</remarks>
- <param name="id">A unique identifier which can be used to trace usages of the stream.</param>
- <param name="tag">A tag which can be used to track the source of the stream.</param>
- <param name="requiredSize">The minimum desired capacity for the stream.</param>
- <param name="asContiguousBuffer">Whether to attempt to use a single contiguous buffer.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.String,System.Int32,System.Boolean)">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the given tag and at least the given capacity, possibly using
- a single contiguous underlying buffer.
- </summary>
- <remarks>Retrieving a MemoryStream which provides a single contiguous buffer can be useful in situations
- where the initial size is known and it is desirable to avoid copying data between the smaller underlying
- buffers to a single large one. This is most helpful when you know that you will always call <see cref="M:Microsoft.IO.RecyclableMemoryStream.GetBuffer"/>
- on the underlying stream.</remarks>
- <param name="tag">A tag which can be used to track the source of the stream.</param>
- <param name="requiredSize">The minimum desired capacity for the stream.</param>
- <param name="asContiguousBuffer">Whether to attempt to use a single contiguous buffer.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.String,System.Int64,System.Boolean)">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the given tag and at least the given capacity, possibly using
- a single contiguous underlying buffer.
- </summary>
- <remarks>Retrieving a MemoryStream which provides a single contiguous buffer can be useful in situations
- where the initial size is known and it is desirable to avoid copying data between the smaller underlying
- buffers to a single large one. This is most helpful when you know that you will always call <see cref="M:Microsoft.IO.RecyclableMemoryStream.GetBuffer"/>
- on the underlying stream.</remarks>
- <param name="tag">A tag which can be used to track the source of the stream.</param>
- <param name="requiredSize">The minimum desired capacity for the stream.</param>
- <param name="asContiguousBuffer">Whether to attempt to use a single contiguous buffer.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.Guid,System.String,System.Byte[],System.Int32,System.Int32)">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the given tag and with contents copied from the provided
- buffer. The provided buffer is not wrapped or used after construction.
- </summary>
- <remarks>The new stream's position is set to the beginning of the stream when returned.</remarks>
- <param name="id">A unique identifier which can be used to trace usages of the stream.</param>
- <param name="tag">A tag which can be used to track the source of the stream.</param>
- <param name="buffer">The byte buffer to copy data from.</param>
- <param name="offset">The offset from the start of the buffer to copy from.</param>
- <param name="count">The number of bytes to copy from the buffer.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.Byte[])">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the contents copied from the provided
- buffer. The provided buffer is not wrapped or used after construction.
- </summary>
- <remarks>The new stream's position is set to the beginning of the stream when returned.</remarks>
- <param name="buffer">The byte buffer to copy data from.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.String,System.Byte[],System.Int32,System.Int32)">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the given tag and with contents copied from the provided
- buffer. The provided buffer is not wrapped or used after construction.
- </summary>
- <remarks>The new stream's position is set to the beginning of the stream when returned.</remarks>
- <param name="tag">A tag which can be used to track the source of the stream.</param>
- <param name="buffer">The byte buffer to copy data from.</param>
- <param name="offset">The offset from the start of the buffer to copy from.</param>
- <param name="count">The number of bytes to copy from the buffer.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.Guid,System.String,System.Memory{System.Byte})">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the given tag and with contents copied from the provided
- buffer. The provided buffer is not wrapped or used after construction.
- </summary>
- <remarks>The new stream's position is set to the beginning of the stream when returned.</remarks>
- <param name="id">A unique identifier which can be used to trace usages of the stream.</param>
- <param name="tag">A tag which can be used to track the source of the stream.</param>
- <param name="buffer">The byte buffer to copy data from.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.Guid,System.String,System.ReadOnlySpan{System.Byte})">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the given tag and with contents copied from the provided
- buffer. The provided buffer is not wrapped or used after construction.
- </summary>
- <remarks>The new stream's position is set to the beginning of the stream when returned.</remarks>
- <param name="id">A unique identifier which can be used to trace usages of the stream.</param>
- <param name="tag">A tag which can be used to track the source of the stream.</param>
- <param name="buffer">The byte buffer to copy data from.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.Memory{System.Byte})">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the contents copied from the provided
- buffer. The provided buffer is not wrapped or used after construction.
- </summary>
- <remarks>The new stream's position is set to the beginning of the stream when returned.</remarks>
- <param name="buffer">The byte buffer to copy data from.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.ReadOnlySpan{System.Byte})">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the contents copied from the provided
- buffer. The provided buffer is not wrapped or used after construction.
- </summary>
- <remarks>The new stream's position is set to the beginning of the stream when returned.</remarks>
- <param name="buffer">The byte buffer to copy data from.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.String,System.Memory{System.Byte})">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the given tag and with contents copied from the provided
- buffer. The provided buffer is not wrapped or used after construction.
- </summary>
- <remarks>The new stream's position is set to the beginning of the stream when returned.</remarks>
- <param name="tag">A tag which can be used to track the source of the stream.</param>
- <param name="buffer">The byte buffer to copy data from.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStreamManager.GetStream(System.String,System.ReadOnlySpan{System.Byte})">
- <summary>
- Retrieve a new <c>MemoryStream</c> object with the given tag and with contents copied from the provided
- buffer. The provided buffer is not wrapped or used after construction.
- </summary>
- <remarks>The new stream's position is set to the beginning of the stream when returned.</remarks>
- <param name="tag">A tag which can be used to track the source of the stream.</param>
- <param name="buffer">The byte buffer to copy data from.</param>
- <returns>A <c>MemoryStream</c>.</returns>
- </member>
- <member name="E:Microsoft.IO.RecyclableMemoryStreamManager.BlockCreated">
- <summary>
- Triggered when a new block is created.
- </summary>
- </member>
- <member name="E:Microsoft.IO.RecyclableMemoryStreamManager.LargeBufferCreated">
- <summary>
- Triggered when a new large buffer is created.
- </summary>
- </member>
- <member name="E:Microsoft.IO.RecyclableMemoryStreamManager.StreamCreated">
- <summary>
- Triggered when a new stream is created.
- </summary>
- </member>
- <member name="E:Microsoft.IO.RecyclableMemoryStreamManager.StreamDisposed">
- <summary>
- Triggered when a stream is disposed.
- </summary>
- </member>
- <member name="E:Microsoft.IO.RecyclableMemoryStreamManager.StreamDoubleDisposed">
- <summary>
- Triggered when a stream is disposed of twice (an error).
- </summary>
- </member>
- <member name="E:Microsoft.IO.RecyclableMemoryStreamManager.StreamFinalized">
- <summary>
- Triggered when a stream is finalized.
- </summary>
- </member>
- <member name="E:Microsoft.IO.RecyclableMemoryStreamManager.StreamLength">
- <summary>
- Triggered when a stream is disposed to report the stream's length.
- </summary>
- </member>
- <member name="E:Microsoft.IO.RecyclableMemoryStreamManager.StreamConvertedToArray">
- <summary>
- Triggered when a user converts a stream to array.
- </summary>
- </member>
- <member name="E:Microsoft.IO.RecyclableMemoryStreamManager.StreamOverCapacity">
- <summary>
- Triggered when a stream is requested to expand beyond the maximum length specified by the responsible RecyclableMemoryStreamManager.
- </summary>
- </member>
- <member name="E:Microsoft.IO.RecyclableMemoryStreamManager.BufferDiscarded">
- <summary>
- Triggered when a buffer of either type is discarded, along with the reason for the discard.
- </summary>
- </member>
- <member name="E:Microsoft.IO.RecyclableMemoryStreamManager.UsageReport">
- <summary>
- Periodically triggered to report usage statistics.
- </summary>
- </member>
- <member name="T:Microsoft.IO.RecyclableMemoryStream">
- <summary>
- MemoryStream implementation that deals with pooling and managing memory streams which use potentially large
- buffers.
- </summary>
- <remarks>
- This class works in tandem with the <see cref="T:Microsoft.IO.RecyclableMemoryStreamManager"/> to supply <c>MemoryStream</c>-derived
- objects to callers, while avoiding these specific problems:
- <list type="number">
- <item>
- <term>LOH allocations</term>
- <description>Since all large buffers are pooled, they will never incur a Gen2 GC</description>
- </item>
- <item>
- <term>Memory waste</term><description>A standard memory stream doubles its size when it runs out of room. This
- leads to continual memory growth as each stream approaches the maximum allowed size.</description>
- </item>
- <item>
- <term>Memory copying</term>
- <description>Each time a <c>MemoryStream</c> grows, all the bytes are copied into new buffers.
- This implementation only copies the bytes when <see cref="M:Microsoft.IO.RecyclableMemoryStream.GetBuffer"/> is called.</description>
- </item>
- <item>
- <term>Memory fragmentation</term>
- <description>By using homogeneous buffer sizes, it ensures that blocks of memory
- can be easily reused.
- </description>
- </item>
- </list>
- <para>
- The stream is implemented on top of a series of uniformly-sized blocks. As the stream's length grows,
- additional blocks are retrieved from the memory manager. It is these blocks that are pooled, not the stream
- object itself.
- </para>
- <para>
- The biggest wrinkle in this implementation is when <see cref="M:Microsoft.IO.RecyclableMemoryStream.GetBuffer"/> is called. This requires a single
- contiguous buffer. If only a single block is in use, then that block is returned. If multiple blocks
- are in use, we retrieve a larger buffer from the memory manager. These large buffers are also pooled,
- split by size--they are multiples/exponentials of a chunk size (1 MB by default).
- </para>
- <para>
- Once a large buffer is assigned to the stream the small blocks are NEVER again used for this stream. All operations take place on the
- large buffer. The large buffer can be replaced by a larger buffer from the pool as needed. All blocks and large buffers
- are maintained in the stream until the stream is disposed (unless AggressiveBufferReturn is enabled in the stream manager).
- </para>
- <para>
- A further wrinkle is what happens when the stream is longer than the maximum allowable array length under .NET. This is allowed
- when only blocks are in use, and only the Read/Write APIs are used. Once a stream grows to this size, any attempt to convert it
- to a single buffer will result in an exception. Similarly, if a stream is already converted to use a single larger buffer, then
- it cannot grow beyond the limits of the maximum allowable array size.
- </para>
- <para>
- Any method that modifies the stream has the potential to throw an <c>OutOfMemoryException</c>, either because
- the stream is beyond the limits set in <c>RecyclableStreamManager</c>, or it would result in a buffer larger than
- the maximum array size supported by .NET.
- </para>
- </remarks>
- </member>
- <member name="F:Microsoft.IO.RecyclableMemoryStream.blocks">
- <summary>
- All of these blocks must be the same size.
- </summary>
- </member>
- <member name="F:Microsoft.IO.RecyclableMemoryStream.dirtyBuffers">
- <summary>
- This list is used to store buffers once they're replaced by something larger.
- This is for the cases where you have users of this class that may hold onto the buffers longer
- than they should and you want to prevent race conditions which could corrupt the data.
- </summary>
- </member>
- <member name="F:Microsoft.IO.RecyclableMemoryStream.largeBuffer">
- <summary>
- This is only set by GetBuffer() if the necessary buffer is larger than a single block size, or on
- construction if the caller immediately requests a single large buffer.
- </summary>
- <remarks>If this field is non-null, it contains the concatenation of the bytes found in the individual
- blocks. Once it is created, this (or a larger) largeBuffer will be used for the life of the stream.
- </remarks>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStream.Id">
- <summary>
- Unique identifier for this stream across its entire lifetime.
- </summary>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStream.Tag">
- <summary>
- A temporary identifier for the current usage of this stream.
- </summary>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStream.MemoryManager">
- <summary>
- Gets the memory manager being used by this stream.
- </summary>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStream.AllocationStack">
- <summary>
- Callstack of the constructor. It is only set if <see cref="P:Microsoft.IO.RecyclableMemoryStreamManager.GenerateCallStacks"/> is true,
- which should only be in debugging situations.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStream.DisposeStack">
- <summary>
- Callstack of the <see cref="M:Microsoft.IO.RecyclableMemoryStream.Dispose(System.Boolean)"/> call. It is only set if <see cref="P:Microsoft.IO.RecyclableMemoryStreamManager.GenerateCallStacks"/> is true,
- which should only be in debugging situations.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.#ctor(Microsoft.IO.RecyclableMemoryStreamManager)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStream"/> class.
- </summary>
- <param name="memoryManager">The memory manager.</param>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.#ctor(Microsoft.IO.RecyclableMemoryStreamManager,System.Guid)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStream"/> class.
- </summary>
- <param name="memoryManager">The memory manager.</param>
- <param name="id">A unique identifier which can be used to trace usages of the stream.</param>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.#ctor(Microsoft.IO.RecyclableMemoryStreamManager,System.String)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStream"/> class.
- </summary>
- <param name="memoryManager">The memory manager.</param>
- <param name="tag">A string identifying this stream for logging and debugging purposes.</param>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.#ctor(Microsoft.IO.RecyclableMemoryStreamManager,System.Guid,System.String)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStream"/> class.
- </summary>
- <param name="memoryManager">The memory manager.</param>
- <param name="id">A unique identifier which can be used to trace usages of the stream.</param>
- <param name="tag">A string identifying this stream for logging and debugging purposes.</param>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.#ctor(Microsoft.IO.RecyclableMemoryStreamManager,System.String,System.Int32)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStream"/> class.
- </summary>
- <param name="memoryManager">The memory manager</param>
- <param name="tag">A string identifying this stream for logging and debugging purposes.</param>
- <param name="requestedSize">The initial requested size to prevent future allocations.</param>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.#ctor(Microsoft.IO.RecyclableMemoryStreamManager,System.String,System.Int64)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStream"/> class.
- </summary>
- <param name="memoryManager">The memory manager.</param>
- <param name="tag">A string identifying this stream for logging and debugging purposes.</param>
- <param name="requestedSize">The initial requested size to prevent future allocations.</param>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.#ctor(Microsoft.IO.RecyclableMemoryStreamManager,System.Guid,System.String,System.Int32)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStream"/> class.
- </summary>
- <param name="memoryManager">The memory manager.</param>
- <param name="id">A unique identifier which can be used to trace usages of the stream.</param>
- <param name="tag">A string identifying this stream for logging and debugging purposes.</param>
- <param name="requestedSize">The initial requested size to prevent future allocations.</param>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.#ctor(Microsoft.IO.RecyclableMemoryStreamManager,System.Guid,System.String,System.Int64)">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStream"/> class.
- </summary>
- <param name="memoryManager">The memory manager</param>
- <param name="id">A unique identifier which can be used to trace usages of the stream.</param>
- <param name="tag">A string identifying this stream for logging and debugging purposes.</param>
- <param name="requestedSize">The initial requested size to prevent future allocations.</param>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.#ctor(Microsoft.IO.RecyclableMemoryStreamManager,System.Guid,System.String,System.Int64,System.Byte[])">
- <summary>
- Initializes a new instance of the <see cref="T:Microsoft.IO.RecyclableMemoryStream"/> class.
- </summary>
- <param name="memoryManager">The memory manager.</param>
- <param name="id">A unique identifier which can be used to trace usages of the stream.</param>
- <param name="tag">A string identifying this stream for logging and debugging purposes.</param>
- <param name="requestedSize">The initial requested size to prevent future allocations.</param>
- <param name="initialLargeBuffer">An initial buffer to use. This buffer will be owned by the stream and returned to the memory manager upon Dispose.</param>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.Finalize">
- <summary>
- The finalizer will be called when a stream is not disposed properly.
- </summary>
- <remarks>Failing to dispose indicates a bug in the code using streams. Care should be taken to properly account for stream lifetime.</remarks>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.Dispose(System.Boolean)">
- <summary>
- Returns the memory used by this stream back to the pool.
- </summary>
- <param name="disposing">Whether we're disposing (true), or being called by the finalizer (false).</param>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.Close">
- <summary>
- Equivalent to <c>Dispose</c>.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStream.Capacity">
- <summary>
- Gets or sets the capacity.
- </summary>
- <remarks>
- <para>
- Capacity is always in multiples of the memory manager's block size, unless
- the large buffer is in use. Capacity never decreases during a stream's lifetime.
- Explicitly setting the capacity to a lower value than the current value will have no effect.
- This is because the buffers are all pooled by chunks and there's little reason to
- allow stream truncation.
- </para>
- <para>
- Writing past the current capacity will cause <see cref="P:Microsoft.IO.RecyclableMemoryStream.Capacity"/> to automatically increase, until MaximumStreamCapacity is reached.
- </para>
- <para>
- If the capacity is larger than <c>int.MaxValue</c>, then <c>InvalidOperationException</c> will be thrown. If you anticipate using
- larger streams, use the <see cref="P:Microsoft.IO.RecyclableMemoryStream.Capacity64"/> property instead.
- </para>
- </remarks>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- <exception cref="T:System.InvalidOperationException">Capacity is larger than int.MaxValue.</exception>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStream.Capacity64">
- <summary>
- Returns a 64-bit version of capacity, for streams larger than <c>int.MaxValue</c> in length.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStream.Length">
- <summary>
- Gets the number of bytes written to this stream.
- </summary>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- <remarks>If the buffer has already been converted to a large buffer, then the maximum length is limited by the maximum allowed array length in .NET.</remarks>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStream.Position">
- <summary>
- Gets the current position in the stream.
- </summary>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- <exception cref="T:System.ArgumentOutOfRangeException">A negative value was passed.</exception>
- <exception cref="T:System.InvalidOperationException">Stream is in large-buffer mode, but an attempt was made to set the position past the maximum allowed array length.</exception>
- <remarks>If the buffer has already been converted to a large buffer, then the maximum length (and thus position) is limited by the maximum allowed array length in .NET.</remarks>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStream.CanRead">
- <summary>
- Whether the stream can currently read.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStream.CanSeek">
- <summary>
- Whether the stream can currently seek.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStream.CanTimeout">
- <summary>
- Always false.
- </summary>
- </member>
- <member name="P:Microsoft.IO.RecyclableMemoryStream.CanWrite">
- <summary>
- Whether the stream can currently write.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.GetBuffer">
- <summary>
- Returns a single buffer containing the contents of the stream.
- The buffer may be longer than the stream length.
- </summary>
- <returns>A byte[] buffer.</returns>
- <remarks>IMPORTANT: Doing a <see cref="M:Microsoft.IO.RecyclableMemoryStream.Write(System.Byte[],System.Int32,System.Int32)"/> after calling <c>GetBuffer</c> invalidates the buffer. The old buffer is held onto
- until <see cref="M:Microsoft.IO.RecyclableMemoryStream.Dispose(System.Boolean)"/> is called, but the next time <c>GetBuffer</c> is called, a new buffer from the pool will be required.</remarks>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- <exception cref="T:System.OutOfMemoryException">stream is too large for a contiguous buffer.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.CopyToAsync(System.IO.Stream,System.Int32,System.Threading.CancellationToken)">
- <summary>Asynchronously reads all the bytes from the current position in this stream and writes them to another stream.</summary>
- <param name="destination">The stream to which the contents of the current stream will be copied.</param>
- <param name="bufferSize">This parameter is ignored.</param>
- <param name="cancellationToken">The token to monitor for cancellation requests.</param>
- <returns>A task that represents the asynchronous copy operation.</returns>
- <exception cref="T:System.ArgumentNullException">
- <paramref name="destination"/> is <see langword="null"/>.</exception>
- <exception cref="T:System.ObjectDisposedException">Either the current stream or the destination stream is disposed.</exception>
- <exception cref="T:System.NotSupportedException">The current stream does not support reading, or the destination stream does not support writing.</exception>
- <remarks>Similarly to <c>MemoryStream</c>'s behavior, <c>CopyToAsync</c> will adjust the source stream's position by the number of bytes written to the destination stream, as a Read would do.</remarks>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.Advance(System.Int32)">
- <summary>
- Notifies the stream that <paramref name="count"/> bytes were written to the buffer returned by <see cref="M:Microsoft.IO.RecyclableMemoryStream.GetMemory(System.Int32)"/> or <see cref="M:Microsoft.IO.RecyclableMemoryStream.GetSpan(System.Int32)"/>.
- Seeks forward by <paramref name="count"/> bytes.
- </summary>
- <remarks>
- You must request a new buffer after calling Advance to continue writing more data and cannot write to a previously acquired buffer.
- </remarks>
- <param name="count">How many bytes to advance.</param>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="count"/> is negative.</exception>
- <exception cref="T:System.InvalidOperationException"><paramref name="count"/> is larger than the size of the previously requested buffer.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.GetMemory(System.Int32)">
- <inheritdoc/>
- <remarks>
- IMPORTANT: Calling Write(), GetBuffer(), TryGetBuffer(), Seek(), GetLength(), Advance(),
- or setting Position after calling GetMemory() invalidates the memory.
- </remarks>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.GetSpan(System.Int32)">
- <inheritdoc/>
- <remarks>
- IMPORTANT: Calling Write(), GetBuffer(), TryGetBuffer(), Seek(), GetLength(), Advance(),
- or setting Position after calling GetSpan() invalidates the span.
- </remarks>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.GetWritableBuffer(System.Int32)">
- <summary>
- When callers to GetSpan() or GetMemory() request a buffer that is larger than the remaining size of the current block
- this method return a temp buffer. When Advance() is called, that temp buffer is then copied into the stream.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.GetReadOnlySequence">
- <summary>
- Returns a sequence containing the contents of the stream.
- </summary>
- <returns>A ReadOnlySequence of bytes.</returns>
- <remarks>IMPORTANT: Calling Write(), GetMemory(), GetSpan(), Dispose(), or Close() after calling GetReadOnlySequence() invalidates the sequence.</remarks>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.TryGetBuffer(System.ArraySegment{System.Byte}@)">
- <summary>
- Returns an <c>ArraySegment</c> that wraps a single buffer containing the contents of the stream.
- </summary>
- <param name="buffer">An <c>ArraySegment</c> containing a reference to the underlying bytes.</param>
- <returns>Returns <see langword="true"/> if a buffer can be returned; otherwise, <see langword="false"/>.</returns>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.ToArray">
- <summary>
- Returns a new array with a copy of the buffer's contents. You should almost certainly be using <see cref="M:Microsoft.IO.RecyclableMemoryStream.GetBuffer"/> combined with the <see cref="P:Microsoft.IO.RecyclableMemoryStream.Length"/> to
- access the bytes in this stream. Calling <c>ToArray</c> will destroy the benefits of pooled buffers, but it is included
- for the sake of completeness.
- </summary>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- <exception cref="T:System.NotSupportedException">The current <see cref="T:Microsoft.IO.RecyclableMemoryStreamManager"/>object disallows <c>ToArray</c> calls.</exception>
- <exception cref="T:System.OutOfMemoryException">The length of the stream is too long for a contiguous array.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.Read(System.Byte[],System.Int32,System.Int32)">
- <summary>
- Reads from the current position into the provided buffer.
- </summary>
- <param name="buffer">Destination buffer.</param>
- <param name="offset">Offset into buffer at which to start placing the read bytes.</param>
- <param name="count">Number of bytes to read.</param>
- <returns>The number of bytes read.</returns>
- <exception cref="T:System.ArgumentNullException">buffer is null.</exception>
- <exception cref="T:System.ArgumentOutOfRangeException">offset or count is less than 0.</exception>
- <exception cref="T:System.ArgumentException">offset subtracted from the buffer length is less than count.</exception>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.SafeRead(System.Byte[],System.Int32,System.Int32,System.Int32@)">
- <summary>
- Reads from the specified position into the provided buffer.
- </summary>
- <param name="buffer">Destination buffer.</param>
- <param name="offset">Offset into buffer at which to start placing the read bytes.</param>
- <param name="count">Number of bytes to read.</param>
- <param name="streamPosition">Position in the stream to start reading from.</param>
- <returns>The number of bytes read.</returns>
- <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is null.</exception>
- <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="offset"/> or <paramref name="count"/> is less than 0.</exception>
- <exception cref="T:System.ArgumentException"><paramref name="offset"/> subtracted from the buffer length is less than <paramref name="count"/>.</exception>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- <exception cref="T:System.InvalidOperationException">Stream position is beyond <c>int.MaxValue</c>.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.SafeRead(System.Byte[],System.Int32,System.Int32,System.Int64@)">
- <summary>
- Reads from the specified position into the provided buffer.
- </summary>
- <param name="buffer">Destination buffer.</param>
- <param name="offset">Offset into buffer at which to start placing the read bytes.</param>
- <param name="count">Number of bytes to read.</param>
- <param name="streamPosition">Position in the stream to start reading from.</param>
- <returns>The number of bytes read.</returns>
- <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is null.</exception>
- <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="offset"/> or <paramref name="count"/> is less than 0.</exception>
- <exception cref="T:System.ArgumentException"><paramref name="offset"/> subtracted from the buffer length is less than <paramref name="count"/>.</exception>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.Read(System.Span{System.Byte})">
- <summary>
- Reads from the current position into the provided buffer.
- </summary>
- <param name="buffer">Destination buffer.</param>
- <returns>The number of bytes read.</returns>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.SafeRead(System.Span{System.Byte},System.Int32@)">
- <summary>
- Reads from the specified position into the provided buffer.
- </summary>
- <param name="buffer">Destination buffer.</param>
- <param name="streamPosition">Position in the stream to start reading from.</param>
- <returns>The number of bytes read.</returns>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- <exception cref="T:System.InvalidOperationException">Stream position is beyond <c>int.MaxValue</c>.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.SafeRead(System.Span{System.Byte},System.Int64@)">
- <summary>
- Reads from the specified position into the provided buffer.
- </summary>
- <param name="buffer">Destination buffer.</param>
- <param name="streamPosition">Position in the stream to start reading from.</param>
- <returns>The number of bytes read.</returns>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.Write(System.Byte[],System.Int32,System.Int32)">
- <summary>
- Writes the buffer to the stream.
- </summary>
- <param name="buffer">Source buffer.</param>
- <param name="offset">Start position.</param>
- <param name="count">Number of bytes to write.</param>
- <exception cref="T:System.ArgumentNullException">buffer is null.</exception>
- <exception cref="T:System.ArgumentOutOfRangeException">offset or count is negative.</exception>
- <exception cref="T:System.ArgumentException">buffer.Length - offset is not less than count.</exception>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.Write(System.ReadOnlySpan{System.Byte})">
- <summary>
- Writes the buffer to the stream.
- </summary>
- <param name="source">Source buffer.</param>
- <exception cref="T:System.ArgumentNullException">buffer is null.</exception>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.ToString">
- <summary>
- Returns a useful string for debugging. This should not normally be called in actual production code.
- </summary>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.WriteByte(System.Byte)">
- <summary>
- Writes a single byte to the current position in the stream.
- </summary>
- <param name="value">byte value to write.</param>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.ReadByte">
- <summary>
- Reads a single byte from the current position in the stream.
- </summary>
- <returns>The byte at the current position, or -1 if the position is at the end of the stream.</returns>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.SafeReadByte(System.Int32@)">
- <summary>
- Reads a single byte from the specified position in the stream.
- </summary>
- <param name="streamPosition">The position in the stream to read from.</param>
- <returns>The byte at the current position, or -1 if the position is at the end of the stream.</returns>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- <exception cref="T:System.InvalidOperationException">Stream position is beyond <c>int.MaxValue</c>.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.SafeReadByte(System.Int64@)">
- <summary>
- Reads a single byte from the specified position in the stream.
- </summary>
- <param name="streamPosition">The position in the stream to read from.</param>
- <returns>The byte at the current position, or -1 if the position is at the end of the stream.</returns>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.SetLength(System.Int64)">
- <summary>
- Sets the length of the stream.
- </summary>
- <exception cref="T:System.ArgumentOutOfRangeException">value is negative or larger than <see cref="P:Microsoft.IO.RecyclableMemoryStreamManager.MaximumStreamCapacity"/>.</exception>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.Seek(System.Int64,System.IO.SeekOrigin)">
- <summary>
- Sets the position to the offset from the seek location.
- </summary>
- <param name="offset">How many bytes to move.</param>
- <param name="loc">From where.</param>
- <returns>The new position.</returns>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="offset"/> is larger than <see cref="P:Microsoft.IO.RecyclableMemoryStreamManager.MaximumStreamCapacity"/>.</exception>
- <exception cref="T:System.ArgumentException">Invalid seek origin.</exception>
- <exception cref="T:System.IO.IOException">Attempt to set negative position.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.WriteTo(System.IO.Stream)">
- <summary>
- Synchronously writes this stream's bytes to the argument stream.
- </summary>
- <param name="stream">Destination stream.</param>
- <remarks>Important: This does a synchronous write, which may not be desired in some situations.</remarks>
- <exception cref="T:System.ArgumentNullException"><paramref name="stream"/> is null.</exception>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.WriteTo(System.IO.Stream,System.Int32,System.Int32)">
- <summary>
- Synchronously writes this stream's bytes, starting at offset, for count bytes, to the argument stream.
- </summary>
- <param name="stream">Destination stream.</param>
- <param name="offset">Offset in source.</param>
- <param name="count">Number of bytes to write.</param>
- <exception cref="T:System.ArgumentNullException"><paramref name="stream"/> is null.</exception>
- <exception cref="T:System.ArgumentOutOfRangeException">
- <paramref name="offset"/> is less than 0, or <paramref name="offset"/> + <paramref name="count"/> is beyond this <paramref name="stream"/>'s length.
- </exception>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.WriteTo(System.IO.Stream,System.Int64,System.Int64)">
- <summary>
- Synchronously writes this stream's bytes, starting at offset, for count bytes, to the argument stream.
- </summary>
- <param name="stream">Destination stream.</param>
- <param name="offset">Offset in source.</param>
- <param name="count">Number of bytes to write.</param>
- <exception cref="T:System.ArgumentNullException"><paramref name="stream"/> is null.</exception>
- <exception cref="T:System.ArgumentOutOfRangeException">
- <paramref name="offset"/> is less than 0, or <paramref name="offset"/> + <paramref name="count"/> is beyond this <paramref name="stream"/>'s length.
- </exception>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.WriteTo(System.Byte[])">
- <summary>
- Writes bytes from the current stream to a destination <c>byte</c> array.
- </summary>
- <param name="buffer">Target buffer.</param>
- <remarks>The entire stream is written to the target array.</remarks>
- <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/>> is null.</exception>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.WriteTo(System.Byte[],System.Int64,System.Int64)">
- <summary>
- Writes bytes from the current stream to a destination <c>byte</c> array.
- </summary>
- <param name="buffer">Target buffer.</param>
- <param name="offset">Offset in the source stream, from which to start.</param>
- <param name="count">Number of bytes to write.</param>
- <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/>> is null.</exception>
- <exception cref="T:System.ArgumentOutOfRangeException">
- <paramref name="offset"/> is less than 0, or <paramref name="offset"/> + <paramref name="count"/> is beyond this stream's length.
- </exception>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.WriteTo(System.Byte[],System.Int64,System.Int64,System.Int32)">
- <summary>
- Writes bytes from the current stream to a destination <c>byte</c> array.
- </summary>
- <param name="buffer">Target buffer.</param>
- <param name="offset">Offset in the source stream, from which to start.</param>
- <param name="count">Number of bytes to write.</param>
- <param name="targetOffset">Offset in the target byte array to start writing</param>
- <exception cref="T:System.ArgumentNullException"><c>buffer</c> is null</exception>
- <exception cref="T:System.ArgumentOutOfRangeException">
- <paramref name="offset"/> is less than 0, or <paramref name="offset"/> + <paramref name="count"/> is beyond this stream's length.
- </exception>
- <exception cref="T:System.ArgumentOutOfRangeException">
- <paramref name="targetOffset"/> is less than 0, or <paramref name="targetOffset"/> + <paramref name="count"/> is beyond the target <paramref name="buffer"/>'s length.
- </exception>
- <exception cref="T:System.ObjectDisposedException">Object has been disposed.</exception>
- </member>
- <member name="M:Microsoft.IO.RecyclableMemoryStream.ReleaseLargeBuffer">
- <summary>
- Release the large buffer (either stores it for eventual release or returns it immediately).
- </summary>
- </member>
- </members>
- </doc>
|