Dear NetView experts and group members,
My name is Rajesh. I am facing a peculiar problem here. I am developing a connector
program for the Tivoli NetView 7.1.4
I am having 5 systems (computers) in the same network segment or different.
(192.168.ABC.).
Let us say the hostnames of the 5 systems are as follows:
Work Station 1
Work Station 2
Work Station 3
Work Station 4
Work Station 5
All these 5 systems are discovered by netview and their
nodes are displayed on the console.
I create a submap in my own function :
CreateESubmap (){
int nnodes;
……..
……..
symbolId = OVwCreateSymbolBySelectionName (OVwGetMapInfo(),pSymbolList->symbols[i].submap_id,SubmapName,"Network:cpEServer",submapName,ovwNormalStatus,ovwCompoundStatusSource, NULL,
ovwMergeDefaultCapabilities);
objectId = OVwDbSelectionNameToObjectId (submapName);
submapId = OVwCreateSubmap (OVwGetMapInfo(),objectId,ovwSharedSubmap,ovwNoSubmapType,submapName,ovwBusLayout,ovwNoSubmapFlags);
//WHEN THE CODE REACHES HERE I CAN SEE THE SUBMAP IMAGE WITH
THE NAME submapName IS SHOWN IN THE CONSOLE.
//Now I want to add symbols to the submap which is already
created.
//I try to add these work stations to the submapName.Now I
try
//to add all these 5 Work Stations to the submap.
//One Workstation at a time in this for loop
for(int i=0;i<4;i++){
If(addcomponenttosubmap(submapid,objectId,workstation))
{
nnodes=nnodes+1
}
}
The implementation of addcomponenttosubmap is illustrated
below.
bool CNV_ESDiscoveryDlg::AddComponentToSubmap(OVwSubmapId submapId, CString
Component)
{
bool bComponentAdded =
false;
int i;
LogMessage
("\nAddComponentToSubmap : Entrance");
OVwObjectId objectId;
OVwObjectIdList *
pObjectIdList;
OVwObjectInfo *
pObjectInfo;
OVwSymbolId symbolId;
OVwFieldBinding *
pFieldValue;
char *
pchHostname;
char nodeName[256];
CString ComponentName;
ComponentName
= Component;
ComponentName.MakeUpper
();
LogValue
("Component", ComponentName.GetBuffer(1));
for
(i = 0; i < MAX_OBJECTS; i++) {
m_objectList[i]
= ovwNullObjectId;
}
pFieldValue
= new OVwFieldBinding;
pFieldValue->field_val
= new OVwFieldValue;
pFieldValue->field_id
= OVwDbFieldNameToFieldId("EServer_sysName");
pFieldValue->field_val->is_list
= FALSE;
pFieldValue->field_val->field_type
= ovwStringField;
pFieldValue->field_val->un.string_val
= ComponentName.GetBuffer(1);
pObjectIdList
= OVwDbListObjectsByFieldValue(pFieldValue);
LogError("AddComponentTosubmap
: OvwDbListObjectsByFieldValue");
if
(pObjectIdList != NULL) {
LogMessage
("Object list != NULL");
LogValue
("Object count", pObjectIdList->count);
if
(pObjectIdList->count > 0) {
objectId
= pObjectIdList->object_ids[0];
pObjectInfo
= OVwGetObjectInfo (OVwGetMapInfo(), objectId);
symbolId
= OVwCreateSymbol (OVwGetMapInfo(),
submapId,
objectId,
"Computer:WinNT",
nodeName,
ovwNormalStatus,
ovwCompoundStatusSource,
NULL,
ovwMergeDefaultCapabilities);
if
(symbolId != ovwNullSymbolId) {
bComponentAdded
= true;
//MessageBox("
MCP Componment Added ");
//MessageBox(nodeName);
}
else
{
LogError
("AddComponentToSubmap OVwCreate Symbol");
}
}
}
delete
pFieldValue->field_val;
delete
pFieldValue;
return
bComponentAdded;
} // AddComponentToSubmap
The problem I face is that a symbol gets added to the submap
only when pObjectIdList->count > 0 is true only for WorkStation 2 and
WorkStation 5. I can see these symbols under the submapName.
But for WorkStation 1 WorkStation 3 and WorkStation 4 the pObjectIdList->count
> 0 is false so nothing gets added to the submapName.
Even though all the workstations are in the same network segment
I am getting this problem.
If I put a OVwErrorMsg(OVwError()) after pObjectIdList =
OVwDbListObjectsByFieldValue(pFieldValue) always I get the message “success
“for all the 5 workstations. But after this pObjectIdList->count >
0 is false for WorkStation 1 WorkStation 3 and WorkStation 4.
Why pObjectIdList->count > 0 is false for WorkStation
1 WorkStation 3 and WorkStation 4?
Waiting for your response,
Thanking you,
Rajesh