1/* 2 * Copyright (c) 2008 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * The contents of this file constitute Original Code as defined in and 7 * are subject to the Apple Public Source License Version 1.1 (the 8 * "License"). You may not use this file except in compliance with the 9 * License. Please obtain a copy of the License at 10 * http://www.apple.com/publicsource and read it before using this file. 11 * 12 * This Original Code and all software distributed under the License are 13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER 14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the 17 * License for the specific language governing rights and limitations 18 * under the License. 19 * 20 * @APPLE_LICENSE_HEADER_END@ 21 */ 22 23#include <string.h> 24#include <stdlib.h> 25#include <assert.h> 26#include "libtop.h" 27#include "user.h" 28#include "generic.h" 29#include "uinteger.h" 30 31static bool messages_sent_insert_cell(struct statistic *s, const void *sample) { 32 const libtop_psamp_t *psamp = sample; 33 char buf[GENERIC_INT_SIZE]; 34 35 if(top_uinteger_format_result(buf, sizeof(buf), 36 psamp->messages_sent.now, 37 psamp->messages_sent.previous, 38 psamp->messages_sent.began)) { 39 return true; 40 } 41 42 return generic_insert_cell(s, buf); 43} 44 45static struct statistic_callbacks sent_callbacks = { 46 .draw = generic_draw, 47 .resize_cells = generic_resize_cells, 48 .move_cells = generic_move_cells, 49 .get_request_size = generic_get_request_size, 50 .get_minimum_size = generic_get_minimum_size, 51 .insert_cell = messages_sent_insert_cell, 52 .reset_insertion = generic_reset_insertion 53}; 54 55struct statistic *top_messages_sent_create(WINDOW *parent, const char *name) { 56 return create_statistic(STATISTIC_MESSAGES_SENT, parent, NULL, 57 &sent_callbacks, name); 58} 59 60 61static bool messages_recv_insert_cell(struct statistic *s, const void *sample) { 62 const libtop_psamp_t *psamp = sample; 63 char buf[GENERIC_INT_SIZE]; 64 65 if(top_uinteger_format_result(buf, sizeof(buf), 66 psamp->messages_recv.now, 67 psamp->messages_recv.previous, 68 psamp->messages_recv.began)) { 69 return true; 70 } 71 72 return generic_insert_cell(s, buf); 73} 74 75static struct statistic_callbacks recv_callbacks = { 76 .draw = generic_draw, 77 .resize_cells = generic_resize_cells, 78 .move_cells = generic_move_cells, 79 .get_request_size = generic_get_request_size, 80 .get_minimum_size = generic_get_minimum_size, 81 .insert_cell = messages_recv_insert_cell, 82 .reset_insertion = generic_reset_insertion 83}; 84 85struct statistic *top_messages_received_create(WINDOW *parent, 86 const char *name) { 87 return create_statistic(STATISTIC_MESSAGES_RECEIVED, parent, NULL, 88 &recv_callbacks, name); 89} 90