changed: server stopping, dial/listen to tcp dial/listen, json rpc encoding to msgpack, info getters for logging ; added keepalive setter to server, etc

This commit is contained in:
2022-07-26 14:26:40 +02:00
parent cddeee1412
commit f76cbc32aa
17 changed files with 268 additions and 97 deletions

View File

@@ -1,29 +1,46 @@
/*
*
* Copyright 2022 Oleg Borodin <borodin@unix7.org>
*
*/
package dsrpc
import (
"encoding/json"
"errors"
"fmt"
"io"
"net"
"sync"
encoder "github.com/vmihailenco/msgpack/v5"
)
func Put(address string, method string, reader io.Reader, size int64, param, result any, auth *Auth) error {
var err error
conn, err := net.Dial("tcp", address)
addr, err := net.ResolveTCPAddr("tcp", address)
if err != nil {
err = fmt.Errorf("unable to resolve adddress: %s", err)
return Err(err)
}
conn, err := net.DialTCP("tcp", nil, addr)
if err != nil {
return Err(err)
}
defer conn.Close()
//err = conn.SetKeepAlive(true)
//if err != nil {
// err = fmt.Errorf("unable to set keepalive: %s", err)
// return Err(err)
//}
//err = conn.SetKeepAlivePeriod(10 * time.Second)
//if err != nil {
// err = fmt.Errorf("unable to set keepalive period: %s", err)
// return Err(err)
//}
return ConnPut(conn, method, reader, size, param, result, auth)
}
@@ -78,12 +95,29 @@ func ConnPut(conn net.Conn, method string, reader io.Reader, size int64, param,
func Get(address string, method string, writer io.Writer, param, result any, auth *Auth) error {
var err error
conn, err := net.Dial("tcp", address)
addr, err := net.ResolveTCPAddr("tcp", address)
if err != nil {
err = fmt.Errorf("unable to resolve adddress: %s", err)
return Err(err)
}
conn, err := net.DialTCP("tcp", nil, addr)
if err != nil {
return Err(err)
}
defer conn.Close()
//err = conn.SetKeepAlive(true)
//if err != nil {
// err = fmt.Errorf("unable to set keepalive: %s", err)
// return Err(err)
//}
//err = conn.SetKeepAlivePeriod(10 * time.Second)
//if err != nil {
// err = fmt.Errorf("unable to set keepalive period: %s", err)
// return Err(err)
//}
return ConnGet(conn, method, writer, param, result, auth)
}
@@ -127,12 +161,29 @@ func ConnGet(conn net.Conn, method string, writer io.Writer, param, result any,
func Exec(address, method string, param any, result any, auth *Auth) error {
var err error
conn, err := net.Dial("tcp", address)
addr, err := net.ResolveTCPAddr("tcp", address)
if err != nil {
err = fmt.Errorf("unable to resolve adddress: %s", err)
return Err(err)
}
conn, err := net.DialTCP("tcp", nil, addr)
if err != nil {
return Err(err)
}
defer conn.Close()
//err = conn.SetKeepAlive(true)
//if err != nil {
// err = fmt.Errorf("unable to set keepalive: %s", err)
// return Err(err)
//}
//err = conn.SetKeepAlivePeriod(10 * time.Second)
//if err != nil {
// err = fmt.Errorf("unable to set keepalive period: %s", err)
// return Err(err)
//}
err = ConnExec(conn, method, param, result, auth)
if err != nil {
return Err(err)
@@ -273,7 +324,7 @@ func (context *Context) DownloadBin() error {
func (context *Context) BindResponse() error {
var err error
err = json.Unmarshal(context.resPacket.rcpPayload, context.resRPC)
err = encoder.Unmarshal(context.resPacket.rcpPayload, context.resRPC)
if err != nil {
return Err(err)
}