diff options
author | JoramWilander <jwawilander@gmail.com> | 2018-07-10 15:01:43 -0400 |
---|---|---|
committer | JoramWilander <jwawilander@gmail.com> | 2018-07-10 15:01:43 -0400 |
commit | 6c7dc2d29ccac5f9925402f6be1a4c2a3c46c005 (patch) | |
tree | 5564a47257bf6e85aaef711980c5b0fcb4d07dcc /plugin/rpcplugin/http.go | |
parent | c042ffa460296587579aff54b157a5109e022f7e (diff) | |
parent | 1e1a5e5e85240f25c4faddcb24c5a29a915fe6e4 (diff) | |
download | chat-6c7dc2d29ccac5f9925402f6be1a4c2a3c46c005.tar.gz chat-6c7dc2d29ccac5f9925402f6be1a4c2a3c46c005.tar.bz2 chat-6c7dc2d29ccac5f9925402f6be1a4c2a3c46c005.zip |
Merge branch 'plugins-2'
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), - } -} |