00001 #include "stdafx.h"
00002
00003 #include <Console.h>
00004 #include <Formatter.h>
00005 #include "BONComponent.h"
00006
00007 #include "Formatter.h"
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 using namespace GMEConsole;
00020
00021 void CComponent::InvokeEx(CBuilder &builder,CBuilderObject *focus, CBuilderObjectList &selected, long param)
00022 {
00023 using namespace GMEConsole;
00024 Console::Out::WriteLine("Interpreter started...");
00025
00026 Console::Out::WriteLine(CString("Router list for network") + builder.GetRootFolder()->GetName());
00027 const CBuilderModelList *diags = builder.GetRootFolder()->GetRootModels();
00028 POSITION pos = diags->GetHeadPosition();
00029 while(pos)
00030 {
00031 CBuilderModel *diagram = diags->GetNext(pos);
00032 ProcessDiagram(diagram);
00033 }
00034 }
00035
00036 void CComponent::ProcessDiagram(CBuilderModel *d)
00037 {
00038 ASSERT(d->GetKindName() == "NetDiagram");
00039 const CBuilderModelList *diags = d->GetModels("NetDiagram");
00040 POSITION pos = diags->GetHeadPosition();
00041 while(pos) ProcessDiagram(diags->GetNext(pos));
00042
00043 const CBuilderModelList *routers = d->GetModels("Router");
00044 pos = routers->GetHeadPosition();
00045 while(pos) ProcessRouter(routers->GetNext(pos));
00046 }
00047
00048 void CComponent::ProcessRouter(CBuilderModel *r)
00049 {
00050 using namespace GMEConsole;
00051 ASSERT(r->GetKindName() == "Router");
00052 CString fam;
00053 r->GetAttribute("Family", fam);
00054 Console::Out::WriteLine(CString("\tRouter ") + r->GetName() + " (" + fam + ")");
00055
00056 const CBuilderAtomList *ports = r->GetAtoms("Port");
00057 POSITION pos = ports->GetHeadPosition();
00058 while(pos)
00059 {
00060 CBuilderAtom *port = ports->GetNext(pos);
00061 CString iftype, ipaddr;
00062 int ifspeed;
00063 port->GetAttribute("IFType", iftype);
00064 port->GetAttribute("IFSpeed", ifspeed);
00065 port->GetAttribute("IPAddress", ipaddr);
00066 Console::Out::WriteLine(CString(" \t\tPort ") + Formatter::MakeObjectHyperlink(port->GetName(), port->GetObjId()) +
00067 "(" + iftype + "; " + CComVariant(ifspeed) + "Kbps), Addr: " + ipaddr );
00068 }
00069 }