나는 학생이며 현재 DDS를 통해 파일을 전송하는 방법을 연구 중이다. 우분투 터미널에서 dds 버전 6.3을 실행하고 성공적으로 게시 및 가입했습니다. 문제는 내가 메시지를 편집하고 싶습니다. 마찬가지로 메시지의 파일을 전송하려고합니다. 저를 도울 수있는 사람이 있습니까? 그것은 크게 감사 할 것입니다DDS 데이터 배포 서비스 opensplice
0
A
답변
0
이 답변은 opensplice 특정 아니, 그것은 일반적인 DDS입니다.
- "메시지"를 편집하는 개념은 없습니다. 메시지가 없습니다 (이것은 DDS 개념/용어 공간에 있음). "보낸 정보 패킷"은 주제에 있으며 이 키순 주제 인 경우 해당 항목의 인스턴스 또는 해당 항목의 인스턴스 샘플 중 하나입니다.
메시지를 보내지 않고 인스턴스를 게시하고 있습니다. 인스턴스를 편집하려면 인스턴스를 편집하고 다시 게시하십시오. 이 다시 게시 된 인스턴스는 원래 게시자 엔티티에서 가져온 것일 수도 있고, 수신 한 구독자에서 가져온 것일 수도 있고 편집 한 다음 다시 게시 한 것일 수도 있습니다.
- 파일을 전송하려면 파일 전송 프로그램 (ftp, tftp, sftp 등)을 사용하십시오. 시스템 A는 시스템 B가 유지 보수하는 파일을 필요로합니다. 시스템 A는 요청을 발행하고 시스템 B는 파일의 SFTP 전송을 설정하고 실행 한 다음 '작업 완료'인스턴스를 게시합니다.
의사 IDL :
enum ObjectiveState {
OS_Desire, // "I need this"
OS_Can, // "I am able to supply this"
OS_Can_Not, // "I am not able to supply this"
OS_In_Process, // "I am doing this"
OS_Complete, // "I did this"
OS_Failed, // "Tried, but unable to complete, try again maybe?"
OS_PermanentFail // "Tried, but can't complete."
};
struct FileTxReq {
long long reqid; //@key
DestinationNode dest; // idl not supplied, some GUID thing
string<256> sourceUri;
string<256> destUri;
ObjectiveState state;
};
시스템 A는 다음 FileRequestTopic에 샘플을 게시 할 것입니다 :이 파일 저장소를 가지고 있기 때문에
reqid: 0x1234
dest: {systemA}
sourceUri: "/store/publicfiles/theImageFile.jpg"
destUri: "/Users/me/drop/theImageFile.jpg"
state: OS_Desire
시스템 B는 FileRequestTopic에 가입 할 것입니다. 그것은을 찾습니다 요청 된 URI를 발견하고,
reqid: 0x1234 (note this is the same reqid as received)
dest: {systemA} (note this is also copied from the received instance)
sourceUri: "/store/publicfiles/theImageFile.jpg" (also the same)
destUri: "/Users/me/drop/theImageFile.jpg" (also the same)
state: OS_Can
시스템 B는 SFTP 전송을 시작하고 위와 같이 발행하지만, 상태 지금 "OS_In_Process"에 게시합니다. sftp가 완료되면 "OS_Complete"(또는 두 개의 "OS_Failed"상태 중 하나) 샘플을 게시합니다.
이 질문은 1 년 전의 질문이지만, 사람들이 DDS를 사용하여 수행 할 수있는 방법이나 DDS 개념 공간에서 어떻게 보는지에 대해 머리를 맞대는 것은 여전히 도움이 될 수 있습니다.