samchon
316
2018-03-09 15:48:45 작성 2018-03-09 15:54:57 수정됨
0
843

NPM 모듈 하나 빌드했습니다 -> ECON (Event Containers)


Extension of TypeScript-STL Containers dispatching Events.


제가 이번에 NPM 에 공개한 ECON 은 원소 입출력을 이벤트로 받아볼 수 있는 컨테이너 라이브러리입니다. TSTL 컨테이너 모듈의 확장 모듈로써, 원소의 입출력이나 갱신이 이루어질 때마다 이벤트를 생성해내며 addEventListener 함수를 통해 리스너를 등록, 이러한 과정을 관찰할 수 있습니다.

ECON 은 본래 제가 만든 자작 프레임워크 (Samchon Framework) 에 내장되어있던 모듈이었습니다. 다만, 해당 프레임워크가 워낙 인기가 없는지라 이렇게 Event Containers 부분만 따로 떼어내어 퍼블리쉬 하게 되었습니다. 저는 ECON 을 프론트 레벨에서는 컨테이너 내 데이터의 입출력이나 변경이 생길때마다 화면을 갱신해줘야 할 때 주로 사용했으며, 백엔드 레벨에서는 분산처리시스템을 만들 때, 클라이언트 시스템의 접속 및 해제에 따른 연쇄작업이 필요할 때, 이 ECON 컨테이너를 사용하였습니다.


현재 ECON 에서 제공하는 컨테이너의 종류는 다음과 같습니다.

Linear Containers

  • Vector & VectorBoolean
  • Deque
  • List

Set Containers

  • TreeSet, TreeMultiSet
  • HashSet, HashMultiSet

Map Containers

  • TreeMap, TreeMultiMap
  • HashMap, HashMultiMap


아래는 대략적인 사용법을 나타내는 예제 코드입니다.

import econ = require("econ");

function listener(event: econ.TreeMap.Event<number, string>): void
{
    console.log("Event type is: " + event.type);

    for (let it = event.first; !it.equals(event.last); it = it.next())
        console.log("\t", "An element by that event:", it.value);
}

function main(): void
{
    // CONSTRUCT EVENT TREE-MAP
    let map: econ.TreeMap<number, string> = new econ.TreeMap();
    map.addEventListener("insert", listener);
    map.addEventListener("erase", listener);

    // DISPATCHES INSERT EVENT
    map.set(1, "One");
    map.set(2, "Two");
    map.set(3, "Three");

    // DISPATCHES ERASE EVENT
    map.erase(2);
    map.erase(3);
}
main();


2
1
  • 댓글 0

  • 로그인을 하시면 댓글을 등록할 수 있습니다.