Hi Petr.
There are few solutions to your problem.
1) You can specify #value strategy for any collections for your network instance:
network transferByValue: (Kind of: Collection)
For your example you need to apply this strategy on server side. In that case client will continue send collections by reference but it will receive collections by value from server.
��
2) You can specify value strategy for BlockClosure. It will perform #select: (for example) on server side without requests to client.
network transferByValue: (Instance of: BlockClosure)
Here you will need to apply strategy on client because blocks will be sent from client to server.
3) You can explicitly pass objects with value strategy:
YourService>>getPersons
"on server side"
^retrievePersons asTransferredByValue
4) If persons collection is instance variable of other transferred by value object then you can specify what value means for this container:
PersonContainer>>prepareValueTransferBy: aSeamlessObjectTransporter
aSeamlessObjectTransporter transferByValue: contents
5) You can ask any proxy to load local copy of remote object:
proxy asLocalObject.
����
Important notice:��
- Seamless has no distributed garbage collection. So if you will transfer by reference temporary objects they will be not collected as garbage. For example server could ��compute something and return it by reference. Nobody will kill it.
But if you share only long lived service then it is not problem for you.
- there is no security in the level of Seamless. You should organize secure channel by external tools like VPN.
These features are in todo.
Best regards,��
Denis