Subject Re: [firebird-support] new trace API question: how to get trace session
Author Vlad Khorsun
> Vlad,
>
>>> To control a trace session you need its numerical ID.
>>
>> What do you mean - "control a trace session" ?
>>
>>> But how do I get it? isc_action_svc_trace_start mentions nothing about a session ID.
>>
>> isc_action_svc_trace_list is your friend
>
> Had to rethink that a bit. I think, returning the session ID when
> calling isc_action_svc_trace_start is useful. Imagine the following:
>
> 1) Client app starts a trace session
> 2) Nothing happened so far on the trace, so there is nothing returned
> when querying the service query output
> 3) Client app wants to stop the created trace session. At this time, the
> client doesn't know anything about the trace session id from the server
> from step 1).

To stop own trace session it is enough to detach from service manager. Since there
is no support for service connections in new fb_cancel_operation() API i recommend
(and uses in fbtracemgr) to specify timeout in isc_service_query() call and test for
boolean "stop trace" flag which is set in GUI.

You can see how i did it :

http://firebird.cvs.sourceforge.net/viewvc/firebird/firebird2/src/utilities/fbtracemgr/traceMgrMain.cpp?revision=1.8&view=markup

look for TraceSvcUtil::runService() method and feel free to ask for explanations if
necessary.

m_stop is boolean flag, set in Ctrl+C handler
no_data is sign that our trace session was stopped by someone else.


Hope this helps,
Vlad