Commit 0ac2726f by Carlos Martín Nieto

Slim down git_transport

Remove the unused repo and private pointers and make the direction a
flag, as it can only have two states. Change the connect signature to
use an int instead of git_net_direction and remove that enum.

Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
parent 5da5321d
...@@ -13,10 +13,8 @@ ...@@ -13,10 +13,8 @@
* gets called. * gets called.
*/ */
enum git_net_direction { #define GIT_DIR_FETCH 0
INTENT_PUSH, #define GIT_DIR_PUSH 1
INTENT_PULL
};
/* /*
* This is what we give out on ->ls() * This is what we give out on ->ls()
......
...@@ -64,7 +64,7 @@ GIT_EXTERN(const git_refspec *) git_remote_fetchspec(struct git_remote *remote); ...@@ -64,7 +64,7 @@ GIT_EXTERN(const git_refspec *) git_remote_fetchspec(struct git_remote *remote);
* @param remote the remote to connect to * @param remote the remote to connect to
* @return GIT_SUCCESS or an error code * @return GIT_SUCCESS or an error code
*/ */
GIT_EXTERN(int) git_remote_connect(struct git_remote *remote, git_net_direction dir); GIT_EXTERN(int) git_remote_connect(struct git_remote *remote, int direction);
/** /**
* Get a list of refs at the remote * Get a list of refs at the remote
......
...@@ -45,7 +45,7 @@ GIT_BEGIN_DECL ...@@ -45,7 +45,7 @@ GIT_BEGIN_DECL
*/ */
GIT_EXTERN(int) git_transport_new(git_transport **transport, const char *url); GIT_EXTERN(int) git_transport_new(git_transport **transport, const char *url);
GIT_EXTERN(int) git_transport_connect(git_transport *transport, git_net_direction direction); GIT_EXTERN(int) git_transport_connect(git_transport *transport, int direction);
GIT_EXTERN(int) git_transport_ls(git_transport *transport, git_headarray *array); GIT_EXTERN(int) git_transport_ls(git_transport *transport, git_headarray *array);
GIT_EXTERN(int) git_transport_close(git_transport *transport); GIT_EXTERN(int) git_transport_close(git_transport *transport);
......
...@@ -172,7 +172,7 @@ const git_refspec *git_remote_pushspec(struct git_remote *remote) ...@@ -172,7 +172,7 @@ const git_refspec *git_remote_pushspec(struct git_remote *remote)
return &remote->push; return &remote->push;
} }
int git_remote_connect(git_remote *remote, git_net_direction dir) int git_remote_connect(git_remote *remote, int direction)
{ {
int error; int error;
git_transport *t; git_transport *t;
...@@ -181,7 +181,7 @@ int git_remote_connect(git_remote *remote, git_net_direction dir) ...@@ -181,7 +181,7 @@ int git_remote_connect(git_remote *remote, git_net_direction dir)
if (error < GIT_SUCCESS) if (error < GIT_SUCCESS)
return git__rethrow(error, "Failed to create transport"); return git__rethrow(error, "Failed to create transport");
error = git_transport_connect(t, dir); error = git_transport_connect(t, direction);
if (error < GIT_SUCCESS) { if (error < GIT_SUCCESS) {
error = git__rethrow(error, "Failed to connect the transport"); error = git__rethrow(error, "Failed to connect the transport");
goto cleanup; goto cleanup;
......
...@@ -70,9 +70,9 @@ int git_transport_new(git_transport **out, const char *url) ...@@ -70,9 +70,9 @@ int git_transport_new(git_transport **out, const char *url)
return GIT_SUCCESS; return GIT_SUCCESS;
} }
int git_transport_connect(git_transport *transport, git_net_direction dir) int git_transport_connect(git_transport *transport, int direction)
{ {
return transport->connect(transport, dir); return transport->connect(transport, direction);
} }
int git_transport_ls(git_transport *transport, git_headarray *array) int git_transport_ls(git_transport *transport, git_headarray *array)
......
...@@ -32,22 +32,14 @@ struct git_transport { ...@@ -32,22 +32,14 @@ struct git_transport {
*/ */
char *url; char *url;
/** /**
* Where each transport stores its private/instance data
*/
void *private;
/**
* The repo we want to act on
*/
git_repository *repo;
/**
* Whether we want to push or fetch * Whether we want to push or fetch
*/ */
git_net_direction direction; int direction : 1; /* 0 fetch, 1 push */
int connected : 1; int connected : 1;
/** /**
* Connect and store the remote heads * Connect and store the remote heads
*/ */
int (*connect)(struct git_transport *transport, git_net_direction intent); int (*connect)(struct git_transport *transport, int dir);
/** /**
* Give a list of references, useful for ls-remote * Give a list of references, useful for ls-remote
*/ */
......
...@@ -230,14 +230,15 @@ static int store_refs(transport_git *t) ...@@ -230,14 +230,15 @@ static int store_refs(transport_git *t)
* Since this is a network connection, we need to parse and store the * Since this is a network connection, we need to parse and store the
* pkt-lines at this stage and keep them there. * pkt-lines at this stage and keep them there.
*/ */
static int git_connect(git_transport *transport, git_net_direction direction) static int git_connect(git_transport *transport, int direction)
{ {
transport_git *t = (transport_git *) transport; transport_git *t = (transport_git *) transport;
int error = GIT_SUCCESS; int error = GIT_SUCCESS;
if (direction == INTENT_PUSH) if (direction == GIT_DIR_PUSH)
return git__throw(GIT_EINVALIDARGS, "Pushing is not supported with the git protocol"); return git__throw(GIT_EINVALIDARGS, "Pushing is not supported with the git protocol");
t->parent.direction = direction;
error = git_vector_init(&t->refs, 16, NULL); error = git_vector_init(&t->refs, 16, NULL);
if (error < GIT_SUCCESS) if (error < GIT_SUCCESS)
goto cleanup; goto cleanup;
......
...@@ -26,7 +26,7 @@ static int cmp_refs(const void *a, const void *b) ...@@ -26,7 +26,7 @@ static int cmp_refs(const void *a, const void *b)
* Try to open the url as a git directory. The direction doesn't * Try to open the url as a git directory. The direction doesn't
* matter in this case because we're calulating the heads ourselves. * matter in this case because we're calulating the heads ourselves.
*/ */
static int local_connect(git_transport *transport, git_net_direction GIT_UNUSED(dir)) static int local_connect(git_transport *transport, int GIT_UNUSED(direction))
{ {
git_repository *repo; git_repository *repo;
int error; int error;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment