* add resource manager interfaces
* add scope accessors to streams and conns
* add ResourceManager accessor to the Network interface
* allow initially unattached streams.
* introduce service scopes, canonicalize ownership interface through setters
* make system scope explicit
* make memory stat an int64
* make the system scope a generic resource scope, introduce the DMZ
* fix typo
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* fix typo
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* rename DMZ to transient scope, remove OpenConnection from PeerScope
* remove ncopy param from GrowBuffer
* remove protocols from OpenStream
The stream is unnegotiated state until the actual protocol has been determined.
* document nil receiver contract, fix protocol scope protocol accessor method
* remove nil receiver contract requirement
* flesh out stat struct
* turn resource manager scope accessors into viewers
* interface refiniments
1. Introduce transactions in all scopes
2. Limit the view of stream/connection scope for users, to avoid the Done footgun
3. Move OpenStream to the resource manager
* add Buffer interface
* fix typo
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* fix typo
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* fix typo
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* rename user scopes to plain names, management scopes as such
* rename BeginTxn to BeginTransaction
* RIP Buffers
* make ErrResourceLimitExceeded a temporary error; move rcmgr errors with the other errors.
* unexport TemporaryError
* null resource manager stub
* unexport the null stubs, make entry point a variable
* don't rely on typed nils but instead use actual null object instances
So that we don't confuse the hell out of everyone!
* add Scope to the CapableConn interface
* rename ConnectionScope to ConnScope for consistency
* fix typo
* rename ConnectionManagementScope to ConnManagementScope
* add the ConnManagementScope to Upgrader.Upgrade
* fix argument name
* godocs for ResourceManager
* introduce MemoryStatus indicator in ReserveMemory
* use uint8 for MemoryStatus
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* rework reservation interface to pass priority instead of returning memory status
so that we don't have to undo reservations if there is too much pressure.
* improve comment
* fix typo
* export the NullScope
* Stream.SetProtocol can return an error
It needs to attach the protocol to the protocol scope, which may fail.
* merge the mux package into network
* pass the PeerScope to Multiplexer.NetConn
* Update network/rcmgr.go
Co-authored-by: raulk <raul@protocol.ai>
* Update network/rcmgr.go
Co-authored-by: raulk <raul@protocol.ai>
* Update network/rcmgr.go
Co-authored-by: raulk <raul@protocol.ai>
* Update network/rcmgr.go
Co-authored-by: Adin Schmahmann <adin.schmahmann@gmail.com>
* remove reference to deprecated mux.MuxedConn
* rename transaction to span
* indicate bytes in ReserveMemory
* break ResourceManager View methods into Viewer interface.
* add experimental interface warning
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
Co-authored-by: raulk <raul@protocol.ai>
Co-authored-by: Adin Schmahmann <adin.schmahmann@gmail.com>