... | ... | @@ -38,3 +38,186 @@ ElementManager : 노드의 추가/삭제 및 노드와 망 전체 리스트를 |
|
|
|
|
|
### 나) DB 파일을 읽어 그룹, 노드, 망(링크) 데이터를 구성하는 순서도
|
|
|
<img src="Element_Image/elementFlow1.png" width="500">
|
|
|
|
|
|
### 다) 그룹추가
|
|
|
<img src="Element_Image/elementFlowGroupAdd.png" width="500">
|
|
|
|
|
|
### 라) 그룹변경
|
|
|
<img src="Element_Image/elementFlowGroupModify.png" width="500">
|
|
|
|
|
|
### 마) 그룹삭제
|
|
|
<img src="Element_Image/elementFlowGroupDel.png" width="500">
|
|
|
|
|
|
### 바) 노드추가
|
|
|
<img src="Element_Image/elementFlowNodeAdd.png" width="500">
|
|
|
|
|
|
### 사) 노드변경
|
|
|
<img src="Element_Image/elementFlowNodeModify.png" width="500">
|
|
|
|
|
|
### 아) 노드삭제
|
|
|
<img src="Element_Image/elementFlowNodeDel.png" width="500">
|
|
|
|
|
|
### 자) 링크추가
|
|
|
<img src="Element_Image/elementFlowLinkAdd.png" width="500">
|
|
|
|
|
|
### 차) 링크삭제
|
|
|
<img src="Element_Image/elementFlowLinkDel.png" width="500">
|
|
|
|
|
|
### 카) Iris3 element Interface
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_SetupMaxNodeCount(int maxCount)
|
|
|
관리 가능한 최대 노드 개수 변경 (기본 값 : 256)
|
|
|
IRIS3_ELEMENT_DECL int Iris3elem_GetMaxNodeCount()
|
|
|
관리 가능한 최대 노드 개수 리턴
|
|
|
IRIS3_ELEMENT_DECL ElementManagerInterface* Iris3elem_GetManager()
|
|
|
ElementManager 리턴
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_SetManager(ElementManagerInterface* manager)
|
|
|
ElementManager 강제 할당
|
|
|
IRIS3_ELEMENT_DECL ElementNode* Iris3elem_GetCurrentNode()
|
|
|
Current 노드 리턴
|
|
|
IRIS3_ELEMENT_DECL Element* Iris3elem_GetCurrentElement()
|
|
|
Current element리턴
|
|
|
IRIS3_ELEMENT_DECL BOOL Iris3elem_SetCurrentElement(Element* pCurrElem, BOOL bUpdateNotify=TRUE)
|
|
|
Current element 지정
|
|
|
IRIS3_ELEMENT_DECL Element* Iris3elem_GetSelectedTreeElement()
|
|
|
선택된 Tree element 반환
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_SetSelectedTreeElement(Element* pElement)
|
|
|
Tree element 선택
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_Init(struct DBConnType elemCfgDB, CString emsIniPath, CString nodePosIniPath)
|
|
|
ElementManager에서 사용할 DB, 환경설정 등의 정보를 설정
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_UseCommandGateway(int nodeTypeID, BOOL bUse)
|
|
|
IRIS3_ELEMENT_DECL BOOL Iris3elem_IsUseCommandGateway(int nodeTypeID)
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_EnableHeartbeat()
|
|
|
특정 함수나 루틴의 수행시간을 계산해주는 기능의 동작여부를 설정
|
|
|
IRIS3_ELEMENT_DECL BOOL Iris3elem_RegisterHeartbeat(int nodeTypeID, CString strHbCmd, int timeSpan)
|
|
|
노드가 계속 살아 있는지 감시(Heartbeat)하는 인터페이스를 등록
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_AliveCheckerVersion
|
|
|
연결이 끊어진 노드에 PING 메시지 보내는 Version 설정
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_CheckAliveForAllNode(BOOL bForAllNode)
|
|
|
class Element의 멤버 변수m_bUsable : 고정된 개수의 elem을 미리 생성해두고, use flag로 액세스를 제어하려는 경우에 사용된다. (0 : not usable, 1: usable)
|
|
|
not usable 노드에 대해서도 Alive 체크를 할 것인지 여부 지정
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_SetDisconPingInterval(int secs)
|
|
|
연결이 끊어진 노드에 PING 메시지 보내는 간격 설정
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_SetDisconFirstTimeout(int secs)
|
|
|
노드 단절을 판단하는 첫 번째 초과시간
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_SetDisconSecondTimeout(int secs)
|
|
|
노드 단절을 판단하는 두 번째 초과시간
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_RegisterDisconPingCmd(CString strCmd)
|
|
|
단절된 노드에 PING 메시지 보낼 명령 문자열
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_RegisterDisconConfirmCmd(CString strCmd)
|
|
|
단절된 노드에 보낼 명령 문자열
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_RegisterDisconPingCmd(int nNodeTypeID, CString strCmd)
|
|
|
단절된 노드에 보낼 명령 문자열 (노드 타입별 지정)
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_RegisterDisconConfirmCmd(int nNodeTypeID, CString strCmd)
|
|
|
단절된 노드에 보낼 명령 문자열 (노드 타입별 지정)
|
|
|
IRIS3_ELEMENT_DECL BOOL Iris3elem_IsConfirmResponse(ElementNode* pNode)
|
|
|
단절 의심상태에서 마지막으로 보낸 명령어가 CONFIRM 명령인지 여부
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_InitAllNodeStatus()
|
|
|
모든 노드의 LedInfo 정보를 초기화
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_BroadcastRtrvSys()
|
|
|
EMS의 모든 노드에게 RTRV-SYS 명령어를 broadcast
|
|
|
RTRV-SYS : TID, NODE_NAME, NODE_ID(GROUP), NE_TYPE, SHELF_TYPE, SHELF_ID, TOPOLOGY, VENDOR 등 노드의 정보를 반환하는 명령어
|
|
|
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_BroadcastRtrvSys(BOOL bOnlyForUsable)
|
|
|
usable 노드에 RTRV-SYS 명령어를 broadcast
|
|
|
IRIS3_ELEMENT_DECL BOOL Iris3elem_SendCommand(ElementNode* pNode, CString strCmd)
|
|
|
특정 노드에 명령을 전송
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_SendCommand2(Element* pTargetElement, CString strCmd)
|
|
|
ElementComposite 내의 모든 노드에 명령어를 전송
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_SendCommand2(Element* pTargetElement, CString strCmd, BOOL bOnlyForUsable)
|
|
|
EMS의 특정 노드에 명령어를 전송
|
|
|
IRIS3_ELEMENT_DECL unsigned int Iris3elem_GetNetType(const char* netTypeStr)
|
|
|
망타입은 STAR, LADM(일렬). RING, MESH 등이 있는데 망타입 문자열 “PtoP”, “STAR” 등을 받으면 Iris에서 Define된 망 타입이 반환
|
|
|
IRIS3_ELEMENT_DECL const char* Iris3elem_GetNetTypeStr(unsigned int netType)
|
|
|
Iris에서 Define된 망 타입을 받으면 망타입 문자열이 반환
|
|
|
IRIS3_ELEMENT_DECL const char* Iris3elem_GetNetTypeDescStr(unsigned int netType)
|
|
|
망타입 alias 문자열 “링”, “메쉬” 등이 반환
|
|
|
IRIS3_ELEMENT_DECL BOOL Iris3elem_SetNetTypeDescStr(unsigned int netType, char* newDescStr)
|
|
|
망타입 alias를 지정
|
|
|
IRIS3_ELEMENT_DECL ElementCreator* Iris3elem_GetElementCreator(int nodeTypeID /* IRIS3_NODETYPEID_xxx */)
|
|
|
ElementCreator 객체 조회
|
|
|
IRIS3_ELEMENT_DECL BOOL Iris3elem_AddElementCreator(int nodeTypeID /* IRIS3_NODETYPEID_xxx */, ElementCreator* creator)
|
|
|
ElementCreator 객체 등록
|
|
|
IRIS3_ELEMENT_DECL ElementNode* default_create_node(unsigned int neType /* IRIS3_NETYPE_xxx */, unsigned char shelfID)
|
|
|
ElementCreator 객체 생성
|
|
|
IRIS3_ELEMENT_DECL ElementNode* default_create_node2(ElementNet* pGroup, unsigned int neType, unsigned char shelfID, unsigned int ip)
|
|
|
ElementCreator 객체 생성 (SetIP 추가)
|
|
|
IRIS3_ELEMENT_DECL ElementNode* default_create_metaaddr(ElementNode* pCurrNode, MetaAddrInfo* pMetaAddrInfo /*OUT*/)
|
|
|
각 노드에 대해 meta_addr을 만들기 위해 필요한 정보를 채우는 함수
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_TurnOnTidBlock()
|
|
|
Tid를 사용하는 함수
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_TurnOffTidBlock()
|
|
|
Tid를 사용을 막는 함수
|
|
|
IRIS3_ELEMENT_DECL char* Iris3elem_GetCurrTID()
|
|
|
노드의 Tid를 반환
|
|
|
IRIS3_ELEMENT_DECL int Iris3elem_SaveCurrentNodeTypeID()
|
|
|
lemonif에서 노드 타입별로 리소스ID를 찾을 수 있도록 노드 타입을 기억해 두는 함수
|
|
|
IRIS3_ELEMENT_DECL unsigned int Iris3elem_GetShelfId(int nodeTypeID /* IRIS3_NODETYPEID_xxx */, CString strShelfType)
|
|
|
Shelf타입 문자열을 Shelf ID로 바꿔주는 함수
|
|
|
IRIS3_ELEMENT_DECL int Iris3elem_Xid2Node(char* xid, ElementNode** ppNode)
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_SetNetSeverityMode( enum Iris3NetSeverityMode mode )
|
|
|
DISCONN 표시 방법 설정 (GROUP내에 모든 노드가 Disconn or Deact일 경우/ GROUP내에 일부 노드가 Disconn or Deact일 경우)
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_CheckDbVersion()
|
|
|
IRIS3_ELEMENT_DECL BOOL Iris3elem_EnumAllNodes(BOOL (*node_enum_proc)(ElementNode* node, void* param), void* param)
|
|
|
모든 노드에 주어진 콜벡함수 호출
|
|
|
IRIS3_ELEMENT_DECL BOOL Iris3elem_EnumUsableNodes(BOOL (*node_enum_proc)(ElementNode* node, void* param), void* param)
|
|
|
usable 노드를 찾아서 콜벡함수 호출
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_InitStartup()
|
|
|
Reliable 서비스에 필요한 SAP, Reliable 서비스에 필요한 송신용 callback 과 수신용 callback 2 개를 등록
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_SetStartupSap(int newSap)
|
|
|
startup sap 지정 : 기본값 = 255
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_RegisterStartupCmd(CString strCmd)
|
|
|
startup 명령어 지정 : 기본값 = RTRV-SYS;
|
|
|
IRIS3_ELEMENT_DECL int Iris3elem_RegisterRestartUserCallback(void restart_user_cb(struct meta_addr *src, ElementNode* pNode))
|
|
|
startup일때 app에서 뭔가 해주고 싶으면 callback 등록
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_EnableLoginLogout(BOOL bOnOff)
|
|
|
Login/Logout 기능 사용 여부 등록
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_RegisterLoginCmd(CString strCmd)
|
|
|
Login 명령어를 등록
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_RegisterLogoutCmd(CString strCmd)
|
|
|
Logout 명령어를 등록
|
|
|
IRIS3_ELEMENT_DECL BOOL Iris3elem_SendLogin(ElementNode* pNode)
|
|
|
노드에 Login 명령어를 전송
|
|
|
IRIS3_ELEMENT_DECL BOOL Iris3elem_SendLogout(ElementNode* pNode)
|
|
|
노드에 Logout 명령어를 전송
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_BroadcastLogin()
|
|
|
EMS의 모든 노드에 Login 명령어를 전송
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_BroadcastLogout()
|
|
|
EMS의 모든 노드에 Logout 명령어를 전송
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_BroadcastLogin(BOOL bOnlyForUsable)
|
|
|
not usable 노드에 대해서도 Login 명령어를 전송 할 것인지 여부 지정
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_BroadcastLogout(BOOL bOnlyForUsable)
|
|
|
not usable 노드에 대해서도 Logout 명령어를 전송 할 것인지 여부 지정
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_SetNodeKeyType(enum Iris3NodeKeyType type)
|
|
|
노드 KEY 타입을 지정 (Iris3NodeKeyType(NODENAME, TID, FULLNAME)으로 지정할 수 있음)
|
|
|
IRIS3_ELEMENT_DECL enum Iris3NodeKeyType Iris3elem_GetNodeKeyType()
|
|
|
노드 KEY 타입 반환
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_SetLinkNodeKeyType(enum Iris3LinkNodeKeyType type)
|
|
|
링크의 KEY 타입을 지정
|
|
|
IRIS3_ELEMENT_DECL enum Iris3LinkNodeKeyType Iris3elem_GetLinkNodeKeyType()
|
|
|
링크의 KEY 타입을 반환
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_SetNodePosSectionType(enum Iris3NodePosSectionType type)
|
|
|
node_pos.ini(노드 위치 파일)의 섹션값 타입(NODENAME, TID) 지정
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_SetNodePosKeyType(enum Iris3NodePosKeyType type)
|
|
|
node_pos.ini(노드 위치 파일)의 KEY 타입 지정
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_SetSerialNumber(int max)
|
|
|
Client에는 DB가 없으므로 명시적인 초기화 필요
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_RtrvSysEachTimeCurrentChanged(BOOL bAutoSend, const char* rtrvSysCmd=NULL, BOOL bSendToChild=FALSE, BOOL bSendOnlyForUsable=TRUE)
|
|
|
Current 노드 변경 시 RTRV-SYS명령어를 전송
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_Persistence_EnableNodeAddAuto(BOOL bAutoAdd)
|
|
|
DB에서 로딩할 때 노드를 자동으로 추가시켜줄 것인지 여부 지정
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_Persistence_UsePermissionField(BOOL bUse)
|
|
|
IRIS_GROUP 테이블의 PERMISSION_TYPE 필드를 사용할지 여부 지정
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_Persistence_SetVersion(int ver/*1,2*/)
|
|
|
IRIS3_ELEMENT_DECL void Iris3elem_RegisterSevLevelTable(SevLevelDesicionTable* table)
|
|
|
IRIS3_ELEMENT_DECL int Iris3elem_GetMoreSevLevel(int sev0, int sev1)
|
|
|
IRIS3_ELEMENT_DECL int Iris3elem_GetNodeListCount()
|
|
|
EMS에서 관리하는 전체 노드 개수
|
|
|
IRIS3_ELEMENT_DECL int Iris3elem_GetNodeInfo(int ith, char* iris_code/*OUT*/, char* xid/*OUT*/, unsigned int* ip/*OUT*/)
|
|
|
노드 정보 조회 (Iris code, xid, 노드 ip가 조회)
|
|
|
IRIS3_ELEMENT_DECL int Iris3elem_Xid2Iriscode(char* xid, unsigned char* iris_code/*OUT*/)
|
|
|
xid를 Iris code로 변환
|
|
|
IRIS3_ELEMENT_DECL int Iris3elem_Xid2MetaAddr(char* xid, struct meta_addr** ppAddr/*OUT*/)
|
|
|
xid를 meta 주소값으로 변환
|
|
|
IRIS3_ELEMENT_DECL int Iris3elem_RtXid2GwXid(char* rtXid, char* gwXid/*OUT*/)
|
|
|
IRIS3_ELEMENT_DECL int Iris3elem_GetXidSubpart(char* xid, int idx, char* xid_subpart/*OUT*/)
|
|
|
xid 문자열을 파싱하여 n번째 항목을 리턴 |
|
|
\ No newline at end of file |