//////////////////////////////////////////////////////////////////////////// // Rev: 2010.1 (P4JsApi 1.0 Example) // // NOTE: This is an example only, and should be modified to work in // a production environment! No warranty is expressed or implied. // Scripts should be tested thoroughly on a test server before // using in a production environment. // //////////////////////////////////////////////////////////////////////////// // Copyright (c) 2010, Perforce Software, Inc. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL PERFORCE SOFTWARE, INC. BE LIABLE FOR ANY // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. //////////////////////////////////////////////////////////////////////////// // // An example of a P4JsApi P4 Admin alert. // // Fires an alert message to the main P4 Admin tab if the number of simultaneous // processes exceeds a key value (3 in this example -- you will likely want this // to be a bit higher). This can be a list of servers as added to serverList. // //////////////////////////////////////////////////////////////////////////// // To keep track of the current alerts, set this value. Global variables are // shared between alerts in the alerts context, so you can also detect the // presence of other alerts, or determine if another alert is still running: var alertId = alertId || undefined; function processThresholdAlert() { try { // Refresh time in seconds: var refreshTime = 10; // Value that number of processes should not exceed: var thresholdValue = 3; // A list of servers to monitor: var serverList = [ "perforce:1666", ]; // Walk through the list of servers and create alerts as needed: for (var i = 0; serverList && i < serverList.length; i++) { displayAlerts(serverList[i], thresholdValue); } // Set the alert refresh rate: P4JsApi.startAlertRefreshTimer(refreshTime); } catch(e) { alert(e); } } function displayAlerts(serverName, thresholdValue) { try { // Run 'p4 monitor show -a -l' against the server: var processes = P4JsApi.p4('-p' + serverName + ' monitor show -a -l'); // As long as no error was returned, parse the monitor show output: if (!processes.error) { // Are there more processes than we wanted to see? if (processes.size > thresholdValue) { // Check to see if this alert already exists: if (alertId) { // Update the alert if it's already there: P4JsApi.updateAlert(alertId, serverName + " -- The total number of processes (" + processes.size + ") has exceeded the threshold value (" + thresholdValue + ")."); } else { // Otherwise, create one: alertId = P4JsApi.addAlert(serverName + " -- The total number of processes (" + processes.size + ") has exceeded the threshold value (" + thresholdValue + ")."); } } else { // If the alert ID exists, but the process count has dropped, // delete the alert: if (alertId) { P4JsApi.deleteAlert(alertId); alertId = undefined; } } } else { // Report the error from the server, if any: alert("Perforce error from server - " + serverName + " : " + processes.error); } // We wrap everything in a try statement to catch unexpected errors: } catch(e) { alert(e); } } processThresholdAlert();
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#4 | 7663 | dscheirer | Rollback //public/perforce/p4jsapi to changelist 7643 | ||
#3 | 7660 | jhalbig |
As per meeting to resolve issue with sync calls made from within async calls hanging P4V (job039138) pulling example code from Public Depot until it can be re-worked and confirmed to function correctly with pending P4JsApi changes. |
||
#2 | 7643 | jhalbig |
Cleaned up any remaining discrepancies in the code. Removed all internal references and debugging code. Cleaned up formatting, added more commenting for submit dialog code. Ready for 2010.1 Beta. |
||
#1 | 7638 | jhalbig | Initial Addition of P4JsApi samples for 2010.1 Beta |