@Override
    public void processDisconnection() {
        // TODO - PP & AJ  <Done> Process Disconnection both for Server & Client
        logger.log(Level.FINEST, "\n\nProcess Disconnection ->");

        // Client disconnection processing      
        if (!groups.isEmpty()) {
            for (Group groupPresent : groups.values()) {
                if (!groupPresent.isEmpty()) {
                    for (ConnectedClient client : groupPresent.getAllConnectedClient()) {
                        if (intKeepAliveDuration * 2 < (((new Date().getTime()) - ((ConnectionStub) client.getObjConnectionStub()).getLastMessageTime().getTime()) / 1000)) {
                            unregister(client.getObjConnectionStub());
                        }
                        client = null;
                    }
                }
                groupPresent = null;
            }
        }

//        //server disconnection processing
//        Collection<ConnectedServer> servers;
//        if (!INBOUND_SERVERS.isEmpty()) {
//            servers = INBOUND_SERVERS.getAllConnectedServers();
//            for (ConnectedServer server : servers) {
//                if (intKeepAliveDuration * 2 < ((new Date().getTime()) - ((ConnectionStub) server.getConnection()).getLastMessageTime().getTime())) {
//                    unregister(server.getConnection());
//                }
//            }
//        }
//        if (!OUTBOUND_SERVERS.isEmpty()) {
//            servers = OUTBOUND_SERVERS.getAllConnectedServers();
//            for (ConnectedServer server : servers) {
//                if (intKeepAliveDuration * 2 < ((new Date().getTime()) - ((ConnectionStub) server.getConnection()).getLastMessageTime().getTime())) {
//                    unregister(server.getConnection());
//                }
//            }
//        }
        //   throw new UnsupportedOperationException("Not supported yet.");
    }