본문 바로가기

전체 글

(245)
Rhapsody :: 하나 이상의 동일 인터페이스와 연결되었을 경우 Rhapsody에서 같은 인터페이스(Provided)에 대한 서비스를 여러개의 클래스에서 제공하도록 설계를 했다고 생각해보자. 아래의 그림과 같은 상황을 가정해보자. Producer는 ITestMsgHandler를 Required로 가지고 있으며, 해당 서비스를 제공(Provided)하는 세개의 객체와 연결이 되어 있다. ITestMsgHandler의 인터페이스의 모습은 아래와 같다. Producer에서 evNewMsg 이벤트를 발생시켰을때, 과연 어느 객체가 받아서 처리를 할 것인가? 객체 세개다 처리? 어떠한 처리도 안함? 정답은 Structure Diagram에서 가장 나중에 링크로 연결된 객체가 해당 객체를 수신하여 처리한다. :_) Builder내부의 initRelations 코드를 보면 왜 이..
VxWorks6.6에서 RTI DDS 예제 프로그램 빌드 1. 예제 파일 작성 rtiddsgen -language C++ -example ppc604Vx6.6gcc4.1.2 HelloWorld.idl -ppDisable 생성된 예제파일들을 .h와 .cxx 파일들을 DKM 프로젝트로 생성된 폴더에 복사를 하여 사용한다. 2. DKM 프로젝트 생성 및 환경설정 2.1 VxWorks Image Project 생성하여 다음의 설정을 활성화한다. Components C++ components >> standard library >> C++ compiler support routines >> C++ core runtime >> run static initializers 2.2 Downloadable Kernel Module 프로젝트를 생성하여, Build Properti..
Rhapsody :: 라이센스 서버 지정 TELELOGIC_LICENSE_FILE 의 환경변수를 아래와 같이 변경한다. 19353@SERVER_IP 라이센스파일의 위치를 바로 지정했을시 오류가 발생했으나, 위와 같이 라이센스 서버를 지정하니 잘 동작하였다. 나중에 또 헤딩할까봐 적어놓는다. =_=;
Rhapsody :: Visibility 속성(public/protected/private)에 대하여 클래스들의 Attribute에 보면 Visibility(public/protected/private)란 항목이 있다. 개발자로 하여금 굉장히 착각하기 쉬운 요소가 여기에 숨에 있는데, 이것은 Attribute 자체의 VIsibility를 의미하는 것이 아니라 해당 속성의 Accessor와 Mutator의 함수(Operation)의 Visibility를 의미하고 있다. 아래의 그림과 같이 m_pMsgQPool의 Visibility는 Public으로 설정되어 있다. 코드 제너레이션을 하여 결과물을 확인하여 보자. 소스를 확인해 보면, m_pMsgQPool 자체는 Protected로 선언되어 있는 것을 확인할 수 있다. 그렇다면, 자동생성되는 Accessor와 Mutator의 속성을 확인해 보자. Public..
Rhapsody :: Thread 관련 설정 목차 Thread 이름 설정 Thread 스택 크기(StackSize) 설정 Thread 우선순위(Priority) 설정 Thread 이름 설정# Active로 설정된 클래스를 선택하여 Feature를 연다. 아래와 같이 Property Filter 기능을 활용하여 ThreadName 을 검색한다. CG >> Class >> ActiveThreadName의 Property를 "쓰레드 이름" 과 같이 하면, 해당 쓰레드 이름을 지정할 수 있다. (따옴표를 꼭! 넣자.) 아래의 그림과 같이 VxWorks Workbench에서 설정한 이름으로 동작하는 쓰레드들을 확인할 수 있다. Thread 스택 크기(StackSize) 설정# 쓰레드를 사용할 시 중요한 설정사항은 바로 쓰레드에 할당된 스택의 크기이다. Vx..
Rhapsody :: 패키지 이름과 클래스 이름을 동일하게 쓴다면,, 파일이 별도로 생기는게 아니라 하나만 생긴다?? 무슨 말인고 하니, Rhapsody에서 패키지를 생성하면 패키지 이름으로된 헤더 파일과 소스 파일이 생성이 되며 패키지 헤더 파일을 하위에서 모두 받도록 되어있다. Consumer패키지 밑에 Consumer 클래스를 만들었다고 치면, Consumer.h Consumer.cpp가 하나 밖에 안생기므로 이름을 달리가져가야 한다. ConsumerPkg -> Consumer 클래스 라면 ConsumerPkg.h, ConsumerPkg.cpp, Consumer.h, Consumer.cpp 파일 네개가 정상적으로 생기게 된다. 물론 Properties를 조작하여 상위 패키지 헤더를 상속받지 않도록 설정할 수도 있다.
초간단 dissector 등록을 위한 과정 아래의 레퍼런스를 참고하였다. http://www.wireshark.org/docs/wsdg_html_chunked/ChDissectAdd.html dissector를 built-in으로 구성할지 plugin으로 구성할지 선택을 할 수가 있으나, 이곳에서는 plugin형식으로 구성하는 방법에 대하여 알아보도록 한다. Example 1) Dissector 초기화 #ifdef HAVE_CONFIG_H # include "config.h" #endif #include #define FOO_PORT 1234 static int proto_foo = -1; void proto_register_foo(void) { proto_foo = proto_register_protocol ( "FOO Protocol", /*..
python에서 struct 구현 http://docs.python.org/library/struct.html 오,, 네트워크 프로그램에서 매우 유용하게 사용할 수 있는 모듈. @_@ >>> struct.pack('>IB6s', len("Hello"), 0, "Hello") '\x00\x00\x00\x05\x00Hello\x00' >>>