transport: make transport vtable more private
commite967ca38473a05abf3e8f7a025c6b9bee487aa4f
authorJonathan Tan <jonathantanmy@google.com>
Thu, 14 Dec 2017 21:44:45 +0000 (14 13:44 -0800)
committerJunio C Hamano <gitster@pobox.com>
Thu, 14 Dec 2017 22:28:04 +0000 (14 14:28 -0800)
tree1954c9a0a80d1f44f9e5d5c2a75d042f7591b99d
parent245abe34ac0622b349470b89d4b76a082a133cab
transport: make transport vtable more private

Move the definition of the transport-specific functions provided by
transports, whether declared in transport.c or transport-helper.c, into
an internal header. This means that transport-using code (as opposed to
transport-declaring code) can no longer access these functions (without
importing the internal header themselves), making it clear that they
should use the transport_*() functions instead, and also allowing the
interface between the transport mechanism and an individual transport to
independently evolve.

This is superficially a reversal of commit 824d5776c3f2 ("Refactor
struct transport_ops inlined into struct transport", 2007-09-19).
However, the scope of the involved variables was neither affected nor
discussed in that commit, and I think that the advantages in making
those functions more private outweigh the advantages described in that
commit's commit message. A minor additional point is that the code has
gotten more complicated since then, in that the function-pointer
variables are potentially mutated twice (once initially and once if
transport_take_over() is invoked), increasing the value of corralling
them into their own struct.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
transport-helper.c
transport-internal.h [new file with mode: 0644]
transport.c
transport.h