확장 프로그램

확장 프로그램

새로운 기능을 손쉽게 테스트하고 개발자가 GTFS Realtime 피드에 정보를 추가할 수 있도록 하기 위해 Google에서는 프로토콜 버퍼의 확장 프로그램 기능을 이용할 예정입니다. 확장 프로그램을 사용하면 서드 파티 개발자가 원본 프로토 정의를 수정할 필요 없이 추가 입력란을 정의할 수 있는 프로토콜 버퍼 메시지에서 네임스페이스를 정의할 수 있습니다.

GTFS Realtime 사양을 확장하고자 하는 개발자는 GTFS Realtime 메일링 리스트의 이메일 주소로 연락해야 합니다. 그러면 다음으로 사용 가능한 확장 프로그램 ID가 개발자에게 할당됩니다. 아래의 확장 프로그램 등록처 섹션에 나온 1,000 이상의 숫자가 오름차순에 따라 확장 프로그램 ID로 사용됩니다.

이렇게 할당된 확장 프로그램 ID는 각 GTFS Realtime 메시지 정의에 대한 extension 네임스페이스에서 사용 가능한 태그 ID에 해당합니다. 이제 개발자는 할당된 확장 프로그램 ID를 가지고 있기 때문에 GTFS Realtime 메시지를 확장할 때 이 ID를 사용할 수 있습니다. 개발자가 단일 메시지만 확장하려는 경우에도 모든 메시지에 대해 할당된 확장 프로그램 ID가 예약됩니다.

확장 프로그램 ID로 string 또는 int32와 같은 단일 입력란을 추가하는 대신 사양을 확장하는 개발자는 MyTripDescriptorExtension과 같은 새로운 메시지를 정의하고 기본 GTFS Realtime 메시지를 새로운 메시지로 확장한 다음 모든 새 입력란을 추가하는 것이 좋습니다. 이는 기본 목록에서 새로운 확장 프로그램 ID를 예약하지 않고도 원하는 방식으로 확장 프로그램 메시지 내에서 입력란을 관리할 수 있는 속성을 가집니다.

message MyTripDescriptorExtension {
  optional string some_string = 1;
  optional bool some_bool = 2;
  ...
}
extend transit_realtime.TripDescriptor {
  optional MyTripDescriptorExtension my_trip_descriptor = YOUR_EXTENSION_ID;
}

확장 레지스트리

확장 프로그램 ID 개발자 연락처 세부정보
1000 OneBusAway onebusaway-developers https://github.com/OneBusAway/onebusaway/wiki/GTFS-Realtime-Resources
1001 New York City MTA mtadeveloperresources http://mta.info/developers/
1002 Google transit-realtime-partner-support@google.com Google 지도 실시간 대중교통 업데이트
1003 OVapi gtfs-rt at ovapi.nl http://gtfs.ovapi.nl
1004 Metra William Ashbaugh w.l.ashbaugh@gmail.com
1005 Metro-North Railroad John Larsen
1006 realCity David Varga http://realcity.io
1007 NSW TrainLink Gregory Nicholls 그룹 토론
1008 SEPTA: 펜실베니아 남동부 교통국 Gregory Apessos https://github.com/septadev
1009 Swiftly mike@goswift.ly 그룹 토론
1010 IBI Group Ritesh Warade 서비스 알림의 새로운 타임스탬프에 관한 GitHub 제안