►
From YouTube: .NET Design Review: Connection Abstractions
Description
Powered by Restream https://restream.io/
A
A
Hello
friends
we're
alive
again
last
week
we
this
week
was
built.
Hopefully
you
did
not
watch
us
on
Tuesday
if
you
did
I'm
sorry
for
you,
but
there
is
a
auction
everything
I'm
from
home
from
builders
available.
If
you
go
to
channel
9,
you
can
watch
all
the
sessions
which
you
definitely
should,
and
so
meanwhile,
we'll
continue
our
discussion
on
the
connection
abstractions
that
we
talked
I
think
last
Thursday
and
lots
of
notes.
Let
me
just
scroll
down
to
the
notes.
B
All
right
so
just
take
it
from
the
top
I
guess:
should
the
HP
interfaces
or
classes
I
think
that
with
a
advent
of
DIMMs
interfaces,
aren't
too
bad
here,
I'm,
not
sure
what
abstract
base
classes
will
get
us
there,
but
I'm
not
opposed
to
I,
guess
prototyping,
something
and
seeing
how
it
looks
with
base
classes.
So.
A
One
word
on
dims,
so
keep
in
mind
that
many
you
rely
on
dims,
you
may
cut
off
languages
that
don't
support
them
and
then.
Secondly,
there
is
this
larger
work
item
that
we
still
haven't
fully
tackled,
because
nobody
has
I
guess
has
sit
down
yet
but,
like
their
students
is
concerned,
they
don't
quite
know
enough
about
DIMMs
to
really
understand
what
the
servicing
constraints
are.
So
there's
still
the
fear,
because
we
found
out
in
some
cases
that
editing
dims
will
break
stuff
right,
which
is
the
question
of
like
way.
A
C
A
Few
years,
well,
that's
the
thing
I
like
I
like,
ideally,
we
would
prototype
something
earlier
and
then
just
basically
simulate
what
typical
versioning
looks
like
and
see
whenever
there
anything
breaks
like
I
think
like
actually,
shipping
is
not
great,
because,
first
of
all,
it
takes
a
long
time
and
it's.
Secondly,
when
we
actually
break
people
at
that
point,
you're
kind
of
screwed.
You
have
me
can't.
D
D
D
A
But
what
happened
I'm
saying
is
that
using
it
as
a
as
a
way
to
after
the
fact
change,
the
interface
is
very
different
from
just
adding
them
right,
because,
by
the
reason
why
we
added
them
was
Java
Interop,
which
has
I
think
the
question
is
just
similar
to
anything
that
we
do
in
an
API
design.
It's
like
what
does
like.
How
do
we
version
this
over
time?
Right
and
I
mean
yeah.
A
D
A
It's
the
one
thing
I'm
still
not
clear
on
it's
like.
Can
we
like,
if
you
have
an
interface
by
the
same
v1,
you
don't
have
you
don't
extend
any
interface,
then
in
v2
you
want
to
extend
another
interface,
we've
DIMMs.
Can
you
safely
do
that
and
I'm
not
sure
the
answer
is
yesterday
versus
we
have
an
abstract
base
type.
Of
course
you
can
add
another
interface
to
it.
Right,
like
so
there's
a
few
things
where
it's
not
clear
to
me
that
then
we
get
all
the
benefits
as
an
abstract
based
I
would
give
you.
E
A
Yeah
I
mean
I
will
say,
though,
like
even
even
if
DIMMs
would
work
just
fine,
an
abstract
base
type
will
always
give
you
more
control
right
because
you
can
add
new
methods
that
are
non
virtual,
which
you
can't
redo
with
an
interface.
Everything
is
always
virtual.
All
right,
so
there's
a
show
me
some
boss,
infidelity.
If
you
go
down
that
path,
I
mean
to
me.
It's
kind.
A
D
D
D
For
the
listeners,
like
those,
we
do
have
classes
today
and
casually
I'm
hoping
we
could
actually
implement
this
interface.
Our
derive
this
base
class
from
I'm,
hoping
that
that
works.
We
don't,
we
don't
break
consumers,
n5o
and
so
I'm
fine
having
the
base
pass
as
like
as
being
the
planet
record
for
the
listener
and
the
connection
was
it
factory
and
then
seeing
it
that
works.
B
Okay,
why
don't
we
tentatively
agreed
to
use
base
classes,
we'll
kind
of
prototype
that
a
little
bit
and
make
sure
it
still
works
and
specifically,
like
not.
G
D
D
D
A
Tried
this
with
the
rotary
read-only
collections,
but
where
the
idea
was
that
we
would
make
the
existing
interfaces
like,
let's
say,
I
a
collection
derived
from
I
would
only
collection
and
effectively
implement
the
I,
read
only
collection
api's
so
that
it
doesn't
break
explicit
interface
implementations,
but
that
causes
problems
because
now
you're
implementing
a
base,
interface
method
on
a
more
derived
one,
which
means,
if
you
have
a
shared
diamond,
you
no
longer
have
a
best
equal
implementation
and
the
runtime
with
one
exception.
It's
kind
of
the
problem
that
we
had.
G
G
A
Know
why
don't
you
I
think
that's
still
the
same
problem,
because
I
mean
the
basically
the
X
we
have
a
base.
Then
you
have
two
interfaces
that
are
both
derived
from
the
base.
All
want
to
add
this
interface
to
its
who
both
have
an
implementation
for
that
interface,
and
now
you
have
another
type
implementing
both
interfaces.
Now
you
have
two
dims.
Both
are
explicit,
which
one
would
you
want?
Em
call.
A
And
that's
kind
of
the
thing
with
you
would
only
interfaces.
It
might
not
be
that
kind
of
everywhere.
We
are
right
that
it's
it's
possible,
that
it
doesn't
want
a
general
problem
right
because
it's
like
it
depends
on
various
things.
It
was
just
an
example
where
it
kind
of
freaks
me
out
a
bit
that
you
have
these.
A
What
sounds
like
simple
rules,
but
when
you
actually
compose
larger
systems
with
them,
you
can
end
up
in
a
world
where
stuff
doesn't
fly
right,
and
so
the
question
is:
can
we
get
more
crisp
around
what
these
rules
are,
and
can
we
basically
distill
them
down
to
local
rules?
So
we
can
reason
about
our
versioning
bubbles,
because
if
you,
if
you
tell
me
nobody
can
have
a
share
diamonds
like
well,
how
do
I
reason
about
this
when
I
looked
just
at
one
interface
right,
it's
thick!
That's
the
problem
with
glasses.
E
B
B
F
Hey
I'm,
not
a
community
in
my
at
the
bottom,
where
I
was
trying
to
write
down
all
the
things
everybody
was
talking
about
for
yet
property,
apparently
I
went
with
connection
property
set,
which
less
implies
a
mathematical
set
or
the
set
type
collection
and
more
just
there's
some
stuff
here.
I
think
I
certainly
see
us
being
a
lot
fuzzier
on
the
word
set
than
on
the
word
collection.
A
A
B
E
H
D
D
F
D
B
This
so
so
what
I
found
when
implementing
this
is
that
you
can
usually
find
some
way
to
sneak
the
allocation
in
for
the
eye
connection,
properties,
interface
somewhere
else.
So
if
we're
doing
something,
efficient
we'd
probably
do
that.
But
if
you
just
want
something
super
easy,
you
have
a
factory
you
want
to
call
connect.
B
D
G
H
A
I
B
A
A
A
C
C
A
I
I
B
I
B
B
A
B
F
E
B
D
A
Seems
like
I
mean
honestly
like
if
you
look
at
the
VCR
did
the
general
way
we
do.
All
of
these
things
is
that
we
eventually
may
have
an
enum
or
something
on
the
connection
stream.
That
says,
if
it's
a
connection
or
not,
and
we
just
documented,
if
it's
returning
quick
connection,
then
properties
don't
make
sense,
because
if
you
have
too
many
different
API
shapes,
then
usually
the
end
problem.
That
this
creates
is
that
you
have
now
to
expose
more
api's
to
actually
contain
the
type
as
you're
passing
this.
A
B
B
B
D
So
we
had
the
same
debate
in
cash
flow
right
for
for
doing
a
htv3
and
we
actually
introduced
a
new
class
in
the
hierarchy
that
didn't
have
the
stream
in
the
pipe,
but
just
had
like
the
abort
on
other
information,
but
they
don't
have
the
actual
there
I
think
I
think
we
called
it.
Batum
is
the
bad
name,
basic
base
connection
context.
F
D
Get
E
and
so
nothing
ever
returns
the
AI
connection.
By
itself,
you
either
get
a
connection
that
has
that
so
you
didn't
get
both
best
connection
or
a
connection,
and
if
you
want
to
do
sharing
between
those
two
you
can
take
in
the
base.
So
you
can
create
types
that
like
ask
that
pass
through
the
same
base
type
because
those
derived
from
a
bit
of
base
connection
context
but
to
actually
get
data
from
the
from
the
actual
connection.
You
have
to
either
have
a
multiplex
one
or
connection
yeah.
D
So
to
put
things
like
a
little
bit
more
concretely,
transports
return
either
a
multiplex
connection,
context
or
a
regular
connection
context.
Both
return,
the
base,
connection,
context
and
kestrel
right
or
both
derive
from
sorry
neurotics
and
petrol
uses
the
base
class
for
lifetime
stuff
so
for
managing
connection
lifetime
shutdown.
Things
like
that,
if
you're
not
a
server.
B
B
D
B
D
A
F
A
F
D
B
D
So
here's
my
hot
Tec
having
done
this
like
lifetime
logic
and
kestrel
I,
don't
think
we
need
to
merge
the
multiplex
connection
and
connection
interfaces.
I
think
we
just
need
to
make
sure
the
stream
and
the
like.
So
basically,
the
I
connections,
stream
that
you
get
from
a
night
multi-plex
connection
is
the
same
type
that
you
get
for
like
a
normal
ccp
connection.
A
I
D
B
D
D
Saying
at
all,
I'm
not
saying
that
you
would
as
as
anywhere
right.
So
what
I'm
saying
is
that
you
would
have
an
AI
connection
thing
that
represents
both
say
like
a
quick
stream
and
a
TCP
connection,
you
don't
really
need
to
have
shared
interfaces
between
quick
and
TCP
at
the
transporter
listener
later
and
there
wouldn't
be
any
casting
like.
You
would
just
have
some
sort
of
like
type
that
this
represents
a
connection
lifetime
that
like
could
handle
either
a
multiplexed
or
regular
connection.
But.
A
D
Have
to
do
it
makes
the
API
ugly
immediately
ugly
or
where
the
case
is
uncommon,
TCP,
yeah,
exactly
so
to
make
multiplex
better
like
now,
TCP
you
have
this
extra
kind
of
step
you
need
to
take,
they
call
accept
stream.
You
can
only
call
it
once
if
you
can't
call
it
open
stream
and
it's
kind
of
it's
not
the
way
you
would
design
it
if
it
weren't
for
multi-plug.
So
just
add
some
friction.
So
basically,.
D
B
B
B
Yeah
we
have
a
very
tcp
centric
view
of
things
right
now
when
we
started
using
quick,
we
realized.
Oh,
you
can't
just
abort,
you
have
to
have
an
error
code.
So
do
we
pretend
that
zero
is
what
happens
when
you
call
a
board?
Do
we
expose
a
way
to
set
that
elsewhere?
It
seems
like
just
having
an
abort
parameterless.
Api
is
kind
of
it's
very
TCP
focused.
D
Not
a
focus
so
I
think
we
need
to
get
get
over
the
fact
that
this
thing
cannot
be
pure.
If
it
was
pure,
it
wouldn't
be.
Maybe
we
couldn't
do
it
all,
so
we
have
to
make
some
assumptions
that
some
things
will
be
unclean
and
then
for
more
specific
things
that
are
transport
specific
will
need
to
have
different
features
because
so,
for
example,
like
we
have
so
in
its
Banette
core
HP
context
has
a
board
right.
D
If
you
one
has
a
board
and
on
HB
2,
you
can
pass
in
a
code
for
the
abort
and
guess
what
that
it
doesn't
work,
but
for
the
and
we
default
to
someone
to
some
argument,
but
that
isn't
a
reason
to
not
have
a
portal.
It
just
means.
If
you
want
to
do
the
more
specific
thing
for
HB
2,
you
have
to
basically
try
to
see
what
what
protocol
you're
on
and
then
do.
The
protocol
specific,
behavior
I
think
we
need
to
figure
out
or.
B
B
D
That
that's
a
fair
first
hit,
but
I
would
assume
that
we
could
do
something
clever
or
passing
a
default
or
assume
something
or
throw
I.
Think
a
board
is
common
enough
and
these
networking
AP
items
that
you
want
something
like
that
and
in
our
experience
in
like
castro
for
the
last
couple
years
at
least
and
quick.
D
E
B
A
A
I
I
A
I
A
I
hope,
roughly
what
you
said
earlier:
the
merge
connection
and
connection
stream,
but
then
we
said
we
want
to
differentiate
between
the
multiplex
and
the
normal
two
plex,
one
which
kind
of
means
to
me
that
stream
and
pipe
thing
should
be
properties
in
the
one
case,
and
then
there
should
be
open
stream
and
except
stream.
In
the
other
case,
I'd
have
no
idea
what
this
guy
will
turn,
but
we
could
probably
say
this
grabber
transit
connection,
I
guess.
B
A
B
F
B
A
B
B
D
F
B
B
F
I
C
D
A
B
D
F
I
F
D
D
F
D
You
what
like
local
and
remote
point
our
access
so
commonly
that
it
feels
I
mean
so
you
can
put
it
on
the
base
hierarchy,
but
I
feel
like
it
needs
to
be
on
the
base
and
explosives
properties.
Okay,
I
wouldn't
want
someone
doing
like
TCP
to
have
to
fish
out
those
two
properties
from
the
prop
from
the
bag.
Is
there
so
commonly
accessed
connected
in
the
bag?.
A
A
B
F
D
F
I
F
D
F
And
so,
if
there's
a
scenario
than
carving
out
the
whatever
reasonable
name
for
a
base
class
or
saying
you
know
what
these
four
members
are
the
interface
and
we
have
the
two
classes
that
do
it.
That
is
reasonable,
like
essentially,
nothing
would
return
the
interface
there
just
for,
if
you
want
to
have.
D
D
B
D
F
D
B
F
It's
gonna
be
super
easy
right,
so
I'm
part
of
like
so
you
know
on
this
one.
Now
you
have
the
is
connection
as
using
the
words
emo
has
here.
Not
as
that
final
words
is
connection,
a
class
because
there
is
actually
reasonable
code
sharing
between
it
and
single
connection
and
multiplayer
between
single
connection
and
multiplex
connection
on
these,
or
is
this
one
actually
an
interface
that
single
connection,
which
gets
renamed
a
connection
and
multiplex
connection
both
adhere
to
of
they
both
have
an
endpoint
they're
aboard
able
and
they
have
some
properties.
F
B
F
Yeah
so
I
mean
like
it
either
ways.
Fine
I
mean
like
it's
so
I
guess
really
it's.
These
are
the
three
things
that
will
exist
and
a
multiplex
connection
and
the
single
connection
are
probably
both
classes.
The
other
thing
is
another
thing,
and
it's
either
a
class
that
we
figure
out
a
good
level
name
for
it
or
it's
a
interface
and,
and
they
both
adhere
to
it.
I,
in
this
case,
I
think
that
this
would
be
an
interface
describing
interface
enos,
which
is
different
than
the
where
the
connection
is
like.
D
F
I
A
D
D
A
B
F
J
F
Mm-Hmm
all
right,
so
unless
somebody
has
a
better
name
for
the
unified
type
I
think
we
have
abstract
class
connection
base,
probably
abstract
class
connection,
because
you'll
need
the
open,
pipe
and
open
stream
protected
methods
on
it
and
then
the
multiplex
connection,
which
will
do
whatever
it
does
whenever
we
get
around
to
having
multiplex
connections.
If.
A
D
J
J
F
When
I
was
in
office,
we
had
the
same
convention
if
it
was
a
if
it
essentially
if
the
class
was
being
declared
with
the
abstract,
modifier
I
got
an
a,
which
is.
This
is
probably
not
the
thing
you're
looking
for,
or
at
least
it
got,
we
used
an
a
if
if
it
was
regularly
going
to
be.
This
is
not
the
class
you're
looking
for
of
its
here
as
part
of
a
making
a
tree
work,
but
you
should
really
never
accept
one
of
these
or.
J
J
F
D
Couple
things:
okay,
not
sure,
I've
been
properly
introduced
for
everyone,
but
it's
Stephan,
so
you
can
distinguish
me
from
Steven
tube
and
no
worries
and
the
secondly
David
Fowler
is
messaging
me
from
outside
the
meeting
to
point
out
that
we
want
this
to
work
in
that
standard.
Oh
I,
don't
think,
there's
anything
stopping
us
since
we've
moved
away
from
dims,
but
for
signal
are
we
want
to
use
these
types?
A
A
I
D
A
B
F
F
And
so
connection
is,
would
be
abstract
class
connection
with
protected
virtual
stream,
open
stream
and
protected
virtual
I
duplex
pipe
open,
pipe
or
because
then
the
class
is
going
to
manage,
making
the
wrapper
over
the
whichever
one
got
called
first
for
the
one
that
gets
called
second,
but
I
sell
that
right,
close
enough.
Yes,.
A
F
D
F
B
F
F
You
should
have
synchronous
API
to
mirror
your
asynchronous
API
and
in
the
right.
So
maybe
you
want
I,
don't
know
if
that
means
you
want
graceful
clothes
which
is
different
than
disposed
of,
but
that's
the
thing
to
think
about
something
like
an
almost
if
you're
gonna
populate
you
know,
socket
names.
B
There
are
three
operations
here
that
I
can
think
of.
Abort
is
like
gracefully
aboard
make
sure
the
other
side
knows
send
whatever
error
codes.
You
need
and
then
there's
closed
gracefully,
which
is
also
like
an
I/o
operation
and
then
there's
disposed,
which
is
don't,
do
anything
just
stop
and
release
any
resources,
so
the
other
side
might
timeout
something
like
that.
Is
that
kind
of
what
you're
thinking
Stefan
yeah.
D
D
Another
question:
like
Jeremy:
you
pointed
out
that,
like
the
guidelines
you're
not
to
have
synchronous
API
for
all
async,
api's
I
know
we're
doing
that
for
like
AI,
async,
disposable
and
disposable
here
for
like
HP
client
scenarios,
but
I,
don't
think
we're
doing
that
for
anything
else
and
I
hope
not
like
for
like
yeah.
It.
D
F
I
mean
right
so
you
you
say
that,
but
you
know
there
are
people
who,
like
you're,
just
writing
a
simple
console.
App.
You
don't
care
about
like
you're
gonna.
Do
everything
in
order
you
don't
care
about
all
the
weights.
You
just
say
do
this
and
when
you're
finished
removing
on
the
next
thing,
like
low-level
code,
especially
needs
to
be
hyper
flexible
here,
because
you
don't
know
what
your
caller
wants
to
do.
That's
why
we
have
the
guideline
of
you
should
offer
synchronous
to
mirror
your
asynchronous
if.
D
F
J
J
So
I
think
there's
a
very
big
difference
between
calling
that
result
and
and
these
IP
ice
or
this
hypothetical
sink
IP
is
especially
that
they
aren't
sockets
sockets
actually
have
a
native
synchronous.
Api
is
in
operating
systems,
and
if
you
call
that
result
there's
this
soft
deadlock
issue
that
you
know
we
we
wrote
lots
of
articles
about
and
yeah
so
and,
and
you
know,
natively
implemented.
Synchronous
api's
would
actually
not
be
subject
to
the
sub
deadlock.
Yes,
they
are
inefficient
from
you
know:
machine
resource
consumption
perspective,
but
at
least
they
don't
dead,
look
I'm.
D
Not
denying
that
there
is
the
difference
between,
like
you
know,
sync
api's
down
the
OS
to
something
that
would
need
to
be
completed
by
another
thread.
That
would
you
know
potentially
do
it
off
dead
blocks,
but
I'm
saying
if
it's
acceptable
to
block
on
accept
you
better,
not
have
many
threads
doing
that.
So
hopefully
you
have
other
threads
available.
The
coming.
F
Because
right
so
accept
being
the
state
of
like
I'm
now
going
to
sit
here
and
just
twiddle,
my
thumb's,
until
somebody
wants
to
talk
to
me
like
I,
could
buy
an
argument
that
there's
very
little
scenario
at
all
for
that
being
a
a
synchronous
flow
but
B
I'm,
going
to
connect
to
something
and
send
in
this
data
and
then
shut
down
like
that
seems
like
a
thing
that
someone
could
do.
That's
could
end
up
being
doing
in
code.
F
B
Before
bringing
this
to
API
review,
the
that
argument
was
the
first
one
to
get
called
out
was
like
if
we
want
existing
users
to
adopt
this
instead,
like
replace
their
sockets
code
with
this,
and
what
are
they
going
to
do
for
other
synchronous
api's,
the
sort
of
ultimate
decision
on
the
NCL
team
and
ASP
teams
was,
if
you're,
using
this
connection,
abstraction.
We
expect
you
to
have
an
async
workflow
and
if
someone
calls
your
sync
api's,
just
throw.
A
A
D
F
F
F
B
F
B
D
I
B
I
F
You
know
I
mean
the
worst.
The
worst
possible
thing
you
can
do
with
value
tasks
is
be
optimal
and
have
the
completion
handler,
because
that's
when
really
all
the
dangerous
bugs
a
value
test
come
into
play,
and
so
it's
it's
make
sure
that
we're
like
yeah.
The
flow
that
we
put
for
people
is,
if
you
expect
it
to
complete.
Synchronously
and
value
task
is
an
okay
thing
to
consider,
and
then
we
didn't
even
talk
about,
though
the
fact
that
you
can
custom
handle
the
async
state.
D
F
D
H
J
B
B
D
Here's
in
the
scenario,
the
connection
you
know
owns
the
pipe
there
wants
to
make
sure
the
pipe
is
completed
in
some
background
thread
by
the
time
aboard
AC
completes
so
that
you're,
like
you,
know,
kestrels
connection
lifetime
and
you're
after
it
aborts,
like
all
the
connections,
notice
that
all
blocks
are
returned
to
the
memory
pool
and
therefore
it's
safe
to
dispose
the
memory
pool.
But.
F
D
F
So
if
this,
if
the
scenario
is
that
you
need
that
you
should
not
call
dispose
while
abort
still
running
or
that
the
abort
may
not
or
if
you
call
dispose
well
abort
still
running,
it
may
not
finish,
and
you
want
it
to
finished
and
that's
that's.
The
scenario
is:
is
not
getting
to
dispose
yet
I
know
weight.
J
The
reason
I
was
asking
is
I
wonder
whether
if
there
is
a
difference
in
you
know
guideline
that
we
should
have
for
those
iron
and
forget
methods.
Maybe
it's
okay
to
use.
You
know
non
generic
value
tasks
because
it's
like
in
a
lot
of
cases,
the
user
kind
of
doesn't
care.
They
will
not
have
wait.
You
don't
have
many
of
these
problems.
We
value
tasks.
F
J
F
F
F
H
I
F
D
F
B
F
D
H
D
I
D
B
D
F
F
D
D
J
So
what
about
the
following?
If
we,
if
we
had
a
parameter
when
I
thought
the
parameter,
would
be
graceful
or
not,
and
then
could
the
metal
be
cold
close
like?
Would
anybody
get
confused
there?
It's
different
semantics
than
this
pose
if
it
had
a
parameter
like
it
would
be
close
async
and
takes
a
parameter
called
gracefully
I
think.
F
Openssl
in
their
library,
for
you
know,
and
for
a
TLS
stream,
they
they
do
have
just
the
one
shut
down
and
then
there's
they
have
a
state
on
the
thing
of
if
shutdown
is
abortive
or
graceful.
So
if,
if
we
wanted
to
have
closed
and
then
figure
out
what
sort
of
boolean
parameter
for
if
this
is
close
or
abort,
because
they're
both
close
the
connections,
just
one
of
them
is
and
don't
talk
to
anybody
and
the
other
one
is
and
and
and
say
goodbye
politely
before
you
leave
okay,
the.
A
B
B
F
A
J
B
F
There
there
are
three
different
things:
I
assuming
I
understand
what
this
means,
and
so
maybe
I'm
wrong.
There's
do
you
want
to
not
wait
on
anything?
Do
you
want
to
possibly
wait
on
not
messing
up
the
other
end
of
the
connection
and
there's
do
you
want
to
send
any
outstanding
data
before
telling
the
other
end
of
the
connection
that
you're
going
away
because
abort
versus
shut
down
I
think
would
not
flush
any
other
buffers?
It's
just
going
to
immediately
send
B
by
the
way
I'm
leaving
not.
D
J
Just
saying
between
those
first
two
cases,
I
wonder
whether
there
is
actually
a
practical
difference
and
developers
would,
you
know,
want
wha
one
or
the
other
or
it's
just
you
know,
I'm
not
willing
to
wait,
shut
down
or
set
it
try
to
send
the
data.
And
yes,
there
are
implications
of
you
know,
choosing
the
first
one
and
they
are
different
depending
on
the
protocol.
F
And
the
notion
of
shut
down
immediately
and
don't
send
anything
/
which
really
just
comes
down
to
I,
don't
want
to
wait.
It's
just
no.
J
F
J
We,
yes,
there
is
a
difference.
My
kind
of
thinking
is,
there
is
a
difference,
but
will
anybody
literally
care,
like
will?
Will
you
ever
find
the
developer
on
this
side
of
the
wire
I
want
one,
but
not
the
other,
or
they
will
be
just
thinking.
Do
I
want
to
wait
or
not
that's
all
day,
I
think
they
will
be
thinking
yeah.
B
J
B
D
B
B
F
J
D
B
B
D
D
I
F
You
don't
want
to
be
a
sync
disposable,
because
your
your
you
don't
have
an
async
notion
of
dispo
like
and
then
that
would
tell
people
like
if
you
really,
if
you
want
to
do
the
graceful
shutdown.
The
last
line
before
the
end
of
your
using
is
a
weight,
close
async
connection,
close
method,
graceful
shutdown,
yeah.
D
D
D
F
B
A
F
A
H
F
D
B
D
B
D
All
right,
beautiful
weight
using
this
is
a
here's.
This
isn't
that
nice.
Here's!
The
problem
in
this
nutshell
is
that
to
have
disposed
like
a
great
silly
close,
the
connection,
which
is
what
you
do
it
if
you're
using
and
using
like
that
it
has
to
flush
stuff
in
some
situations
that
isn't
cancelable,
because
I
dispose
a
sink.
D
Our
I
supposedly
doesn't
have
that
right
and
we
can't
call
any
methods
after
we
start
calling
dispose
a
sink
because,
like
that's
a
rule,
so
that
means
that
like
dispose,
gracefully
shutting
down
the
connection,
is
this
isn't
oh,
go
what
I
don't
love
it,
but
we
have
a
thing
called
icing
as
possible.
It
has
this
behavior
literally
everywhere
in
the
VCL.
They.
F
F
A
A
Mean
one
of
the
problems
in
the
VCL
is
that
clothes
and
dispose?
Don't
do
the
same
thing,
and
it
certainly
has
a
problem
that
flushing
is
also
not
always
what
you
want
right
because,
for
example
like,
if
soon
as
you
nest,
for
example,
stream,
readers
or
so
extreme
writers
and
streams
OH,
if
you
dispose
the
inner
one,
it
also
disposes
the
outer
one.
So
there's
definitely
an
issue
where
sometimes
you
just
want
to
flush
what
you
don't
want
to
dispose
so.
D
We're
gonna
solve
it
here
in
this
new
abstraction
and
leave
it
broken
everywhere
else
that
just
like
this
thing
is
gonna
wrap
things
under
the
cover.
It's
called
the
split,
a
sink
and
just
hang
and
can
be
cancelled.
I,
don't
understand
how
facing
it
on
this
abstraction
is,
is
like
I'll,
be
anything
well.
A
A
H
D
B
D
D
D
F
Cuz
cuz
yeah.
What
and
what
was
said
while
you
were
gone,
is
that
disposed
would
just
drop
the
resources
and
not
send
an
explicit
aboard
for
protocols
that
require
it
and
not
flush
any
outstanding
buffers,
and
if
that's
the
case,
because
that's
why,
in
our
close
method
up
here,
we
had
graceful,
abort
and
disposed
and
suppose
means
just
walk
away
right.
Tell
the
OS
I've
done
with
the
socket
move
on
with
life.
What.
I
F
B
D
F
D
I
F
F
D
F
F
D
F
Mean
I
think
the
answer
and
that
one
is
you
either
have
polymorphism
and
you're
casting
and
you
know
you're
doing
quick,
and
so
you
have
a
quick
connection
or
if
you're,
using
the
property
bag,
I
think
Stefan.
You
suggested
this
of
you
fish
out
the
quick
connection
status,
property
bag,
which
has
a
mutable.
What's
my
clothes
code,
yeah
yep,
but
at
that
point,
you're
working
with
the
protocol
and
something
more
complicated
has
to
happen.
Yeah.
D
B
A
E
D
F
D
B
F
B
A
D
B
F
B
I
think
it's
the
same
problem
as
a
quick
abort
code.
Is
that
you
now
now
you're
in
TCP
land
and
you
should
pull
out
a
TCP
specific
interface.
D
D
F
Mean
we
did
resolve
of
looking
at
what
before
we
had
on
of
the
issues
its
we
took
a
the
unresolved
discussion
about
interfaces
versus
classes
and
I.
Think
we've
landed
somewhere
that
we're
all
at
least
content
with.
We
renamed
connection
property
collection,
we
renamed
connection
stream.
We
collapsed
some
interfaces.
We
figured
out
how
to
add
abort
there's,
do
we
do
disposable
factories
and
are
they
one
type
or
two?
We
didn't
talk
about
yet,
but
but
you
know
we
didn't
make
Nick.
We
made
positive
progress.
D
B
A
D
I
A
A
A
J
A
It's
a
it's
a
DSLR
right
but
like
unless
the
Canon
Sony
has
a
better
model
like
cannabase,
you
protect
the
high-end
video
cameras
right
so
that
don't
give
you
certain
features
and
one
feature
that
Sony
gives.
You
is
clean
HDMI.
You
can
basically
just
literally
plug
in
the
camera
to
capture
card,
and
then
you
get
effectively
a
webcam
on
your
computer.
F
B
A
J
A
I
A
J
A
The
one
that
I
bought
is
the
gambling
from
I
got.
Oh,
the
problem
of
the
cam
links
is,
they
are
always
bought
out.
So
it's
really
hard
to
get
them
right.
Now
you
can
get
them
on
eBay.
They
usually
cost
150
bucks
new,
but
you
can
get
them
on
eBay
for
only
$350.
If
you're
willing
to
shell
out
that
much
money.
A
A
A
So
that's
the
downside.
So
basically,
so
all
you
I
didn't
want
the
mic
that
is
close,
but
the
basically
you
have
two
options.
You
can
either
go
with
a
ruffle,
lavalier
microphone
right,
the
lapel
mics
that
you
did
attach
to
your
shirt
or
something
I
have
done
this
for
a
while.
The
problem
of
those
is,
they
are
effectively
Universal
pickup
pattern
right,
so
they
pick
up
everything.
They
pick
up
your
keyboard.
If
you
cpu
fan
goes
up,
they
they
pick
that
up
and
the
other
problem
is
your
wired
in.
A
So
god
forbid,
you
forget,
and
you
get
up
to
go
to
the
restroom,
and
then
you
yank
out
your
whole
computer
equipment
with
you
I've
done
that
too.
What
only
now
has
is.
She
just
has
a
shotgun
microphone
that
we
mounted
on
top
of
the
webcam
and
that
one
is
a
bit
more
directional
and
this
one
is
basically
pointed
at
her.
You
know
face
basically
well,
ideally
the
mouse
right
and
then
this
one
picks
up
a
lot
less
noise,
but
it
still
picks
up
more
than
these
guys
do
right.
A
So
this
one
is
a
dynamic
microphone,
so
it
basically
has
a
very
aggressive
fall
out.
It
almost
picks
up
no
ambient
noise
whatsoever.
It
only
picks
up
me,
but
if
I
move
slightly
back
Elihu
me
now
because,
as
he
picks
up
nothing
right
so
yes,
the
downside
is,
they
are
more
in
the
frame
so
like.
If
you
don't
like
a
microphone
in
the
frame.
That's
that's
a
problem,
but
originally
I
wasn't
that
cam,
but
now
I
don't
mind
it
anymore,
like
I,
just
really
liked
the
voice
and
the
fact
that
there's
a
microphone.
B
A
J
F
Got
tired
of
having
my
I
xt
20
mounted
on
a
tripod,
but
how
behind
my
screen,
because
I
kept
using
it
so
when
all
this
started,
I
ordered
anything
any
webcam
I
could
get
that
shipped
from
the
United
States
and
was
not
backordered.
So
I
have
a
480p
manual-focus
webcam
that
sits
on
a
pole
three
feet
away
from
me.
A
That's
the
other
thing
why
I
bought
a
dedicated
camera
I
like
even
if
the
Canon
would
have
worked,
I,
don't
like
the
mountain
and
Martin
unmounting,
part
of
it,
but
I
just
have
a
dedicated
DSLR.
Now
that's
permanently
mounted
so
it's
connected
once
you
take
care
of
the
cables
and
the
quality
is
good
enough.
I!
Think
honestly,
like
even
if
you
have
a
high-end,
Sony
I,
don't
think
you
get
much
more
out
of
it,
because
the
full-frame
doesn't
buy
you
that
much
for
this.