/*! Adds member definition \a md to the list of all members of this file */ void FileDef::insertMember(MemberDef *md) { if (md->isHidden()) return; //printf("%s:FileDef::insertMember(%s (=%p) list has %d elements)\n", // name().data(),md->name().data(),md,allMemberList.count()); MemberList *allMemberList = getMemberList(MemberList::allMembersList); if (allMemberList && allMemberList->findRef(md)!=-1) // TODO optimize the findRef! { return; } if (allMemberList==0) { allMemberList = new MemberList(MemberList::allMembersList);; m_memberLists.append(allMemberList); } allMemberList->append(md); //::addFileMemberNameToIndex(md); switch (md->memberType()) { case MemberDef::Variable: case MemberDef::Property: addMemberToList(MemberList::decVarMembers,md); addMemberToList(MemberList::docVarMembers,md); break; case MemberDef::Function: addMemberToList(MemberList::decFuncMembers,md); addMemberToList(MemberList::docFuncMembers,md); break; case MemberDef::Typedef: addMemberToList(MemberList::decTypedefMembers,md); addMemberToList(MemberList::docTypedefMembers,md); break; case MemberDef::Enumeration: addMemberToList(MemberList::decEnumMembers,md); addMemberToList(MemberList::docEnumMembers,md); break; case MemberDef::EnumValue: // enum values are shown inside their enums break; case MemberDef::Define: addMemberToList(MemberList::decDefineMembers,md); addMemberToList(MemberList::docDefineMembers,md); break; default: err("FileDef::insertMembers(): " "member `%s' with class scope `%s' inserted in file scope `%s'!\n", md->name().data(), md->getClassDef() ? md->getClassDef()->name().data() : "<global>", name().data()); } //addMemberToGroup(md,groupId); }
void NamespaceDef::insertMember(MemberDef *md) { if (md->isHidden()) return; MemberList *allMemberList = getMemberList(MemberListType_allMembersList); if (allMemberList==0) { allMemberList = new MemberList(MemberListType_allMembersList); m_memberLists.append(allMemberList); } allMemberList->append(md); if (m_allMembersDict==0) { m_allMembersDict = new MemberSDict; } //printf("%s::m_allMembersDict->append(%s)\n",name().data(),md->localName().data()); m_allMembersDict->append(md->localName(),md); //::addNamespaceMemberNameToIndex(md); //static bool sortBriefDocs=Config_getBool("SORT_BRIEF_DOCS"); switch(md->memberType()) { case MemberType_Variable: addMemberToList(MemberListType_decVarMembers,md); addMemberToList(MemberListType_docVarMembers,md); break; case MemberType_Function: addMemberToList(MemberListType_decFuncMembers,md); addMemberToList(MemberListType_docFuncMembers,md); break; case MemberType_Typedef: addMemberToList(MemberListType_decTypedefMembers,md); addMemberToList(MemberListType_docTypedefMembers,md); break; case MemberType_Enumeration: addMemberToList(MemberListType_decEnumMembers,md); addMemberToList(MemberListType_docEnumMembers,md); break; case MemberType_EnumValue: break; case MemberType_Define: addMemberToList(MemberListType_decDefineMembers,md); addMemberToList(MemberListType_docDefineMembers,md); break; default: err("NamespaceDef::insertMembers(): " "member `%s' with class scope `%s' inserted in namespace scope `%s'!\n", md->name().data(), md->getClassDef() ? md->getClassDef()->name().data() : "", name().data()); } }
/*Determine packet and act accordingly*/ int dissectPacket(void* packet, int socket_fd) { /*Grab type of packet from header*/ uint16_t headerType; headerType = ( (struct data_packet*)packet )->head.packet_type; if(headerType == PACKET_TYPE_DATA) { struct data_packet* data_pack = (struct data_packet*)packet; /*Assume dest is this*/ /* I'm definitely dest so write to me */ tap_write(tap_fd, data_pack->datagram, data_pack->head.packet_length); } else if(headerType == PACKET_TYPE_LEAVE) { broadcast(routesList, packet); } else if(headerType == PACKET_TYPE_QUIT) { broadcast(routesList, packet); globalStatus = 0; } else if(headerType == PACKET_TYPE_LINKSTATE) { struct linkstate_packet* lstate_pack = (struct linkstate_packet*)packet; addMemberToList(members, lstate_pack->linkstate_head); } else { fprintf(stderr, "Wrong packet type: %u\n", headerType); return -1; } return 1; }
bool GroupDef::insertMember(MemberDef *md,bool docOnly) { if (md->isHidden()) return FALSE; //printf("GroupDef(%s)::insertMember(%s)\n", title.data(), md->name().data()); MemberNameInfo *mni=0; if ((mni=(*allMemberNameInfoSDict)[md->name()])) { // member with this name already found MemberNameInfoIterator srcMnii(*mni); MemberInfo *srcMi; for ( ; (srcMi=srcMnii.current()) ; ++srcMnii ) { MemberDef *srcMd = srcMi->memberDef; if (srcMd==md) return FALSE; // already added before! bool sameScope = srcMd->getOuterScope()==md->getOuterScope() || // same class or namespace // both inside a file => definition and declaration do not have to be in the same file (srcMd->getOuterScope()->definitionType()==Definition::TypeFile && md->getOuterScope()->definitionType()==Definition::TypeFile); LockingPtr<ArgumentList> srcMdAl = srcMd->argumentList(); LockingPtr<ArgumentList> mdAl = md->argumentList(); LockingPtr<ArgumentList> tSrcMdAl = srcMd->templateArguments(); LockingPtr<ArgumentList> tMdAl = md->templateArguments(); if (srcMd->isFunction() && md->isFunction() && // both are a function ((tSrcMdAl.pointer()==0 && tMdAl.pointer()==0) || (tSrcMdAl.pointer()!=0 && tMdAl.pointer()!=0 && tSrcMdAl->count()==tMdAl->count()) ) && // same number of template arguments matchArguments2(srcMd->getOuterScope(),srcMd->getFileDef(),srcMdAl.pointer(), md->getOuterScope(),md->getFileDef(),mdAl.pointer(), TRUE ) && // matching parameters sameScope // both are found in the same scope ) { if (srcMd->getGroupAlias()==0) { md->setGroupAlias(srcMd); } else { md->setGroupAlias(srcMd->getGroupAlias()); } return FALSE; // member is the same as one that is already added } } mni->append(new MemberInfo(md,md->protection(),md->virtualness(),FALSE)); } else { mni = new MemberNameInfo(md->name()); mni->append(new MemberInfo(md,md->protection(),md->virtualness(),FALSE)); allMemberNameInfoSDict->append(mni->memberName(),mni); } //printf("Added member!\n"); allMemberList->append(md); switch(md->memberType()) { case MemberDef::Variable: if (!docOnly) { addMemberToList(MemberList::decVarMembers,md); } addMemberToList(MemberList::docVarMembers,md); break; case MemberDef::Function: if (!docOnly) { addMemberToList(MemberList::decFuncMembers,md); } addMemberToList(MemberList::docFuncMembers,md); break; case MemberDef::Typedef: if (!docOnly) { addMemberToList(MemberList::decTypedefMembers,md); } addMemberToList(MemberList::docTypedefMembers,md); break; case MemberDef::Enumeration: if (!docOnly) { addMemberToList(MemberList::decEnumMembers,md); } addMemberToList(MemberList::docEnumMembers,md); break; case MemberDef::EnumValue: if (!docOnly) { addMemberToList(MemberList::decEnumValMembers,md); } addMemberToList(MemberList::docEnumValMembers,md); break; case MemberDef::Define: if (!docOnly) { addMemberToList(MemberList::decDefineMembers,md); } addMemberToList(MemberList::docDefineMembers,md); break; case MemberDef::Signal: if (!docOnly) { addMemberToList(MemberList::decSignalMembers,md); } addMemberToList(MemberList::docSignalMembers,md); break; case MemberDef::Slot: if (md->protection()==Public) { if (!docOnly) { addMemberToList(MemberList::decPubSlotMembers,md); } addMemberToList(MemberList::docPubSlotMembers,md); } else if (md->protection()==Protected) { if (!docOnly) { addMemberToList(MemberList::decProSlotMembers,md); } addMemberToList(MemberList::docProSlotMembers,md); } else { if (!docOnly) { addMemberToList(MemberList::decPriSlotMembers,md); } addMemberToList(MemberList::docPriSlotMembers,md); } break; case MemberDef::Event: if (!docOnly) { addMemberToList(MemberList::decEventMembers,md); } addMemberToList(MemberList::docEventMembers,md); break; case MemberDef::Property: if (!docOnly) { addMemberToList(MemberList::decPropMembers,md); } addMemberToList(MemberList::docPropMembers,md); break; case MemberDef::Friend: if (!docOnly) { addMemberToList(MemberList::decFriendMembers,md); } addMemberToList(MemberList::docFriendMembers,md); break; default: err("GroupDef::insertMembers(): " "member `%s' (typeid=%d) with scope `%s' inserted in group scope `%s'!\n", md->name().data(),md->memberType(), md->getClassDef() ? md->getClassDef()->name().data() : "", name().data()); } return TRUE; }
void getMemberListByPhone(NODEDATA * value) { if (checkStringMatch(value->member->phone)) addMemberToList(value->member); }
void getMemberListByAll(NODEDATA * value) { addMemberToList(value->member); }
void newConnHandler(void* newConnection) { int remote_fd = (int) newConnection; struct AddressInfo localInfo; getLocalAddrInfo(remote_fd, &localInfo); struct AddressInfo remoteInfo; getRemoteAddrInfo(remote_fd, &remoteInfo); /*Check if member*/ if(!checkForMember(members, &localInfo, &remoteInfo)) { void *packet; /*Get LinkStateNode*/ uint16_t headerType = readPacketFromSock(remote_fd, &packet); if(headerType == PACKET_TYPE_LINKSTATE && ((struct linkstate_packet *)packet)->num_neighbors == 1) { /*Received proper linkstate packet with only 1 neighbor: us!*/ struct linkstate_packet* link_pack = (struct linkstate_packet*)packet; /* Manipulate dest to include your mac address TODO getlocalinfo */ struct AddressInfo dest; getLocalAddrInfo(remote_fd, &dest); link_pack->linkstate_head->remote= dest; /* Reverse local & dest and add to membership list TODO */ /* Reverse local & dest and add to membership list TODO */ /* Reverse local & dest and add to membership list TODO */ struct LinkStateNode* linkstate = malloc(sizeof(struct LinkStateNode)); linkstate->local = dest; linkstate->remote = link_pack->linkstate_head->local; linkstate->ID = getTime(); linkstate->avg_RTT = 1; linkstate->next = NULL; /* Add client to Membership list */ addMemberToList(members, linkstate); /* Send the unreversed but manipulated lstate pack back, but change source to you TODO */ link_pack->source = link_pack->linkstate_head->local; sendPacketToSock(link_pack, remote_fd); } else { printf("New connection sent packet other than linkstate. Dropping...\n"); close(remote_fd); } } while(globalStatus) { void* packet; uint16_t headerType = readPacketFromSock(remote_fd, &packet); if(dissectPacket(packet, remote_fd) < 0) { printf("ERROR: Couldn't read packet properly..\n"); break; } } }