stackutility.cc

来自「clustering for ns-2 simulation」· CC 代码 · 共 93 行

CC
93
字号

/**
 * Copyright (c) 2006 Michele Mastrogiovanni.
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 *
 */
 
#include "StackUtility.h"

static class StackUtilityClass : public TclClass {
public:
    StackUtilityClass() : TclClass("Utility/STACK") {}
    TclObject* create(int , const char*const* ) {
        return(new StackUtility());
    }
} class_stack_utility;

int 
StackUtility::command(int argc, const char * const * argv)
{
    if (argc == 4) {
		//
		// $stack-utility set-module 0 $utility0
		// $stack-utility set-module 1 $utility1
		//
        if (strcmp (argv[1], "set-module") == 0) {
			int num = atoi(argv[2]);
			dumpData[num] = (CommonUtility *) TclObject::lookup(argv[3]);
			if (num > top_module)
				top_module = num;
			if (base_module == -1)
				base_module = num;
			else if (num < base_module)
				base_module = num;
            return (TCL_OK);
        }
	}
	else if (argc == 3) {
		if (strcmp (argv[1], "set-separator") == 0) {
			separator = (Separator *) TclObject::lookup(argv[2]);
			return (TCL_OK);
		}
		else if (strcmp (argv[1], "set-topology-name") == 0) {
			topology = string(argv[2]);
			return TCL_OK;
		}
    }
    
    return CommonUtility::command(argc, argv);
}

void
StackUtility::dump() 
{
	cerr << topology << " - ";
	for (map<int, CommonUtility*>::iterator i = dumpData.begin(); i != dumpData.end();) {
		cout << (i->second)->algorithm;
		cerr << (i->second)->algorithm;
		i++;
		if (i != dumpData.end()) {
			cout << "-";
			cerr << "-";
		}
		else
			cout << " ";
	}
	cerr << endl;
	cout << endl;

	for (map<int, CommonUtility *>::iterator i = dumpData.begin(); i != dumpData.end(); i++)
		(i->second)->dump();
}

void 
StackUtility::addTransmitPacket(double packets, double bytes) { 
	packetsTransmit += packets;
	bytesTransmit += bytes;

	dumpData[separator->getIndexCurrentModule()]->packetsTransmit += packets;
	dumpData[separator->getIndexCurrentModule()]->bytesTransmit += bytes;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?