public void RequestNewReference( IReferenceConsumer requester, Type targettype ) { if( ismaster ) { int reference = _GetNextReferenceForType( targettype ); requester.NewReferenceResponse( targettype, reference ); } else { RpcController.GetInstance().NetObject( this ).RequestNewReferenceRpc( null, targettype, new RefToLocalObject( requester ) ); } }
public int GetNextReference( IReferenceConsumer requester, Type targettype, IReplicated targetobject ) { HashableWeakReference targetobjectweakreference = new HashableWeakReference( targetobject ); if( referencebyobject.Contains( targetobjectweakreference ) ) { return (int)referencebyobject[ targetobjectweakreference ]; } if( ismaster ) { int nextreference = _GetNextReferenceForType( targettype ); objectbyreference.Add( nextreference, targetobjectweakreference ); referencebyobject.Add( targetobjectweakreference, nextreference ); return nextreference; } else { return null; } }
public void ReferenceResponse( object connection, int reference, Type targettype, RefToLocalObject requesterref ) { IReferenceConsumer requester = (IReferenceConsumer)requesterref.Target; requester.NewReferenceResponse( targettype, reference ); }