Archived

This forum has been archived. Please start a new discussion on GitHub.

Client Disconnect Callback

Is there a way to set up a callback on a client disconnect so that resources relating to that client can be cleaned up.
Or,is the only option to periodically review connections to see when client last communicated.
I noticed that with the ice logging turned on , an exception was raised when the client dropped off (for tcp connections art least). Is there any way to trap this event.

Comments

  • There is no such callback. Ice can establish and terminate connections transparently. If a connection is closed, it doesn't mean that a client has terminated, as the connection may be reopened at any time. Furthermore, it is not possible to reliably detect connection closure with TCP/IP.

    I guess what you really need is session management, for example like Glacier does it. There are many ways to do this, such as having a thread that cleans up sessions for clients that have been idle for a certain period of time.
  • Sorry for waking up a decade old thread, but I see meaningful use for such functionality.

    I would like to have custom logging of client connection/disconnection for diagnostic purposes. Just have some way to log "Adapter X accepted connection from IP address a.b.c.d". Similar message would be logged when the client disconnects. ACM won't interfere in our case since our clients generate continuous stream of ice_ping calls.
  • benoit
    benoit Rennes, France
    Hi Robert,

    You can use the new instrumentation facility for this purpose (only available since Ice 3.5). See Instrumentation Facility in the Ice manual and the Slice API documentation for more information on how to use this facility. Note that if you install a communication observer, this will disable the metrics administrative facet, Ice currently doesn't support using both.

    Cheers,
    Benoit.
  • This indeed solves the problem completely. Too bad it cannot be combined with the metrics API. I find that a little surprising though since observers are usually easy to multiplex via intermediate multi-cast observer. Not sure how to configure Ice in this way though.
  • Sounds greate,but our current project uses Ice 3.4.2,what a pity!