|
|
|
TDbxConnection и TDSServerModule в DataSnap
|
|||
|---|---|---|---|
|
#18+
Добрый день! Бьюсь уже достаточно давно, но решения так и не нашёл. Google ответа не дал. Имеем: Сервер приложений, написанный на Delphi 2010. Протокол TCP/IP. Проблема: Не могу увязать созданный сервером экземпляр TDSServerModule с клиентом, который инициировал соединение. Нужно из этого DSServerModule получить доступ к нужному DbxConnection или хотя бы наоборот... И где искать список этих самых DbxConnection'ов? А то сейчас приходится, например, имя пользователя передавать из клиента 2 раза - при подключении и ещё через процедуру в DSServerModule. Может кто знает, в какую сторону копать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2011, 08:48 |
|
||
|
TDbxConnection и TDSServerModule в DataSnap
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Не наведёт на мысли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2011, 11:21 |
|
||
|
TDbxConnection и TDSServerModule в DataSnap
|
|||
|---|---|---|---|
|
#18+
Michael Longneck, Спасибо! Конечно наведёт! Но в момент коннекта, я ведь всё равно ничего не знаю об экземпляре TDSServerModule, он ещё не создан и передать никакую информацию о соединении не могу... Вижу, Michael, что вы в теме, поэтому попутно ещё вопрос: Не навредит ли чему-нибудь, если я буду ручками создавать и уничтожать этот самый TDSServerModule таким образом: procedure TServerContainer1.DSServerClass1CreateInstance( DSCreateInstanceEventObject: TDSCreateInstanceEventObject); begin DSCreateInstanceEventObject.ServerClassInstance := TServerMethods1.Create(nil); end; procedure TServerContainer1.DSServerClass1DestroyInstance( DSDestroyInstanceEventObject: TDSDestroyInstanceEventObject); begin DSDestroyInstanceEventObject.ServerClassInstance.Free; DSDestroyInstanceEventObject.ServerClassInstance := nil; end; Проверил, вроде бы ничего не рушится. Если это легитимные действия, то это решит некоторые пои проблемы. Хотя информацию об ChannelInfo, видимо, я здесь получить не могу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2011, 12:57 |
|
||
|
TDbxConnection и TDSServerModule в DataSnap
|
|||
|---|---|---|---|
|
#18+
Создавать руками можно. Вы, я, так понимаю в TSQLConnection в параметрах хотите передать имя пользователя, а потом ассоциировать с экземпляром? Их есть у меня. Я бился тоже, а потом применил обходной манёвр. Вот у этого события - DataSnapServerConnect и у кода внутри экземпляра DSServerModule есть одно общее дело - они в одном потоке исполняются. Поэтому заведите словарь контекстов с ключом по ThreadID. И в каждом событии положите в него нужные значения - instance of TDSServerModule , idConnection и прочая. Только, естественно, синхронизируйтесь при доступе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2011, 13:35 |
|
||
|
TDbxConnection и TDSServerModule в DataSnap
|
|||
|---|---|---|---|
|
#18+
Michael LongneckСоздавать руками можно. Вы, я, так понимаю в TSQLConnection в параметрах хотите передать имя пользователя, а потом ассоциировать с экземпляром? Их есть у меня. Я бился тоже, а потом применил обходной манёвр. Вот у этого события - DataSnapServerConnect и у кода внутри экземпляра DSServerModule есть одно общее дело - они в одном потоке исполняются. Поэтому заведите словарь контекстов с ключом по ThreadID. И в каждом событии положите в него нужные значения - instance of TDSServerModule , idConnection и прочая. Только, естественно, синхронизируйтесь при доступе. ООО!!! Вот это да! Спасибо огромнейшее! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2011, 13:40 |
|
||
|
TDbxConnection и TDSServerModule в DataSnap
|
|||
|---|---|---|---|
|
#18+
Michael Longneck, ...Поэтому заведите словарь контекстов с ключом по ThreadID, не подскажите как добраться до ThreadID в событии DSServer1Connect был бы очень благодарен, что то никак не могу сообразить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 13:00 |
|
||
|
TDbxConnection и TDSServerModule в DataSnap
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 13:23 |
|
||
|
TDbxConnection и TDSServerModule в DataSnap
|
|||
|---|---|---|---|
|
#18+
X-Cite, прошу прощения за неточный вопрос. Дело в том что хотельсь бы решение в контексте создания коннекта. Там есть объект TDSConnectEventObject,.. и вот там образом мы добираемся до параметров коннекта: Код: pascal 1. 2. 3. 4. есть подозрение, что DSConnectEventObject.ChannelInfo.Id и есть этот идентификатор, Может есть какой то способ добраться до ThreadID в данном контексте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 14:59 |
|
||
|
TDbxConnection и TDSServerModule в DataSnap
|
|||
|---|---|---|---|
|
#18+
Michael LongneckВот у этого события - DataSnapServerConnect и у кода внутри экземпляра DSServerModule есть одно общее дело - они в одном потоке исполняются. Если верить этому, то вариант с TThread.CurrentThread.ThreadID вернет вам идентификатор нити в рамках которой вызывается событие DSServer1Connect ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 15:27 |
|
||
|
TDbxConnection и TDSServerModule в DataSnap
|
|||
|---|---|---|---|
|
#18+
X-CiteMichael LongneckВот у этого события - DataSnapServerConnect и у кода внутри экземпляра DSServerModule есть одно общее дело - они в одном потоке исполняются. Если верить этому, то вариант с TThread.CurrentThread.ThreadID вернет вам идентификатор нити в рамках которой вызывается событие DSServer1Connect спасибо. что то возвратил, ..номер каждый раз разный. меня просто смущает такое обращение к классу TThread, т.е. фактически к описанию класса, а не экземпляра класса.., почему он вообще не nil? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 15:43 |
|
||
|
TDbxConnection и TDSServerModule в DataSnap
|
|||
|---|---|---|---|
|
#18+
не подскажите в образовательных целях что можно посмотреть по этой теме,... не конкретно эта задача, а почему так можно обращаться к описанию класса,. а не к его экземпляру ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 15:46 |
|
||
|
TDbxConnection и TDSServerModule в DataSnap
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 15:54 |
|
||
|
TDbxConnection и TDSServerModule в DataSnap
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2018, 15:54 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=37106603&tid=2040263]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 512ms |

| 0 / 0 |
