Package com.betfair.cougar.netutil.nio.monitoring

Examples of com.betfair.cougar.netutil.nio.monitoring.SessionWriteQueueMonitor


        result.append("<table border='1'><tr><th>Session id</th><th>Remote address</th><th>Heap count</th><th>Write queue depth</th><th></th></tr>\n");
        // show a list of connections, by type (incoming/outgoing)
        // for each connection, show write queue depth
        for (IoSession session : sessions.values()) {
            String sessionId = NioUtils.getSessionId(session);
            SessionWriteQueueMonitor queueMonitor = SessionWriteQueueMonitoring.getSessionMonitor(sessionId);
            String queueLength = queueMonitor != null ? String.valueOf(queueMonitor.getQueueDepth()) : "N/A";
            List<String> heapUris = connectedObjectManager.getHeapsForSession(session);
            int heapCount = heapUris != null ? heapUris.size() : 0;

            result.append("<tr><td>").append(sessionId).append("</td><td>").append(session.getRemoteAddress()).append("</td><td>").append(heapCount).append("</td><td>").append(queueLength).append("</td>");
            if (heapCount != 0) {
                result.append("<td><a href='").append(getPath()).append("?sessionId=").append(URLEncoder.encode(sessionId)).append("&detailedSession=").append(showDetailedSessionBreakdown).append("&detailedHeap=").append(showDetailedHeapBreakdown).append("&killLinks=").append(showKillLinks).append("'>Show connected objects</a></td>");
            }
            result.append("</tr>\n");
        }
        result.append("</table>\n");

        // for each connection, show connected objects that are live
        IoSession session = sessionIdToBreakDown != null ? sessions.get(sessionIdToBreakDown) : null;
        if (session != null) {
            List<String> heapUris = connectedObjectManager.getHeapsForSession(session);
            int heapCount = heapUris != null ? heapUris.size() : 0;
            if (heapCount != 0) {
                result.append("<hr width='100%'/>\n<h3>Connected object breakdown for connection '").append(sessionIdToBreakDown).append("'</h3>\n");
                String heapUriString = heapUriToBreakDown != null ? "&heapUri="+heapUriToBreakDown : "";

                if (showDetailedSessionBreakdown) {
                    result.append("<p><a href='").append(getPath()).append("?sessionId=").append(URLEncoder.encode(sessionIdToBreakDown)).append("&detailedSession=false").append(heapUriString).append("&killLinks=").append(showKillLinks).append("&detailedHeap=").append(showDetailedHeapBreakdown).append("'>Show summary view</a></p>\n");
                }
                else {
                    result.append("<p><a href='").append(getPath()).append("?sessionId=").append(URLEncoder.encode(sessionIdToBreakDown)).append("&detailedSession=true").append(heapUriString).append("&killLinks=").append(showKillLinks).append("&detailedHeap=").append(showDetailedHeapBreakdown).append("'>Show detailed view</a></p>\n");
                }

                Collections.sort(heapUris);
                result.append("<table border='1'><tr><th>Heap URI</th>");
                if (showDetailedSessionBreakdown) {
                    result.append("<th>Last delta sent</th><th>Num subscribers</th>");
                }
                result.append("<th></th></tr>\n");
                for (String s : heapUris) {
                    result.append("<tr><td>").append(s).append("</td>");
                    // for each connected object, show last delta sent/received (id), show number of subscribers
                    if (showDetailedSessionBreakdown) {
                        // add last delta sent/num subscribers
                        PooledServerConnectedObjectManager.HeapStateMonitoring heapState = connectedObjectManager.getHeapStateForMonitoring(s);
                        if (heapState != null) {
                            result.append("<td>").append(heapState.getLastUpdateId()).append("</td><td>").append(heapState.getSubscriptionCount()).append("</td>");
                        }
                        else {
                            result.append("<td>N/A</td><td>N/A</td>");
                        }
                    }
                    // add link to connected object detail
                    if (s.equals(heapUriToBreakDown)) {
                        result.append("<td><a href='").append(getPath()).append("?sessionId=").append(URLEncoder.encode(sessionIdToBreakDown)).append("&detailedSession=").append(showDetailedSessionBreakdown).append("&detailedHeap=").append(showDetailedHeapBreakdown).append("&killLinks=").append(showKillLinks).append("'>Hide breakdown</a></td>");
                    }
                    else {
                        result.append("<td><a href='").append(getPath()).append("?sessionId=").append(URLEncoder.encode(sessionIdToBreakDown)).append("&detailedSession=").append(showDetailedSessionBreakdown).append("&detailedHeap=").append(showDetailedHeapBreakdown).append("&killLinks=").append(showKillLinks).append("&heapUri=").append(s).append("'>Show breakdown</a></td>");
                    }
                    result.append("</tr>\n");
                }
                result.append("</table>");
            }
        }
        result.append("</td><td width='0' valign='top'>\n");

        // --------------------------- Heap orientated view --------------------------------------

        result.append("<h3>Heap breakdown</h3>\n");
        // for each connected object, show list of connections
        Set<String> heapUris = null;
        Collection<String> heapUrisCollection = connectedObjectManager.getHeapUris().values();
        if (heapUrisCollection != null) {
            heapUris = new TreeSet<String>(heapUrisCollection);
        }
        if (heapUris != null) {
            result.append("<table border='1'><tr><th>Heap</th><th>Connection count</th><th>Last delta sent</th><th>Num subscribers</th><th></th></tr>\n");

            for (String heapUri : heapUris) {
                PooledServerConnectedObjectManager.HeapStateMonitoring heapState = connectedObjectManager.getHeapStateForMonitoring(heapUri);
                if (heapState != null) {
                    result.append("<tr><td>").append(heapUri).append("</td><td>").append(heapState.getSessionCount()).append("</td><td>").append(heapState.getLastUpdateId()).append("</td><td>").append(heapState.getSubscriptionCount()).append("</td>");
                    if (heapState.getSessionCount() != 0) {
                        result.append("<td><a href='").append(getPath()).append("?heapUri=").append(URLEncoder.encode(heapUri)).append("&detailedSession=").append(showDetailedSessionBreakdown).append("&detailedHeap=").append(showDetailedHeapBreakdown).append("&killLinks=").append(showKillLinks).append("'>Show connections</a></td>");
                    }
                    result.append("</tr>\n");
                }
            }
            result.append("</table>");
        }

        PooledServerConnectedObjectManager.HeapStateMonitoring heapState = heapUriToBreakDown != null ? connectedObjectManager.getHeapStateForMonitoring(heapUriToBreakDown) : null;
        if (heapState != null) {
            result.append("<hr width='100%'/>\n<h3>Connection breakdown for connected object '").append(heapUriToBreakDown).append("'</h3>\n");

            // Show/hide detailed view

            String sessionIdString = sessionIdToBreakDown != null ? "&sessionId="+URLEncoder.encode(sessionIdToBreakDown) : "";
            if (showDetailedHeapBreakdown) {
                result.append("<p><a href='").append(getPath()).append("?heapUri=").append(URLEncoder.encode(heapUriToBreakDown)).append(sessionIdString).append("&detailedHeap=false").append(sessionIdString).append("&killLinks=").append(showKillLinks).append("&detailedSession=").append(showDetailedSessionBreakdown).append("'>Show summary view</a></p>\n");
            }
            else {
                result.append("<p><a href='").append(getPath()).append("?heapUri=").append(URLEncoder.encode(heapUriToBreakDown)).append(sessionIdString).append("&detailedHeap=true").append(sessionIdString).append("&killLinks=").append(showKillLinks).append("&detailedSession=").append(showDetailedSessionBreakdown).append("'>Show detailed view</a></p>\n");
            }

            SortedMap<String, List<String>> subscriptionIdsBySessionId = heapState.getSubscriptionIdsBySessionId();
            if (subscriptionIdsBySessionId != null) {
                result.append("<table border='1'><tr><th>Session Id</th>");
                if (showDetailedHeapBreakdown) {
                    result.append("<th>Remote Address</th><th>Write Queue Depth</th>");
                }
                result.append("<th></th></tr>\n");
                for (String sessionId  :subscriptionIdsBySessionId.keySet()) {
                    IoSession sessionForSessionId = sessions.get(sessionId);
                    result.append("<tr><td>").append(sessionId).append("</td>");
                    if (showDetailedHeapBreakdown) {
                        SessionWriteQueueMonitor queueMonitor = SessionWriteQueueMonitoring.getSessionMonitor(sessionId);
                        String queueLength = queueMonitor != null ? String.valueOf(queueMonitor.getQueueDepth()) : "N/A";
                        result.append("<td>").append(sessionForSessionId.getRemoteAddress()).append("</td><td>").append(queueLength).append("</td>");
                    }
                    if (sessionId.equals(sessionIdToBreakDown)) {
                        result.append("<td><a href='").append(getPath()).append("?detailedSession=").append(showDetailedSessionBreakdown).append("&detailedHeap=").append(showDetailedHeapBreakdown).append("&killLinks=").append(showKillLinks).append("&heapUri=").append(heapUriToBreakDown).append("'>Hide breakdown</a></td>");
                    }
View Full Code Here

TOP

Related Classes of com.betfair.cougar.netutil.nio.monitoring.SessionWriteQueueMonitor

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.