summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@edwardthomson.com>2014-12-10 11:30:28 -0500
committerEdward Thomson <ethomson@edwardthomson.com>2014-12-10 11:30:28 -0500
commitcd305c2f567678c96bccecab69f715b6063089bc (patch)
tree88ddd29dfe22c8242ef6daeabdf6588cc7ea9d66 /include
parent3b6a566867b3a62aeeed8320f17f1d125e1fe0d2 (diff)
parenta2fd56ab18cfe1a16372193e8ddfbbe6cadb5a78 (diff)
downloadlibgit2-cd305c2f567678c96bccecab69f715b6063089bc.tar.gz
Merge pull request #2678 from libgit2/cmn/io-stream
Introduce stackable IO streams
Diffstat (limited to 'include')
-rw-r--r--include/git2/sys/stream.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/include/git2/sys/stream.h b/include/git2/sys/stream.h
new file mode 100644
index 000000000..c249055c9
--- /dev/null
+++ b/include/git2/sys/stream.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+#ifndef INCLUDE_sys_git_stream_h__
+#define INCLUDE_sys_git_stream_h__
+
+#include "git2/common.h"
+#include "git2/types.h"
+
+GIT_BEGIN_DECL
+
+#define GIT_STREAM_VERSION 1
+
+/**
+ * Every stream must have this struct as its first element, so the
+ * API can talk to it. You'd define your stream as
+ *
+ * struct my_stream {
+ * git_stream parent;
+ * ...
+ * }
+ *
+ * and fill the functions
+ */
+typedef struct git_stream {
+ int version;
+
+ int encrypted;
+ int (*connect)(struct git_stream *);
+ int (*certificate)(git_cert **, struct git_stream *);
+ ssize_t (*read)(struct git_stream *, void *, size_t);
+ ssize_t (*write)(struct git_stream *, const char *, size_t, int);
+ int (*close)(struct git_stream *);
+ void (*free)(struct git_stream *);
+} git_stream;
+
+#endif