Extensions

Extensions

Pour faciliter le test de nouvelles fonctionnalités et permettre aux développeurs d'ajouter des informations supplémentaires à un flux GTFS en temps réel, nous exploiterons la fonctionnalité d'extensions des tampons de protocole. 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 en temps réel, il doit contacter la liste de diffusion GTFS en temps réel et nous lui attribuerons 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'extensions attribués correspondent aux identifiants de tags disponibles dans l'espace de noms extension pour chaque définition de message GTFS en temps réel. À 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 en temps réel 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-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 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
1008 SEPTA - Southeastern Pennsylvania Transportation Authority Gregory Apessos https://github.com/septadev
1009 Swiftly mike@goswift.ly Discussion de groupe
1010 IBI Group Ritesh Warade Proposition GitHub concernant les nouveaux codes temporels dans les alertes de service