diff options
author | Christopher Speller <crspeller@gmail.com> | 2018-06-25 12:33:13 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-25 12:33:13 -0700 |
commit | 1e5c432e1029601a664454388ae366ef69618d62 (patch) | |
tree | cb9e8bfb66640ac3b29c934bb2c3202d25aeb368 /plugin/rpcplugin/http.go | |
parent | ecefa6cdd1e7376046bbec82c1b47f7756fea646 (diff) | |
download | chat-1e5c432e1029601a664454388ae366ef69618d62.tar.gz chat-1e5c432e1029601a664454388ae366ef69618d62.tar.bz2 chat-1e5c432e1029601a664454388ae366ef69618d62.zip |
MM-10702 Moving plugins to use hashicorp go-plugin. (#8978)
* Moving plugins to use hashicorp go-plugin.
* Tweaks from feedback.
Diffstat (limited to 'plugin/rpcplugin/http.go')
-rw-r--r-- | plugin/rpcplugin/http.go | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/plugin/rpcplugin/http.go b/plugin/rpcplugin/http.go deleted file mode 100644 index 72b1aa445..000000000 --- a/plugin/rpcplugin/http.go +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. -// See License.txt for license information. - -package rpcplugin - -import ( - "io" - "net/http" - "net/rpc" -) - -type LocalHTTPResponseWriter struct { - w http.ResponseWriter -} - -func (w *LocalHTTPResponseWriter) Header(args struct{}, reply *http.Header) error { - *reply = w.w.Header() - return nil -} - -func (w *LocalHTTPResponseWriter) Write(args []byte, reply *struct{}) error { - _, err := w.w.Write(args) - return err -} - -func (w *LocalHTTPResponseWriter) WriteHeader(args int, reply *struct{}) error { - w.w.WriteHeader(args) - return nil -} - -func (w *LocalHTTPResponseWriter) SyncHeader(args http.Header, reply *struct{}) error { - dest := w.w.Header() - for k := range dest { - if _, ok := args[k]; !ok { - delete(dest, k) - } - } - for k, v := range args { - dest[k] = v - } - return nil -} - -func ServeHTTPResponseWriter(w http.ResponseWriter, conn io.ReadWriteCloser) { - server := rpc.NewServer() - server.Register(&LocalHTTPResponseWriter{ - w: w, - }) - server.ServeConn(conn) -} - -type RemoteHTTPResponseWriter struct { - client *rpc.Client - header http.Header -} - -var _ http.ResponseWriter = (*RemoteHTTPResponseWriter)(nil) - -func (w *RemoteHTTPResponseWriter) Header() http.Header { - if w.header == nil { - w.client.Call("LocalHTTPResponseWriter.Header", struct{}{}, &w.header) - } - return w.header -} - -func (w *RemoteHTTPResponseWriter) Write(b []byte) (int, error) { - if err := w.client.Call("LocalHTTPResponseWriter.SyncHeader", w.header, nil); err != nil { - return 0, err - } - if err := w.client.Call("LocalHTTPResponseWriter.Write", b, nil); err != nil { - return 0, err - } - return len(b), nil -} - -func (w *RemoteHTTPResponseWriter) WriteHeader(statusCode int) { - if err := w.client.Call("LocalHTTPResponseWriter.SyncHeader", w.header, nil); err != nil { - return - } - w.client.Call("LocalHTTPResponseWriter.WriteHeader", statusCode, nil) -} - -func (h *RemoteHTTPResponseWriter) Close() error { - return h.client.Close() -} - -func ConnectHTTPResponseWriter(conn io.ReadWriteCloser) *RemoteHTTPResponseWriter { - return &RemoteHTTPResponseWriter{ - client: rpc.NewClient(conn), - } -} |