Extensions

Extensions

Pour faciliter le test de nouvelles fonctionnalités et permettre aux développeurs d'ajouter des informations supplémentaires à un flux GTFS-realtime, nous exploiterons la fonctionnalité d'extensions de Protocol Buffers. Les extensions nous permettent de définir un espace de noms dans un message de tampon de protocole où les développeurs tiers peuvent définir des champs supplémentaires sans avoir besoin de modifier la définition proto d'origine.

Lorsqu'un développeur souhaite une extension de la spécification GTFS Realtime, il doit contacter la liste de diffusion GTFS Realtime et nous lui attribuons le prochain identifiant d'extension disponible. Cet identifiant est sélectionné de manière incrémentale à partir d'une liste de nombres commençant par 1000 et consignée dans la rubrique du registre des extensions ci-dessous.

Ces identifiants d'extension attribués correspondent aux identifiants de tags disponibles dans l'espace de noms "extension" pour chaque définition de message GTFS-realtime. À partir du moment où un ID d'extension est attribué au développeur, celui-ci utilisera cet ID lors de l'extension de tous les messages GTFS Realtime. Même si le développeur ne prévoit d'étendre qu'un seul message, l'ID d'extension attribué sera réservé pour TOUS les messages.

Au lieu d'ajouter un seul champ comme "string" ou "int32" avec son ID d'extension, il est préférable pour le développeur de définir un nouveau message tel que "MyTripDescriptorExtension", d'étendre le message GTFS Realtime sous-jacent avec le nouveau, puis d'y placer tous les nouveaux champs. Pouvoir gérer les champs dans votre message d'extension comme vous le souhaitez, sans avoir besoin de réserver un nouvel ID d'extension de la liste principale, est une propriété intéressante.

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

Registre des extensions

ID d'extension Développeur Contact Détails
1000 OneBusAway onebusaway-développeurs 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 Mises à jour en temps réel des transports en commun de Google Maps
1003 OVapi gtfs-rt sur 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 Discussion de groupe