| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- // package client_serv -- клиент подключения к бото-серверу
- package client_serv
- import (
- "fmt"
- "log"
- "net/rpc"
- "wartank/server/serv_rpc"
- )
- // ClientServ -- клиент подключения к бото-серверу
- type ClientServ struct {
- client *rpc.Client
- url string
- login string // Логин на бото-ферму
- pass string // Логин на бото-ферму
- }
- // NewClientServ -- возвращает новый клиент к бото-серверу
- func NewClientServ() *ClientServ {
- sf := &ClientServ{}
- return sf
- }
- // Connect -- подключает клиента к бото-серверу
- func (sf *ClientServ) Connect(url_ string) error {
- sf.url = url_
- var err error
- sf.client, err = rpc.DialHTTP("tcp", url_)
- if err != nil {
- return fmt.Errorf("ClientSrv.Connect(): in connect to bot-server, err=\n\t%w", err)
- }
- req := &serv_rpc.EchoReq{}
- resp := &serv_rpc.EchoResp{}
- err = sf.client.Call("ServRpc.Echo", req, &resp)
- if err != nil {
- return fmt.Errorf("ClientServ.Connect(): in make Echo-request to bot-server, err=\n\t%w", err)
- }
- if resp.Result != "WarTank!" {
- return fmt.Errorf("ClientServ.Connect(): bad response on Echo request(%v!='WarTank!')", resp.Result)
- }
- return nil
- }
- // Login -- логинится на сервер
- func (sf *ClientServ) Login(login, pass string) error {
- log.Println("ClientServ.Login()")
- req := &serv_rpc.LoginReq{
- Login: login,
- Pass: pass,
- }
- resp := &serv_rpc.LoginResp{}
- err := sf.client.Call("ServRpc.Login", req, resp)
- if err != nil {
- return fmt.Errorf("ClientServ.Login(): err=\n\t%w", err)
- }
- if resp.Result != "ok" {
- return fmt.Errorf("ClientServ.Login(): resp=%q", resp.Result)
- }
- sf.login = login
- sf.pass = pass
- return nil
- }
- // AddBot -- добавляет бота на сервер
- func (sf *ClientServ) AddBot(login, pass string) error {
- log.Println("ClientServ.AddBot()")
- req := &serv_rpc.AddBotReq{
- Login: sf.login,
- Pass: sf.pass,
- BotLogin: login,
- BotPass: pass,
- }
- resp := &serv_rpc.AddBotResp{}
- err := sf.client.Call("ServRpc.AddBot", req, resp)
- if err != nil {
- return fmt.Errorf("ClientServ.AddBot(): err=\n\t%w", err)
- }
- if resp.Result != "ok" {
- return fmt.Errorf("ClientServ.AddBot(): resp=%q", resp.Result)
- }
- return nil
- }
|