亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? command.cc

?? BCAST Implementation for NS2
?? CC
字號(hào):
// -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*-// Copyright (c) 2001-2003 International Computer Science Institute//// Permission is hereby granted, free of charge, to any person obtaining a// copy of this software and associated documentation files (the "Software")// to deal in the Software without restriction, subject to the conditions// listed in the XORP LICENSE file. These conditions include: you must// preserve this copyright notice, and you cannot mention the copyright// holders in advertising related to the Software without their permission.// The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This// notice is a summary of the XORP LICENSE file; the license in that file is// legally binding.#ident "$XORP: xorp/bgp/harness/command.cc,v 1.16 2003/11/05 08:14:17 atanu Exp $"// #define DEBUG_LOGGING#define DEBUG_PRINT_FUNCTION_NAME#include "config.h"#include "bgp/bgp_module.h"#include "libxorp/debug.h"#include "libxorp/xlog.h"#include "libxorp/eventloop.hh"#include "libxorp/callback.hh"#include "libxipc/xrl_std_router.hh"#include "xrl/interfaces/test_peer_xif.hh"#include "coord.hh"#include "command.hh"Command::Command(EventLoop& eventloop, XrlStdRouter& xrlrouter)    : _eventloop(eventloop),      _xrlrouter(xrlrouter),      _genid(0),      _init_count(0)    {    load_command_map();}voidCommand::load_command_map(){    _commands.clear();    _commands.insert(StringCommandMap::value_type("reset", &Command::reset));    _commands.insert(StringCommandMap::value_type("target", &Command::target));    _commands.insert(StringCommandMap::value_type("initialise",						  &Command::initialise));}voidCommand::command(const string& line) throw(InvalidString){    debug_msg("command: %s\n", line.c_str());    /*    ** Split the line into words split on spaces.    */    vector<string> v;    tokenize(line, v);    if(v.empty())	xorp_throw(InvalidString, "Empty command");    StringCommandMap::iterator cur  = _commands.find(v[0].c_str());       if(_commands.end() == cur)	xorp_throw(InvalidString, c_format("Unknown command: %s",					   v[0].c_str()));    cur->second.dispatch(this, line, v);}voidCommand::status(const string& peer, string& status){    debug_msg("status: %s\n", peer.c_str());    /*    ** Are we in the peer table.    */    PeerList::iterator cur = _peers.begin();    while(cur != _peers.end()) {	switch(cur->is_this_you(peer)) {	case Peer::YES_ITS_ME:	    cur->status(status);	    return;	    break;	case Peer::NO_ITS_NOT_ME:	    break;	case Peer::PLEASE_DELETE_ME:	    _peers.erase(cur++);	    continue;	    break;	}	++cur;    }}boolCommand::pending(){    debug_msg("pending\n");    if(_init_count != 0) {	return true;    }    for(PeerList::iterator cur = _peers.begin(); cur != _peers.end(); ++cur){	if(cur->up() && cur->pending())	    return true;    }    return false;}/*** This is data that has been sent by the BGP process to the test_peer** then to the coordinating process. Find which peer this data is** destined for.*/voidCommand::datain(const string&  peer,  const uint32_t& genid,		const bool& status, const TimeVal& tv,		const vector<uint8_t>&  data){    debug_msg("peer: %s genid: %u status: %d secs: %lu micro: %lu data length: %u\n",	      peer.c_str(), genid, status,	      (unsigned long)tv.sec(), (unsigned long)tv.usec(),	      (uint32_t)data.size());    /*    ** Are we in the peer table.    */    PeerList::iterator cur = _peers.begin();    while(cur != _peers.end()) {	switch(cur->is_this_you(peer, genid)) {	case Peer::YES_ITS_ME:	    cur->datain(status, tv, data);	    return;	    break;	case Peer::NO_ITS_NOT_ME:	    break;	case Peer::PLEASE_DELETE_ME:	    _peers.erase(cur++);	    continue;	    break;	}	++cur;    }    XLOG_WARNING("Data for a peer <%s,%u> that is not in our table",		 peer.c_str(), genid);}void Command::datain_error(const string&  peer, const uint32_t& genid,		      const string& reason){    debug_msg("peer: %s genid: %u reason: %s\n", peer.c_str(), genid,	      reason.c_str());    /*    ** Are we in the peer table.    */    PeerList::iterator cur = _peers.begin();    while(cur != _peers.end()) {	switch(cur->is_this_you(peer, genid)) {	case Peer::YES_ITS_ME:	    cur->datain_error(reason);	    return;	    break;	case Peer::NO_ITS_NOT_ME:	    break;	case Peer::PLEASE_DELETE_ME:	    _peers.erase(cur++);	    continue;	    break;	}	++cur;    }    XLOG_WARNING("Data for a peer <%s,%u> that is not in our table",		 peer.c_str(), genid);}voidCommand::datain_closed(const string&  peer, const uint32_t& genid){    debug_msg("peer: %s genid: %u \n", peer.c_str(), genid);    /*    ** Are we in the peer table.    */    PeerList::iterator cur = _peers.begin();    while(cur != _peers.end()) {	switch(cur->is_this_you(peer, genid)) {	case Peer::YES_ITS_ME:	    cur->datain_closed();	    return;	    break;	case Peer::NO_ITS_NOT_ME:	    break;	case Peer::PLEASE_DELETE_ME:	    _peers.erase(cur++);	    continue;	    break;	}	++cur;    }    XLOG_WARNING("Data for a peer <%s,%u> that is not in our table",		 peer.c_str(), genid);}/*** All commands to peers are channelled through here.*/voidCommand::peer(const string& line, const vector<string>& words)    throw(InvalidString){    debug_msg("peer: %s\n", line.c_str());    if(1 == words.size())	xorp_throw(InvalidString, 		   c_format("Insufficient arguments: %s",  line.c_str()));    /*    ** This pointer must be valid. If we are in the command table    ** there must be an entry in the peer table.    */    PeerList::iterator p = _peers.begin();    for(p = _peers.begin(); p != _peers.end(); ++p){	if(Peer::YES_ITS_ME == p->is_this_you(words[0]))	    break;    }        XLOG_ASSERT(_peers.end() != p);    const string command = words[1];    if("connect" == command) {	p->connect(line, words);    } else if("disconnect" == command) {	p->disconnect(line, words);    } else if("establish" == command) {	p->establish(line, words);    } else if ("send" == command) {	p->send(line, words);    } else if ("trie" == command) {	p->trie(line, words);    } else if ("expect" == command) {	p->expect(line, words);    } else if ("assert" == command) {	p->assertX(line, words);    } else if ("dump" == command) {	p->dump(line, words);    } else {	xorp_throw(InvalidString, 		   c_format("Unrecognized command: %s",  command.c_str()));    }}/*** This command takes no arguments:** reset.**** Reset all the state in the coordinating process. All scripts should** start with this command.*/voidCommand::reset(const string& /*line*/, const vector<string>& /*v*/){    debug_msg("reset:\n");    load_command_map();    _target_hostname = "";    _target_port = "";    /*    ** Shutdown all the peers that are currently running.    */    for(PeerList::iterator cur = _peers.begin(); cur != _peers.end(); ++cur){	if(cur->up())	    cur->shutdown();    }    _init_count = 0;}/*** This command takes two arguments:** target hostname port.**** The host and port number of the BGP process that is being tested.*/voidCommand::target(const string& line, const vector<string>& v)    throw(InvalidString){    debug_msg("target: %s\n", line.c_str());    if(3 != v.size())	xorp_throw(InvalidString, 		   c_format("\"target hostname port\" expected got \"%s\"", 			    line.c_str()));    _target_hostname = v[1];    _target_port = v[2];}/*** This command takes two arguments:** initialise attach/create peername**** Attach to or create test peers.*/voidCommand::initialise(const string& line, const vector<string>& v)    throw(InvalidString){    debug_msg("target: %s\n", line.c_str());    if(3 != v.size())	xorp_throw(InvalidString, 		   c_format("\"initialise attach/create peer\" expected got \"%s\"", 			    line.c_str()));        const char *peername = v[2].c_str();    /*    ** Make sure that this peer doesn't already exist.    */    PeerList::iterator cur = _peers.begin();    for(; cur != _peers.end(); ++cur)	if(Peer::YES_ITS_ME == cur->is_this_you(peername))	    break;    if(cur != _peers.end())	 debug_msg("Peer name %s\n", peername);    if(_peers.end() != cur)	xorp_throw(InvalidString, c_format("This peer already exists: %s",					   peername));    /*    ** This peer name will be added to the command name map, verify    ** that we don't already have a command with this name.    */    StringCommandMap::iterator com  = _commands.find(peername);    if(_commands.end() != com)	xorp_throw(InvalidString, c_format("Peername command clash: %s",					   peername));    if(v[1] == "attach") {	/* FINE */    } else if(v[1] == "create") {	XLOG_FATAL("initialise create not currently supported");    } else	xorp_throw(InvalidString,		   c_format("Only attach/create allowed not: %s",					   v[3].c_str()));    /*    ** If we got here we are attaching.    */        /* Attach to and reset the peer. */    debug_msg("About to attach\n");    XrlTestPeerV0p1Client test_peer(&_xrlrouter);    test_peer.send_reset(peername,			 callback(this, &Command::initialise_callback, 				  string(peername)));    _init_count++;}voidCommand::initialise_callback(const XrlError& error, string peername){    debug_msg("callback: %s\n", peername.c_str());    _init_count--;    if(XrlError::OKAY() != error) {	XLOG_ERROR("%s: Failed to initialise peer %s", error.str().c_str(),		   peername.c_str());	return;    }    /* Add to the peer structure */    _peers.push_back(Peer(&_eventloop, &_xrlrouter, peername, _genid++,		       _target_hostname, _target_port));    /* Add to the command structure */    _commands.insert(StringCommandMap::value_type(peername, &Command::peer));}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
6080yy午夜一二三区久久| 日韩午夜av一区| 日本欧美一区二区在线观看| 久久精品欧美日韩精品| 欧美二区乱c少妇| 国产99精品国产| 男女视频一区二区| 亚洲精品视频免费观看| 国产日韩精品一区二区浪潮av| 欧美日韩在线播放三区| 成人动漫一区二区三区| 久久爱www久久做| 亚洲成人一区二区在线观看| 国产精品亲子伦对白| 精品国产青草久久久久福利| 在线这里只有精品| 波多野结衣在线aⅴ中文字幕不卡| 蜜臀av一区二区在线免费观看| 有码一区二区三区| 国产精品久久久久aaaa樱花| 久久精品人人做人人综合 | 欧美亚洲国产一区二区三区va| 国产精品69毛片高清亚洲| 麻豆精品新av中文字幕| 亚洲成人av中文| 一片黄亚洲嫩模| 中文字幕一区二区三区在线观看| 欧美精品一区男女天堂| 欧美一区二区网站| 欧美日韩亚洲综合一区| 在线欧美日韩国产| 91一区二区三区在线播放| 成人app在线观看| 成人国产精品免费观看| 国产99精品国产| 成人午夜视频免费看| 国产精品一区二区三区乱码| 国产一区二区女| 国产在线不卡一区| 国内精品久久久久影院一蜜桃| 美女视频黄a大片欧美| 蜜臀av亚洲一区中文字幕| 日本免费在线视频不卡一不卡二| 五月婷婷激情综合| 日本免费新一区视频| 日本视频中文字幕一区二区三区| 天堂一区二区在线| 免费在线看一区| 精品一区二区在线免费观看| 精品一区二区三区的国产在线播放| 美女在线视频一区| 国产一区二区三区四| 国产一区二区三区免费观看| 国产999精品久久| 91在线观看地址| 欧美综合在线视频| 91精品中文字幕一区二区三区| 91精品国产欧美一区二区成人 | 国产丝袜在线精品| 国产欧美精品日韩区二区麻豆天美| 国产校园另类小说区| 中文字幕不卡一区| 亚洲狠狠丁香婷婷综合久久久| 婷婷综合久久一区二区三区| 激情久久五月天| 国产精品小仙女| gogogo免费视频观看亚洲一| 日本道免费精品一区二区三区| 欧美日韩午夜在线| 精品久久国产字幕高潮| 国产片一区二区| 国产精品欧美一级免费| 一区二区三区欧美日韩| 日韩精品成人一区二区在线| 国产精品18久久久久久vr| 福利电影一区二区| 欧美日韩专区在线| 2022国产精品视频| 一区二区三区四区国产精品| 奇米影视一区二区三区| 成人丝袜18视频在线观看| 欧美日韩免费在线视频| 国产亚洲精久久久久久| 一区二区三区丝袜| 久久97超碰色| 色天使久久综合网天天| 欧美一区二区三区在线观看视频| 久久影音资源网| 亚洲妇女屁股眼交7| 国产成人av一区二区三区在线| 色噜噜狠狠成人网p站| 精品国产乱码久久久久久浪潮| 亚洲免费视频成人| 国产乱人伦偷精品视频不卡| 欧美伊人久久久久久久久影院 | 精品处破学生在线二十三| 国产精品久久久久久久久久免费看| 日韩国产成人精品| 91欧美一区二区| 国产亚洲欧美日韩日本| 午夜精品久久久久久久99水蜜桃 | 国产精品动漫网站| 久久精品国产精品亚洲综合| 在线精品视频一区二区| 欧美国产精品专区| 毛片不卡一区二区| 欧美偷拍一区二区| 日本一区二区不卡视频| 久久精品国产77777蜜臀| 在线免费观看日本欧美| 国产亚洲短视频| 蜜臀av性久久久久蜜臀aⅴ流畅 | 91精品久久久久久蜜臀| 综合分类小说区另类春色亚洲小说欧美| 免费精品视频在线| 欧美日韩在线播放三区| 亚洲三级久久久| 不卡在线视频中文字幕| 久久视频一区二区| 蜜桃视频第一区免费观看| 欧美久久久久久久久| 亚洲激情图片一区| 99久久精品国产麻豆演员表| 欧美精品一区二区精品网| 日本亚洲最大的色成网站www| 欧美视频三区在线播放| 17c精品麻豆一区二区免费| 成人妖精视频yjsp地址| www久久久久| 狠狠狠色丁香婷婷综合久久五月| 6080yy午夜一二三区久久| 亚洲主播在线观看| 在线免费不卡视频| 亚洲成人自拍网| 欧美久久久影院| 午夜免费久久看| 91精品国产综合久久蜜臀| 日韩和的一区二区| 欧美三级乱人伦电影| 香港成人在线视频| 欧美一区二区三区免费视频| 青青草视频一区| 精品国产成人在线影院| 国产一区二区三区在线观看免费| www一区二区| 成人丝袜18视频在线观看| 中文字幕在线观看一区| 一本到高清视频免费精品| 亚洲欧美激情在线| 欧美影片第一页| 日韩电影在线观看电影| 精品乱人伦一区二区三区| 精品亚洲porn| 国产午夜精品一区二区| 白白色 亚洲乱淫| 亚洲码国产岛国毛片在线| 欧美系列在线观看| 奇米精品一区二区三区在线观看 | 91视视频在线观看入口直接观看www | 日韩成人精品视频| 欧美va亚洲va国产综合| 不卡视频免费播放| 一个色综合网站| 91精品国产综合久久精品| 国模少妇一区二区三区| 国产精品狼人久久影院观看方式| 色婷婷av一区二区三区大白胸| 午夜精品久久久久久久蜜桃app| 欧美大白屁股肥臀xxxxxx| 国产激情精品久久久第一区二区| 国产拍揄自揄精品视频麻豆| 色狠狠一区二区| 麻豆精品国产91久久久久久| 国产精品久久久久久亚洲伦| 欧美色图免费看| 黄一区二区三区| 一区二区三区影院| 精品国产一区二区亚洲人成毛片| 成人av在线一区二区| 午夜精品福利一区二区蜜股av | 久久精品欧美日韩| 91久久精品一区二区三| 精品一区二区三区免费观看| 亚洲精品久久久蜜桃| 久久综合久久综合九色| 日本道在线观看一区二区| 国产精品自拍av| 亚洲成人激情社区| 中文字幕av一区 二区| 91麻豆精品国产91久久久资源速度| 成人小视频免费观看| 婷婷成人激情在线网| 欧美国产禁国产网站cc| 91精品国产美女浴室洗澡无遮挡| av一区二区三区四区| 久久99国产乱子伦精品免费| 亚洲一本大道在线| 国产精品福利av| 久久久久一区二区三区四区| 8x8x8国产精品|