diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e69de29 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d937748 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM golang:1.12 + +ENV GO111MODULE on + +COPY . /go/pubsub/ + +WORKDIR /go/pubsub + +RUN go build -buildmode=c-shared -o pubsub.so . diff --git a/bin/darwin_amd64/pubsub.h b/bin/darwin_amd64/pubsub.h new file mode 100644 index 0000000..9b22236 --- /dev/null +++ b/bin/darwin_amd64/pubsub.h @@ -0,0 +1,82 @@ +/* Code generated by cmd/cgo; DO NOT EDIT. */ + +/* package github.com/gjbae1212/fluent-bit-pubsub */ + + +#line 1 "cgo-builtin-export-prolog" + +#include /* for ptrdiff_t below */ + +#ifndef GO_CGO_EXPORT_PROLOGUE_H +#define GO_CGO_EXPORT_PROLOGUE_H + +#ifndef GO_CGO_GOSTRING_TYPEDEF +typedef struct { const char *p; ptrdiff_t n; } _GoString_; +#endif + +#endif + +/* Start of preamble from import "C" comments. */ + + + + +/* End of preamble from import "C" comments. */ + + +/* Start of boilerplate cgo prologue. */ +#line 1 "cgo-gcc-export-header-prolog" + +#ifndef GO_CGO_PROLOGUE_H +#define GO_CGO_PROLOGUE_H + +typedef signed char GoInt8; +typedef unsigned char GoUint8; +typedef short GoInt16; +typedef unsigned short GoUint16; +typedef int GoInt32; +typedef unsigned int GoUint32; +typedef long long GoInt64; +typedef unsigned long long GoUint64; +typedef GoInt64 GoInt; +typedef GoUint64 GoUint; +typedef __SIZE_TYPE__ GoUintptr; +typedef float GoFloat32; +typedef double GoFloat64; +typedef float _Complex GoComplex64; +typedef double _Complex GoComplex128; + +/* + static assertion to make sure the file is being used on architecture + at least with matching size of GoInt. +*/ +typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1]; + +#ifndef GO_CGO_GOSTRING_TYPEDEF +typedef _GoString_ GoString; +#endif +typedef void *GoMap; +typedef void *GoChan; +typedef struct { void *t; void *v; } GoInterface; +typedef struct { void *data; GoInt len; GoInt cap; } GoSlice; + +#endif + +/* End of boilerplate cgo prologue. */ + +#ifdef __cplusplus +extern "C" { +#endif + + +extern GoInt FLBPluginRegister(void* p0); + +extern GoInt FLBPluginInit(void* p0); + +extern GoInt FLBPluginFlush(void* p0, int p1, char* p2); + +extern GoInt FLBPluginExit(); + +#ifdef __cplusplus +} +#endif diff --git a/bin/darwin_amd64/pubsub.so b/bin/darwin_amd64/pubsub.so new file mode 100644 index 0000000..5170bf6 Binary files /dev/null and b/bin/darwin_amd64/pubsub.so differ diff --git a/bin/linux_amd64/pubsub.h b/bin/linux_amd64/pubsub.h new file mode 100644 index 0000000..9b22236 --- /dev/null +++ b/bin/linux_amd64/pubsub.h @@ -0,0 +1,82 @@ +/* Code generated by cmd/cgo; DO NOT EDIT. */ + +/* package github.com/gjbae1212/fluent-bit-pubsub */ + + +#line 1 "cgo-builtin-export-prolog" + +#include /* for ptrdiff_t below */ + +#ifndef GO_CGO_EXPORT_PROLOGUE_H +#define GO_CGO_EXPORT_PROLOGUE_H + +#ifndef GO_CGO_GOSTRING_TYPEDEF +typedef struct { const char *p; ptrdiff_t n; } _GoString_; +#endif + +#endif + +/* Start of preamble from import "C" comments. */ + + + + +/* End of preamble from import "C" comments. */ + + +/* Start of boilerplate cgo prologue. */ +#line 1 "cgo-gcc-export-header-prolog" + +#ifndef GO_CGO_PROLOGUE_H +#define GO_CGO_PROLOGUE_H + +typedef signed char GoInt8; +typedef unsigned char GoUint8; +typedef short GoInt16; +typedef unsigned short GoUint16; +typedef int GoInt32; +typedef unsigned int GoUint32; +typedef long long GoInt64; +typedef unsigned long long GoUint64; +typedef GoInt64 GoInt; +typedef GoUint64 GoUint; +typedef __SIZE_TYPE__ GoUintptr; +typedef float GoFloat32; +typedef double GoFloat64; +typedef float _Complex GoComplex64; +typedef double _Complex GoComplex128; + +/* + static assertion to make sure the file is being used on architecture + at least with matching size of GoInt. +*/ +typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1]; + +#ifndef GO_CGO_GOSTRING_TYPEDEF +typedef _GoString_ GoString; +#endif +typedef void *GoMap; +typedef void *GoChan; +typedef struct { void *t; void *v; } GoInterface; +typedef struct { void *data; GoInt len; GoInt cap; } GoSlice; + +#endif + +/* End of boilerplate cgo prologue. */ + +#ifdef __cplusplus +extern "C" { +#endif + + +extern GoInt FLBPluginRegister(void* p0); + +extern GoInt FLBPluginInit(void* p0); + +extern GoInt FLBPluginFlush(void* p0, int p1, char* p2); + +extern GoInt FLBPluginExit(); + +#ifdef __cplusplus +} +#endif diff --git a/bin/linux_amd64/pubsub.so b/bin/linux_amd64/pubsub.so new file mode 100644 index 0000000..2858b14 Binary files /dev/null and b/bin/linux_amd64/pubsub.so differ diff --git a/make.sh b/make.sh new file mode 100644 index 0000000..e5454c1 --- /dev/null +++ b/make.sh @@ -0,0 +1,37 @@ +#!/bin/bash +set -e -o pipefail +trap '[ "$?" -eq 0 ] || echo "Error Line:<$LINENO> Error Function:<${FUNCNAME}>"' EXIT + +export GO111MODULE=on +cd `dirname $0` +CURRENT=`pwd` + +function build +{ + go build -buildmode=c-shared -o pubsub.so . + local osname=`go env | grep GOOS | awk -F "=" '{print $2}' | sed 's/\"//g'` + local archname=`go env | grep GOARCH | awk -F "=" '{print $2}' | sed 's/\"//g'` + mkdir $CURRENT/bin/${osname}_${archname} || true + mv pubsub.so pubsub.h $CURRENT/bin/${osname}_${archname}/ +} + +function build_linux +{ + local plugin=`docker ps | grep pubsub | wc -l` + if [ $plugin -eq 1 ] + then + docker kill pubsub + fi + local osname=linux + local archname=amd64 + mkdir $CURRENT/bin/${osname}_${archname} || true + docker build --no-cache -t pubsub:latest -f Dockerfile . + docker run -it --rm -d --name pubsub pubsub:latest /bin/bash + docker cp pubsub:/go/pubsub/pubsub.so $CURRENT/bin/${osname}_${archname}/ + docker cp pubsub:/go/pubsub/pubsub.h $CURRENT/bin/${osname}_${archname}/ + docker kill pubsub +} + +CMD=$1 +shift +$CMD $*