<div dir="ltr">unfortunatly i'm not a coder at all :/<br><br><br>Sm<br><br><div class="gmail_quote">On Tue, Jul 22, 2008 at 12:22 PM, Melanie <<a href="mailto:melanie@t-data.com">melanie@t-data.com</a>> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi,<br>
<br>
this would really be great to have. There is one thing that can't be<br>
snapped and sent until the actual crossing, though - script states<br>
in attachments. Those would need to be snapshotted at the very<br>
moment of the crossing, and send at that time.<br>
<br>
Melanie<br>
<div><div></div><div class="Wj3C7c"><br>
<br>
Lc wrote:<br>
> I was borered recently at the office and try to see how we can have a<br>
> smooth simcrossing.<br>
> I don't know how actual simcrossing works, but here is my tough :<br>
><br>
><br>
> The idea is using the concept used in GSM cellphone to handle handover<br>
> between two cells without droping the communication.<br>
><br>
> Concept:<br>
><br>
> The SimCrossing (SC) is based one several messages exchanged between the<br>
> object (Object), the actual sim (OriginSim) and the next sim<br>
> (TargetSim). The main exchange are located in the HandOverArea (HOarea)<br>
> located on the OriginSim. This area is computed by the viewer for each<br>
> TargetSim (maximum 4 ).<br>
><br>
><br>
><br>
> Definition<br>
><br>
> Name<br>
><br>
><br>
><br>
> Description<br>
><br>
><br>
><br>
> Comment<br>
><br>
> Object (OBJ)<br>
><br>
><br>
><br>
> Any prims/avt rezzed InWorld that could trigged a SIMCROSSING event<br>
><br>
><br>
><br>
><br>
> OriginSim (ORIGSIM)<br>
><br>
><br>
><br>
> Actual simulator where the object stand BEFORE simcrossing<br>
><br>
><br>
><br>
><br>
> TargetSim (TARGET)<br>
><br>
><br>
><br>
> Simulator where the OBJECT could go<br>
><br>
><br>
><br>
><br>
> ActiveSet<br>
><br>
><br>
><br>
> List containing all the neighborhoods sims and their data (location,ping…)<br>
><br>
><br>
><br>
><br>
> HOarea<br>
><br>
><br>
><br>
> Logical area defined on the object level where all the messages exchange<br>
> should occured<br>
><br>
><br>
><br>
> See figure 1 for more details<br>
><br>
><br>
><br>
> Definition HOArea<br>
><br>
> In order to have a smooth transition, we need to determine an HandOver<br>
> area where all the simcrossing messages exchange should happens. This<br>
> area is computed on the object level regarding the ping latency between<br>
> the Target and the object velocity. This area contains a RedZone area<br>
> where all the Simcrossing conditions should be satisfied, otherwise the<br>
> simcrossing won't happen.<br>
><br>
><br>
><br>
><br>
><br>
> Phase 1 : Login or rezzing<br>
><br>
> During the login phase, the object asks the surrounding sims list to its<br>
> actual simulator. We can call this list the ActiveSet . The ActiveSet<br>
> contains the sim data and their "ping" time.<br>
><br>
> The object compute the SimCrossing boundaries and determine an<br>
> "HandOver" area with a Redzone area based on the timers (ping + delta).<br>
> Normaly the Handover should be ready before entering the Redzone.<br>
><br>
> *From*<br>
><br>
><br>
><br>
> *To*<br>
><br>
><br>
><br>
> *Message*<br>
><br>
><br>
><br>
> *Comment*<br>
><br>
> *Object*<br>
><br>
><br>
><br>
> Simulator<br>
><br>
><br>
><br>
> SCGetActiveSetReq<br>
><br>
><br>
><br>
> Ask the OrigSim a list containing all the neighborhood sims and their<br>
> coordinate, status…<br>
><br>
> *OrigSim*<br>
><br>
><br>
><br>
> Object<br>
><br>
><br>
><br>
> SCGetActiveSetSent<br>
><br>
><br>
><br>
> The Sim send all the data to the object<br>
><br>
> Once the ActiveSet received, the object start pinging all the TargetSims<br>
> and compute its own HOarea based on its velocity and the ping results.<br>
> This action should be performed on regular basis to update the ActiveSet.<br>
><br>
><br>
><br>
> Phase 2: Object logged and alive entering in the HandOver Area<br>
><br>
> On periodic basis, the object send a ping to each simulator on its<br>
> activeset and update their status accordingly in order to keep an up to<br>
> date neighbored simulator list.<br>
><br>
> When the object enter in the HandOver area, a message "SimCrossing<br>
> Request" is sent to the Source simulator. The simulator will relay the<br>
> message to the next Simulator (Target Sim) and will start downloading<br>
> the object context. Those data should include all the running code, the<br>
> values of the code's variables like a memory dump (heap,stack and such).<br>
><br>
> Case without problem in the HOarea<br>
><br>
> *From*<br>
><br>
><br>
><br>
> *To*<br>
><br>
><br>
><br>
> *Message*<br>
><br>
><br>
><br>
> *Comment*<br>
><br>
> *Object*<br>
><br>
><br>
><br>
> OrigSim<br>
><br>
><br>
><br>
> SCRequest<br>
><br>
><br>
><br>
> Contains the TargetSim Id.<br>
><br>
> *OrigSim*<br>
><br>
><br>
><br>
> TargetSim<br>
><br>
><br>
><br>
> SCObjReq<br>
><br>
><br>
><br>
> Send a simcrossing request to the target sim with all the credentials,<br>
> number of script running…<br>
><br>
> *TargetSim*<br>
><br>
><br>
><br>
> OrigSim<br>
><br>
><br>
><br>
> SCObjAck<br>
><br>
><br>
><br>
> If all the credentials and data are ok, the TargetSim sent that message.<br>
><br>
> *OrigSim*<br>
><br>
><br>
><br>
> Object<br>
><br>
><br>
><br>
> SCObjAck<br>
><br>
><br>
><br>
> The OrigSim send an ACK to the object.<br>
><br>
> *OrigSim*<br>
><br>
><br>
><br>
> TargetSim<br>
><br>
><br>
><br>
> SCObjDataSend<br>
><br>
><br>
><br>
> The OrigSim start sending the object's data to the TargetSim<br>
><br>
> *TargetSim*<br>
><br>
><br>
><br>
> OrigSim<br>
><br>
><br>
><br>
> SCObjDataACK<br>
><br>
><br>
><br>
> The TargetSim acknowledge the data and give a sim crossing clearance.<br>
><br>
> *TargetSim*<br>
><br>
><br>
><br>
> OrigSim<br>
><br>
><br>
><br>
> SCHoReady<br>
><br>
><br>
><br>
> Give the final clearance once the context is ready on the target sim.<br>
><br>
><br>
><br>
> Case with problem<br>
><br>
> *From*<br>
><br>
><br>
><br>
> *To*<br>
><br>
><br>
><br>
> *Message*<br>
><br>
><br>
><br>
> *Comment*<br>
><br>
> *Object*<br>
><br>
><br>
><br>
> OrigSim<br>
><br>
><br>
><br>
> SCRequest<br>
><br>
><br>
><br>
> Contains the TargetSim Id.<br>
><br>
> *OrigSim*<br>
><br>
><br>
><br>
> TargetSim<br>
><br>
><br>
><br>
> SCObjReq<br>
><br>
><br>
><br>
> Send a simcrossing request to the target sim with all the credentials,<br>
> number of script running…<br>
><br>
> *TargetSim*<br>
><br>
><br>
><br>
> OrigSim<br>
><br>
><br>
><br>
> SCObjReqNAK<br>
><br>
><br>
><br>
> The TargetSim reject the request due to xxx reason.<br>
><br>
> *OrigSim*<br>
><br>
><br>
><br>
> Object<br>
><br>
><br>
><br>
> SCRequestNAK<br>
><br>
><br>
><br>
> The OrigSim sent a rejection message and the object can't perform the<br>
> sim crossing.<br>
><br>
><br>
><br>
> In any case :<br>
><br>
> If the object reach the RedZone area before receiving *_SCObjDataAck_*,<br>
> a velocity slowdown should be trigged to allow the end of the data<br>
> download. We can eventually trigged an LSL state change (tbd).<br>
><br>
> If the object reach the end of the RedZone before receiving<br>
> *_SCHoReady_* the object stop the sim crossing and a major failure is<br>
> trigged. This case shouldn't happened.<br>
><br>
><br>
><br>
> Case when the object didn't want to simcross<br>
><br>
> If the object leave the HOarea, a message is trigged to release all the<br>
> data on the TargetSim.<br>
><br>
> *From*<br>
><br>
><br>
><br>
> *To*<br>
><br>
><br>
><br>
> *Message*<br>
><br>
><br>
><br>
> *comment*<br>
><br>
> *Object*<br>
><br>
><br>
><br>
> OrigSim<br>
><br>
><br>
><br>
> SCabort<br>
><br>
><br>
><br>
> Send an abort message to the OrigSim<br>
><br>
> *OrigSim*<br>
><br>
><br>
><br>
> TargetSim<br>
><br>
><br>
><br>
> SCobjAbort<br>
><br>
><br>
><br>
> The OrigSim send this message to the TargetSim. The Targetsim clear the<br>
> previous object request data.<br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
> Sim Crossing<br>
><br>
> When the object reach the simcrossing limit, the viewer switch to the<br>
> Target Sim and the TargetSim send an HandoverCompleted message to the<br>
> SourceSim.<br>
><br>
> The SourceSim release the object context.<br>
><br>
> *From*<br>
><br>
><br>
><br>
> *To*<br>
><br>
><br>
><br>
> *Message*<br>
><br>
><br>
><br>
> *comment*<br>
><br>
> *OrigSim*<br>
><br>
><br>
><br>
> TargetSim<br>
><br>
><br>
><br>
> SCperforming<br>
><br>
><br>
><br>
> The OrigSim send the last actualized dump from the object to the target sim<br>
><br>
> *TargetSim*<br>
><br>
><br>
><br>
> OrigSim<br>
><br>
><br>
><br>
> SCperformed<br>
><br>
><br>
><br>
> Acknowledge the sim crossing. The simulator clear the object. The Ho is<br>
> completed<br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
</div></div>> ------------------------------------------------------------------------<br>
><br>
> _______________________________________________<br>
> Opensim-dev mailing list<br>
> <a href="mailto:Opensim-dev@lists.berlios.de">Opensim-dev@lists.berlios.de</a><br>
> <a href="https://lists.berlios.de/mailman/listinfo/opensim-dev" target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><br>
<br>
_______________________________________________<br>
Opensim-dev mailing list<br>
<a href="mailto:Opensim-dev@lists.berlios.de">Opensim-dev@lists.berlios.de</a><br>
<a href="https://lists.berlios.de/mailman/listinfo/opensim-dev" target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><br>
</blockquote></div><br></div>