Re: Using Vine in 3-way interactions (was Re: Question on redirectors/whenMoreResolved in the 3-way case, in the middle vat)
Rob Withers <[email protected]> Sat, 07 Mar 2015 17:28:09 -0700
| Newsgroups | gmane.comp.lang.e.general |
|---|---|
| Message-ID | <[email protected]> |
--===============1288846968835120382==
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: quoted-printable
<html>
<head>
<meta content=3D"text/html; charset=3Dwindows-1252"
http-equiv=3D"Content-Type">
</head>
<body bgcolor=3D"#FFFFFF" text=3D"#000000">
I truly hope not, Mark.=A0 I have this tendency to explicitly burn
bridges when I perceive they are burned, to clarify and out of
frustration that I keep bouncing.=A0 My apologies for that as it help=
s
no one, as well as my lack of patience for a response.=A0 I had not
realized I had posted such a challenging question.<br>
<br>
In consideration, if I may suggest the following.<br>
<br>
<ol>
<li>Carol sends to Alice with a ref to Bob and Alice redirects a
call to Bob, returning a RemotePromise both in Carol and in
Alice.</li>
<li>3-way: Carol sends a provideFor to Bob and Alice sends an
AcceptFrom to Bob.</li>
<li>Carol sends a followOn to Alice's first resolution, which is a
RemotePromise to Bob, so this flows to Bob.</li>
<li>3-way: In Alice, the followOn should become a 3-way to the
followOn Resolver in Carol.=A0 So Alice would send a provideFor t=
o
Carol and Bob would send an AcceptFrom to Carol and send the
result of the followOn to the gift resolver in Carol. </li>
</ol>
I think I am saying this the way I am thinking it.<br>
<br>
Thank you.<br>
<br>
<div class=3D"moz-cite-prefix">On 3/7/2015 5:07 PM, Mark S. Miller
wrote:<br>
</div>
<blockquote
cite=3D"mid:CABHxS9ix4ULB7-Fg5L320LuoAhjnLTjmWmtVHJd1Y5G_9vu3DQ-JsoAwUIsXov1KXRcyAk9cg@public.gmane.org=
l.com"
type=3D"cite">
<div dir=3D"ltr">Wait wait apologies! You did nothing at all to
offend!=A0Really!
<div><br>
</div>
<div>I was just saying to a current houseguest last night, as
close as I can remember:</div>
<div><br>
</div>
<div>"Have you seen the question Rob Withers has asked lately on
e-lang about captp? It relates to race conditions and GC, but
I haven't yet been able to reload enough context to think
about it. Could you have a look?" We then went off on a long
discussion on race conditions in captp-like systems x gc x
partition x malice, how difficult it is to do a full case
analysis of the cross product by hand, and how much automated
tools could help. Sadly, we did not get back to the subject of
your question.</div>
<div><br>
</div>
<div>True story. I am posting this without first checking with
the houseguest, which is why I'm omitting their name.</div>
<div><br>
</div>
<div>I should have said something to explain my lack of
response. The rudeness really is mine.</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
</div>
<div class=3D"gmail_extra"><br>
<div class=3D"gmail_quote">On Sat, Mar 7, 2015 at 3:28 PM, Rob
Withers <span dir=3D"ltr"><<a moz-do-not-send=3D"true"
href=3D"mailto:[email protected]" target=3D"_blank=
">[email protected]</a>></span>
wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor=3D"#FFFFFF" text=3D"#000000"> Thanks for all the
reticent help over the years, everyone.=A0 It's been fun.=A0
Such a pity that that help seems permanently revoked, like
an untrusted capability.=A0 I must not have participated
well in the social context, but that is par for the course
for folks with Aspergers, I am learning.=A0 I just can't
ever seem to say the right thing and more often than not,
I piss people off.=A0 The issue is I truly just don't get
it.=A0 <br>
<br>
Best regards, <br>
<div>Robert</div>
<div>
<div class=3D"h5"> <br>
<div>On 3/4/2015 9:27 AM, Rob Withers wrote:<br>
</div>
<blockquote type=3D"cite"> Might someone be able to
comment on this, please?=A0 It would help me a great
deal.=A0 I do not think it is the unimplemented
far3Desc situation.<br>
<br>
Thanks,<br>
Robert<br>
<br>
<div>On 3/1/2015 3:12 PM, Rob Withers wrote:<br>
</div>
<blockquote type=3D"cite"> I see.=A0 Could you commen=
t
on how a Vine (and promise3Desc/far3Desc) get
introduced into the machinery when a followOn msg
gets forwarded to a third vat?=A0 In my example,
redirectForTheAnswer sends getTheAnswer to Bob and
returns a RemotePromise, which receives a hashCode
followOn msg, forwarded to Bob.<br>
<br>
- Robert<br>
<br>
<div>On 3/1/2015 2:56 PM, Mark S. Miller wrote:<br>
</div>
<blockquote type=3D"cite">
<div dir=3D"ltr">No, the 2-vat interactions never
use, or engage in any way with, vines,
promise3Desc or far3Desc.
<div><br>
</div>
</div>
<div class=3D"gmail_extra"><br>
<div class=3D"gmail_quote">On Sun, Mar 1, 2015
at 9:37 AM, Robert Withers <span dir=3D"ltr">=
<<a
moz-do-not-send=3D"true"
href=3D"mailto:[email protected]=
"
target=3D"_blank">robert.w.withers@gmail.=
com</a>></span>
wrote:<br>
<blockquote class=3D"gmail_quote"
style=3D"margin:0 0 0 .8ex;border-left:1px
#ccc solid;padding-left:1ex">I have a
question about elib. Do you use
promise3Desc and far3Desc for 2-vat
interactions such that a vine is always in
play in any interaction?<br>
<br>
- Robert
<div>
<div><br>
<br>
Rob Withers <<a
moz-do-not-send=3D"true"
href=3D"mailto:robert.w.withers@gmail=
.com"
target=3D"_blank">robert.w.withers@gm=
ail.com</a>>
wrote:<br>
<br>
Mark, your instincts were right on, it
seems.=A0 I have an issue with my use o=
f
the Vine and on reflection it makes
perfect sense. I am bending the send
from Carol to Alice over to Bob, so as
it is a 3-way interaction, I need a
Vine.=A0 In analyzing ELib code, you
have 9 references to the Vine's
constructor, while I only have 7
(minus an extra unused constructor I
have).=A0 It is going to require some
digging to unearth what I am missing,
but the direction is clear.=A0 The plac=
e
it blows up is in my
ProxyResolver.resolve() method, as the
WeakReference has lost the ref.=A0
However, this is not where the
reference is maintained.=A0 I suspect i=
t
may be a lack of an IdentityManager.<br=
>
<br>
I republished my code to: <a
moz-do-not-send=3D"true"
href=3D"https://github.com/tooantuh/p=
auwau"
target=3D"_blank">https://github.com/=
tooantuh/pauwau</a>.=A0
The tests pass, though there is an
issue with the RefTests and
TestPauwau2VatException, as well as
this issue affecting
TestPauwau3VatFollowOnSend.=A0
Additionally, the presentation tests
need to be run one at a time as
stopping and starting the Introducers
can step on each other.<br>
<br>
thank you,<br>
Robert<br>
<br>
<div>On 2/22/2015 8:02 PM, Mark S.
Miller wrote:<br>
</div>
<blockquote type=3D"cite">
<div dir=3D"ltr">Have you looked at
the Vine? Search for "Vine" at=A0<a
moz-do-not-send=3D"true"
href=3D"http://erights.org/elib/d=
istrib/captp/index.html"
target=3D"_blank">http://erights.=
org/elib/distrib/captp/index.html</a>
<div>and in the source code of=A0<a
moz-do-not-send=3D"true"
href=3D"https://code.google.com=
/p/caja-captp/"
target=3D"_blank">https://code.=
google.com/p/caja-captp/</a></div>
<div><br>
</div>
<div>I don't quite understand your
question, so I'm not sure if
this is even relevant to the
answer. Is it?</div>
<div><br>
</div>
<div><br>
</div>
</div>
<div class=3D"gmail_extra"><br>
<div class=3D"gmail_quote">On Sun,
Feb 22, 2015 at 5:51 PM, Rob
Withers <span dir=3D"ltr"><<a
moz-do-not-send=3D"true"
href=3D"mailto:robert.w.withe=
[email protected]"
target=3D"_blank">robert.w.wi=
[email protected]</a>></span>
wrote:<br>
<blockquote class=3D"gmail_quote"
style=3D"margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div bgcolor=3D"#FFFFFF"
text=3D"#000000"> I found som=
e
more info: it looks as if
the Ref in Alice's
ProxyResolver is being GCed,
before resolution from Bob.=A0
This is specific to my
machinery, but knowing how
Elib maintains a reference
to the Ref, in this case,
may help make mine better.
How does Elib handle this?<br=
>
<br>
Thank you,<br>
- Robert
<div>
<div><br>
<br>
<div>On 2/22/2015 6:19
PM, Rob Withers wrote:<=
br>
</div>
<blockquote type=3D"cite"=
>
I am stuck, both
conceptually, as well
as understanding code
I wrote a long while
ago.=A0 I was hoping to
gain a little insight
from the list of the
insides of resolution
redirection in the
3-way case.=A0 The
recent change I have
made results from my
thinking I finally
understand the
ordering that
MirandaMethods
ensure.=A0 I made
changes such that a
whenMoreResolved
directly follows the
message that generates
is by adding to the
front of the msg
queue.=A0 <br>
<br>
In the 3-way case,
Carol is sending a
message to Alice,
passing Bob.=A0 Alice
receives the message
and executes, which
sends a message to
Bob, then returns the
result to Carol.=A0 In
Alice's vat, the
DelayedRedirector is
resolved to the
RemotePromise of the
call to Bob, the
return of Alice's
computation and I
think it sends
whenMoreResolved to
the proxy of the new
promise resolver of
the send to Bob.=A0 Wha=
t
little tracing I have
I am posting below, as
well as the
DelayedRedirector
value() and the
ProxyResolver
resolve() code, at the
bottom.=A0 However, thi=
s
is my question, what
should the redirector
do in Alice's Vat to
propagate the
resolution from Bob,
back to Carol?<br>
<br>
Thank you,<br>
- Robert<br>
<br>
<br>
// There are 3
messages sent to Bob,
from Alice:<br>
// =A0=A0=A0 1)
getTheAnswer, which
returns 42, <br>
// =A0=A0=A0 2) <b>hash=
Code,
again 42</b> and <br>
//=A0=A0 =A0 3) <b>when=
MoreResolved</b>,
to forward to the
redirector back in
Alice.<br>
<br>
0 [main] INFO
cc.ganymede.pauwau.pres=
entation.AbstractPauwauTest=A0
- 3 Introducers
starting<br>
549 [main] INFO
cc.ganymede.pauwau.pres=
entation.AbstractPauwauTest=A0
- 3 Introducers on the
air<br>
4553 [main] DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
DeliverMessage(receiver=
Id:
0 answerId: -1
resolverId: -1 action:
lookupSwiss args:
[4972730746817885643152=
91637588644948944089734358])<br>
4952 [first-vat] DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
DeliverMessage(receiver=
Id:
0 answerId: -1
resolverId: null
action: lookupSwiss
args:
[4972730746817885643152=
91637588644948944089734358])<br>
4958 [first-vat] DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
DeliverOnlyMessage(rece=
iverId:
1 action: value args:
[NearRefImpl(hash:
109537538, receiver:
TestObject)])<br>
4998 [third-vat] DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
DeliverOnlyMessage(rece=
iverId:
1 action: value args:
[FarRefImpl(hash:
68783569)])<br>
5353 [main] DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
DeliverMessage(receiver=
Id:
0 answerId: -1
resolverId: -1 action:
lookupSwiss args:
[-686254831702855955980=
329529540587585277617841038])<br>
5593 [second-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
DeliverMessage(receiver=
Id:
0 answerId: -1
resolverId: null
action: lookupSwiss
args:
[-686254831702855955980=
329529540587585277617841038])<br>
5593 [second-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
DeliverOnlyMessage(rece=
iverId:
1 action: value args:
[NearRefImpl(hash:
1530099003, receiver:
TestObject)])<br>
6201 [main] DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
DeliverMessage(receiver=
Id:
-1 answerId: -2
resolverId: -2 action:
redirectForTheAnswer
args:
[RemotePromiseRefImpl(h=
ash:
1034568234)])<br>
6203 [main] DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
DeliverMessage(receiver=
Id:
0 answerId: -2
resolverId: -2 action:
provideFor args:
[-568687285196004884954=
480990488973591228663758441,
RemotePromiseRefImpl(ha=
sh:
1034568234),
-676914875674370369045480105305401075435688776666])<br>
6239 [main] DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
DeliverMessage(receiver=
Id:
-2 answerId: -3
resolverId: -3 action:
hashCode args: [])<br>
6255 [second-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
DeliverMessage(receiver=
Id:
0 answerId: -2
resolverId: null
action: provideFor
args:
[-568687285196004884954=
480990488973591228663758441,
NearRefImpl(hash:
1530099003, receiver:
TestObject),
-6769148756743703690454=
80105305401075435688776666])<br>
6259 [second-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
DeliverOnlyMessage(rece=
iverId:
2 action: value args:
[NearRefImpl(hash:
1323165787, receiver:
cc.ganymede.pauwau.presentation.lib.vat.Vine@4842def1)])<br>
6403 [first-vat] DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
DeliverMessage(receiver=
Id:
0 answerId: -1
resolverId: -1 action:
acceptFrom args:
[HouseAtreides:10003/-6=
87934017861573292334955567350102524989066643525,
-676914875674370369045480105305401075435688776666,
cc.ganymede.pauwau.presentation.lib.vat.Vine@6a8400ff])<br>
6410 [first-vat] DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
DeliverMessage(receiver=
Id:
-1 answerId: -2
resolverId: null
action:
redirectForTheAnswer
args:
[RemotePromiseRefImpl(h=
ash:
598908224)])<br>
6411 [first-vat] DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
DeliverMessage(receiver=
Id:
-2 answerId: -3
resolverId: null
action: hashCode args:
[])<br>
6411 [first-vat] DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
DeliverMessage(receiver=
Id:
-1 answerId: -2
resolverId: -2 action:
getTheAnswer args: [])<=
br>
6412 [first-vat] DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
DeliverMessage(receiver=
Id:
-2 answerId: -3
resolverId: -3 action:
hashCode args: [])<br>
6412 [first-vat] DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
DeliverOnlyMessage(rece=
iverId:
-2 action:
whenMoreResolved args:
[RedirectorProxy:
FarRefImpl(hash:
177595052)])<br>
6766 [second-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
DeliverMessage(receiver=
Id:
0 answerId: -1
resolverId: null
action: acceptFrom
args:
[HouseAtreides:10003/-6=
87934017861573292334955567350102524989066643525,
-6769148756743703690454=
80105305401075435688776666,
FarRefImpl(hash:
690984748)])<br>
6767 [second-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
DeliverMessage(receiver=
Id:
-1 answerId: -2
resolverId: null
action: getTheAnswer
args: [])<br>
6767 [second-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
DeliverMessage(receiver=
Id:
-2 answerId: -3
resolverId: null
action: hashCode args:
[])<br>
6767 [second-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
DeliverOnlyMessage(rece=
iverId:
-2 action:
whenMoreResolved args:
[NearRefImpl(hash:
363771261, receiver:
RedirectorProxy:
FarRefImpl(hash:
196981675))])<br>
6768 [second-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
DeliverOnlyMessage(rece=
iverId:
2 action: value args:
[NearRefImpl(hash:
1530099003, receiver:
TestObject)])<br>
6769 [second-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
DeliverOnlyMessage(rece=
iverId:
3 action: value args:
[NearRefImpl(hash:
790206055, receiver:
42)])<br>
<b>6770 [second-vat]
DEBUG
cc.ganymede.pauwau.pr=
esentation.PauwauTerminal=A0
- sending message:
DeliverOnlyMessage(re=
ceiverId:
4 action: value
args:
[NearRefImpl(hash:
878991039, receiver:
42)])</b><b><br>
</b><b>6771
[second-vat] DEBUG
cc.ganymede.pauwau.pr=
esentation.PauwauTerminal=A0
- sending message:
DeliverOnlyMessage(re=
ceiverId:
5 action: value
args:
[NearRefImpl(hash:
790206055, receiver:
42)])</b><b><br>
</b>6805 [first-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
DeliverOnlyMessage(rece=
iverId:
2 action: value args:
[FarRefImpl(hash:
1332394016)])<br>
6805 [first-vat] DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
DeliverOnlyMessage(rece=
iverId:
3 action: value args:
[42])<br>
<b>6805 [first-vat]
DEBUG
cc.ganymede.pauwau.pr=
esentation.PauwauTerminal=A0
- receiving message:
DeliverOnlyMessage(re=
ceiverId:
4 action: value
args: [42])</b><b><br=
>
</b><b>6805
[first-vat] DEBUG
cc.ganymede.pauwau.pr=
esentation.PauwauTerminal=A0
- receiving message:
DeliverOnlyMessage(re=
ceiverId:
5 action: value
args: [42])</b><b><br=
>
</b>6806 [first-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
DeliverOnlyMessage(rece=
iverId:
3 action: value args:
[42])<br>
19932 [first-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
GCAnswerMessage(answerI=
d:
-1)<br>
19934 [first-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
GCAnswerMessage(answerI=
d:
-2)<br>
19934 [first-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
GCAnswerMessage(answerI=
d:
-3)<br>
19984 [second-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
GCAnswerMessage(answerI=
d:
-1)<br>
19984 [second-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
GCAnswerMessage(answerI=
d:
-2)<br>
19985 [second-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
GCAnswerMessage(answerI=
d:
-3)<br>
29679 [third-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
GCAnswerMessage(answerI=
d:
-1)<br>
29680 [third-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
DeliverOnlyMessage(rece=
iverId:
1 action: value args:
[FarRefImpl(hash:
734824022)])<br>
29680 [third-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
DeliverOnlyMessage(rece=
iverId:
2 action: value args:
[FarRefImpl(hash:
1223086084)])<br>
29680 [third-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
DeliverOnlyMessage(rece=
iverId:
3 action: value args:
[42])<br>
29681 [third-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
GCAnswerMessage(answerI=
d:
-1)<br>
29681 [third-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
GCAnswerMessage(answerI=
d:
-2)<br>
29682 [third-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- sending message:
GCAnswerMessage(answerI=
d:
-2)<br>
29722 [second-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
GCAnswerMessage(answerI=
d:
-1)<br>
29722 [second-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
GCAnswerMessage(answerI=
d:
-2)<br>
29726 [first-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
GCAnswerMessage(answerI=
d:
-1)<br>
29726 [first-vat]
DEBUG
cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
- receiving message:
GCAnswerMessage(answerI=
d:
-2)<br>
<br>
<br>
<br>
<b>//
DelayedRedirector
code:</b><br>
=A0=A0=A0 public void
value(Object obj)
throws
NotResolvedException {<=
br>
=A0=A0=A0 =A0=A0=A0 if(=
resolver =3D=3D
null)<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 return;<br>
<br>
=A0=A0=A0 =A0=A0=A0
if(resolver.isFresh())
{<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0
resolver.resolve(obj);<=
br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 resolver =3D
null;<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 return;<br>
=A0=A0=A0 =A0=A0=A0 }<b=
r>
<br>
=A0=A0=A0 =A0=A0=A0
if(RefUtil.isLocal(obj)=
)
{<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0
resolver.resolve(obj);<=
br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 resolver =3D
null;<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 return;<br>
=A0=A0=A0 =A0=A0=A0 }<b=
r>
<br>
=A0=A0=A0 =A0=A0=A0 Ref=
ref =3D
(Ref)RefUtil.wrap(obj,
resolver.handler.getVat());<br>
=A0=A0=A0 =A0=A0=A0 boo=
lean
isLocalToResolverScope
=3D false;<br>
=A0=A0=A0 =A0=A0=A0 try=
{<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0
isLocalToResolverScope
=3D
RefUtil.isLocalToScope(=
resolver.handler.scope,
ref);<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0
if(isLocalToResolverSco=
pe)
{<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0
resolver.resolve(obj);<=
br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0
resolver =3D null;<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0
return;<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 }<br>
=A0=A0=A0 =A0=A0=A0 } c=
atch
(Exception e) {<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0
reactToLostClient(e);<b=
r>
=A0=A0=A0 =A0=A0=A0 }<b=
r>
<br>
=A0=A0=A0 =A0=A0=A0
Pair<PromiseRefImpl,
Resolver> pair =3D
RefUtil.promise(ref.get=
Vat());<br>
=A0=A0=A0 =A0=A0=A0 Red=
irector
redirector =3D new
Redirector((ProxyResolv=
er)
pair.second());<br>
=A0=A0=A0 =A0=A0=A0
resolver.getProxy().whe=
nResolved(redirector);<br>
=A0=A0=A0 =A0=A0=A0
resolver.resolve(pair.f=
irst());<br>
=A0=A0=A0 =A0=A0=A0 res=
olver =3D
null;<br>
=A0=A0=A0 }<br>
<br>
<br>
<b>// ProxyResolver
code:</b><br>
=A0=A0=A0 public void
resolve(final Object
result) throws
NotResolvedException {<=
br>
=A0=A0=A0 =A0=A0=A0
handler.scope.getVat().=
sendRunnable(new
Runnable() {<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 public
void run() {<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 if(ref
=3D=3D null)<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 =A0=A0=A0
return;<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0
if(ref.get() =3D=3D nul=
l)<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 =A0=A0=A0
return;<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0
if(Exception.class.isAs=
signableFrom(result.getClass()))
{<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 }<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 Ref
newRef =3D
RefUtil.wrap(result,
handler.scope.getVat())=
;<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 try {<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 =A0=A0=A0 if
(newRef =3D=3D null)<br=
>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 =A0=A0=A0
=A0=A0=A0 =A0=A0=A0
ref.get().getRefImpl().=
becomeContext(null);<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 =A0=A0=A0
else<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 =A0=A0=A0
=A0=A0=A0
ref.get().getRefImpl().=
becomeContext(newRef.getRefImpl());<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 =A0=A0=A0
if(RefUtil.isResolved(n=
ewRef.getRefImpl()))
{<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 =A0=A0=A0
=A0=A0=A0 handler =3D n=
ull;<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 =A0=A0=A0
=A0=A0=A0 ref =3D null;=
<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 =A0=A0=A0 }<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 }
catch
(NotResolvedException
e) {<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 =A0=A0=A0 //
TODO Auto-generated
catch block<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 =A0=A0=A0
e.printStackTrace();<br=
>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 }<br>
=A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 }});<br>
=A0=A0=A0 }<br>
<br>
</blockquote>
<br>
</div>
</div>
</div>
<br>
_______________________________________________<br>
e-lang mailing list<br>
<a moz-do-not-send=3D"true"
href=3D"mailto:[email protected]=
os-os.org"
target=3D"_blank">e-lang@mail=
.eros-os.org</a><br>
<a moz-do-not-send=3D"true"
href=3D"http://www.eros-os.or=
g/mailman/listinfo/e-lang"
target=3D"_blank">http://www.=
eros-os.org/mailman/listinfo/e-lang</a><br>
<br>
</blockquote>
</div>
<br>
<br clear=3D"all">
<div><br>
</div>
-- <br>
<div>=A0 =A0 Cheers,<br>
=A0 =A0 --MarkM</div>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>________________________________=
_______________
e-lang mailing list
<a moz-do-not-send=3D"true" href=3D"mailto:[email protected]" targe=
t=3D"_blank">[email protected]</a>
<a moz-do-not-send=3D"true" href=3D"http://www.eros-os.org/mailman/listin=
fo/e-lang" target=3D"_blank">http://www.eros-os.org/mailman/listinfo/e-la=
ng</a>
</pre>
</blockquote>
<br>
</div>
</div>
<br>
_______________________________________________<br>
e-lang mailing list<br>
<a moz-do-not-send=3D"true"
href=3D"mailto:[email protected]"
target=3D"_blank">[email protected]=
</a><br>
<a moz-do-not-send=3D"true"
href=3D"http://www.eros-os.org/mailman/li=
stinfo/e-lang"
target=3D"_blank">http://www.eros-os.org/=
mailman/listinfo/e-lang</a><br>
<br>
</blockquote>
</div>
<br>
<br clear=3D"all">
<div><br>
</div>
-- <br>
<div>=A0 =A0 Cheers,<br>
=A0 =A0 --MarkM</div>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>____________________________________________=
___
e-lang mailing list
<a moz-do-not-send=3D"true" href=3D"mailto:[email protected]" targe=
t=3D"_blank">[email protected]</a>
<a moz-do-not-send=3D"true" href=3D"http://www.eros-os.org/mailman/listin=
fo/e-lang" target=3D"_blank">http://www.eros-os.org/mailman/listinfo/e-la=
ng</a>
</pre>
</blockquote>
<br>
</blockquote>
<br>
</blockquote>
<br>
</div>
</div>
</div>
<br>
_______________________________________________<br>
e-lang mailing list<br>
<a moz-do-not-send=3D"true"
href=3D"mailto:[email protected]">[email protected]=
.org</a><br>
<a moz-do-not-send=3D"true"
href=3D"http://www.eros-os.org/mailman/listinfo/e-lang"
target=3D"_blank">http://www.eros-os.org/mailman/listinfo/e=
-lang</a><br>
<br>
</blockquote>
</div>
<br>
<br clear=3D"all">
<div><br>
</div>
-- <br>
<div class=3D"gmail_signature">=A0 =A0 Cheers,<br>
=A0 =A0 --MarkM</div>
</div>
<br>
<fieldset class=3D"mimeAttachmentHeader"></fieldset>
<br>
<pre wrap=3D"">_______________________________________________
e-lang mailing list
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:[email protected]=
org">[email protected]</a>
<a class=3D"moz-txt-link-freetext" href=3D"http://www.eros-os.org/mailman=
/listinfo/e-lang">http://www.eros-os.org/mailman/listinfo/e-lang</a>
</pre>
</blockquote>
<br>
</body>
</html>
--===============1288846968835120382==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
e-lang mailing list
[email protected]
http://www.eros-os.org/mailman/listinfo/e-lang
--===============1288846968835120382==--