|
![]() |
#1 |
Developer
|
Цитата:
Сообщение от sukhanchik
... RunBase - несмотря на то, что создается на сервере - он сам делает клиентскую копию себя, откуда и работает с формой. А данные просто передает через контейнер между экземплярами классов.
Код: ... // Move prompt to client when running on server and the class is swappable if (isRunningOnServer() && this.canSwapBetweenCS() && this.canSwapBetweenCSPrim()) { [clientPrompt,clientPacked] = runbase::promptOnClient(classidget(this),this.promptPack()); this.promptUnpack(clientPacked,clientPrompt); return clientPrompt; } ... Цитата:
Сообщение от oip
Т.е. если класс выполняется на сервере, то ничего не поделаешь?
|
|
![]() |
#2 |
Administrator
|
Цитата:
Сообщение от vallys
Хм... Думаю, что RunBase (вернее его наследник) делает клиентскую копию себя только если "Run on" равно "Called from" и экземпляр RunBase создан на сервере. Это можно увидеть в RunBase.PrompPrim():
Код: ... // Move prompt to client when running on server and the class is swappable if (isRunningOnServer() && this.canSwapBetweenCS() && this.canSwapBetweenCSPrim()) { [clientPrompt,clientPacked] = runbase::promptOnClient(classidget(this),this.promptPack()); this.promptUnpack(clientPacked,clientPrompt); return clientPrompt; } ...
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#3 |
Developer
|
Цитата:
Сообщение от sukhanchik
ага ... согласен... только тут нигде нет упоминание свойства RunOn. Только проверка - создан ли экземпляр класса на сервере или нет. А значит без разницы - какое значение принимает свойство RunOn - лишь бы оно позволло создать класс на сервере
Код: /* Returns whether it is possible to pack the class, reinstantiate a new class, and unpack it on the "other" side. */ private boolean canSwapBetweenCSPrim() { return new dictClass(classIdget(this)).runMode() == ClassRunMode::Called; } |
|
![]() |
#4 |
Administrator
|
Цитата:
Сообщение от vallys
Есть проверка - в RunBase.canSwapBetweenCSPrim
Код: /* Returns whether it is possible to pack the class, reinstantiate a new class, and unpack it on the "other" side. */ private boolean canSwapBetweenCSPrim() { return new dictClass(classIdget(this)).runMode() == ClassRunMode::Called; } В общем - был неправ.
__________________
Возможно сделать все. Вопрос времени |
|