From efec800478214f3a412f879d2b51c2968515995d Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期六, 25 十一月 2023 17:04:25 +0800
Subject: [PATCH] plc断开连接时获取工序最后一次报工数量作为加工数
---
pkg/etcd/client.go | 369 ++++++++++++++++++++++++++--------------------------
1 files changed, 185 insertions(+), 184 deletions(-)
diff --git a/pkg/etcd/client.go b/pkg/etcd/client.go
index 25f5dce..c999c34 100644
--- a/pkg/etcd/client.go
+++ b/pkg/etcd/client.go
@@ -1,195 +1,196 @@
package etcd
-import (
- "apsClient/conf"
- "context"
- "fmt"
- "go.etcd.io/etcd/client/pkg/v3/transport"
- "log"
- "net"
- "time"
-
- clientv3 "go.etcd.io/etcd/client/v3"
-)
-
-// ServiceRegister 鍒涘缓绉熺害娉ㄥ唽鏈嶅姟
-type ServiceRegister struct {
- cli *clientv3.Client // etcd v3 client
- leaseID clientv3.LeaseID // 绉熺害ID
- keepAliveChan <-chan *clientv3.LeaseKeepAliveResponse // 绉熺害keepalieve鐩稿簲chan
- key string // key
- val string // value
-}
-
-// NewServiceRegister 鏂板缓娉ㄥ唽鏈嶅姟
-func NewServiceRegister(endpoints []string, key, val string, lease int64, dailTimeout int) error {
-
- // todo 璇佷功
- tlsInfo := transport.TLSInfo{
- TrustedCAFile: conf.Conf.Etcd.Tls.CaFile,
- CertFile: conf.Conf.Etcd.Tls.CertFile,
- KeyFile: conf.Conf.Etcd.Tls.KeyFile,
- }
-
- tlsConfig, err := tlsInfo.ClientConfig()
-
- if err != nil {
- fmt.Printf("tlsconfig failed, err:%v\n", err)
- }
-
- cli, err := clientv3.New(clientv3.Config{
- Endpoints: endpoints,
- DialTimeout: time.Duration(dailTimeout) * time.Second,
- TLS: tlsConfig,
- })
-
- defer func(cli *clientv3.Client) {
- err := cli.Close()
- if err != nil {
-
- }
- }(cli)
- log.Printf("44444444444444444 %v", endpoints)
-
- if err != nil {
- return err
- }
-
- // put
- ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
- _, err = cli.Put(ctx, key, val)
- cancel()
- if err != nil {
- fmt.Printf("put to etcd failed, err:%v\n", err)
- return err
- }
-
- //ser := &ServiceRegister{
- // cli: cli,
- // key: key,
- // val: val,
- //}
- //
- //log.Printf("55555555555555555555555 %v", ser)
- //鐢宠绉熺害璁剧疆鏃堕棿keepalive
- //if err := ser.putKeyWithLease(lease); err != nil {
- // return nil, err
- //}
-
- return err
-}
-
-// 璁剧疆绉熺害
-func (s *ServiceRegister) putKeyWithLease(lease int64) error {
- // 鍒涘缓涓�涓柊鐨勭绾︼紝骞惰缃畉tl鏃堕棿
- resp, err := s.cli.Grant(context.Background(), lease)
- if err != nil {
- return err
- }
- log.Printf("666666666666666 %v", resp)
-
- // 娉ㄥ唽鏈嶅姟骞剁粦瀹氱绾�
- _, err = s.cli.Put(context.Background(), s.key, s.val, clientv3.WithLease(resp.ID))
- if err != nil {
- return err
- }
-
- // 璁剧疆缁 瀹氭湡鍙戦�侀渶姹傝姹�
- // KeepAlive浣跨粰瀹氱殑绉熺害姘歌繙鏈夋晥銆� 濡傛灉鍙戝竷鍒伴�氶亾鐨刱eepalive鍝嶅簲娌℃湁绔嬪嵆琚娇鐢紝
- // 鍒欑绾﹀鎴风灏嗚嚦灏戞瘡绉掗挓缁х画鍚慹tcd鏈嶅姟鍣ㄥ彂閫佷繚鎸佹椿鍔ㄨ姹傦紝鐩村埌鑾峰彇鏈�鏂扮殑鍝嶅簲涓烘銆�
- // etcd client浼氳嚜鍔ㄥ彂閫乼tl鍒癳tcd server锛屼粠鑰屼繚璇佽绉熺害涓�鐩存湁鏁�
- leaseRespChan, err := s.cli.KeepAlive(context.Background(), resp.ID)
- if err != nil {
- return err
- }
- log.Printf("777777777777777777 %v", leaseRespChan)
-
- s.leaseID = resp.ID
- s.keepAliveChan = leaseRespChan
-
- return nil
-}
-
-// ListenLeaseRespChan 鐩戝惉 缁鎯呭喌
-func (s *ServiceRegister) ListenLeaseRespChan() {
- for _ = range s.keepAliveChan {
- }
-
- //for leaseKeepResp := range s.keepAliveChan {
- // fmt.Println("缁害鎴愬姛", leaseKeepResp)
- //}
-
- //fmt.Println("鍏抽棴缁")
-}
-
-// Close 娉ㄩ攢鏈嶅姟
-func (s *ServiceRegister) Close() error {
- // 鎾ら攢绉熺害
- if _, err := s.cli.Revoke(context.Background(), s.leaseID); err != nil {
- return err
- }
-
- //fmt.Println("鎾ら攢绉熺害")
- return s.cli.Close()
-}
-
-// GetServeAddr 鑾峰彇鏈満鍦板潃
-func GetServeAddr(addr string) (string, error) {
- conn, err := net.Dial("udp", addr)
- if err != nil {
- return "", err
- }
-
- conn.Close()
-
- localAddr := conn.LocalAddr().(*net.UDPAddr)
- //ip := strings.Split(localAddr.String(), ":")[0]
-
- fmt.Println("++++++++ ip: ", localAddr.IP.String())
- return localAddr.IP.String(), nil
-}
-
-func SetEtcdData(key string, value string) {
- cli, err := clientv3.New(clientv3.Config{
- Endpoints: []string{"192.168.20.119:2379"},
- DialTimeout: 5 * time.Second,
- })
- if err != nil {
- // handle error!
- fmt.Printf("connect to etcd failed, err:%v\n", err)
- return
- }
- fmt.Println("connect to etcd success")
- defer cli.Close()
- // put
- ctx, cancel := context.WithTimeout(context.Background(), time.Second)
- _, err = cli.Put(ctx, key, value)
- cancel()
- if err != nil {
- fmt.Printf("put to etcd failed, err:%v\n", err)
- return
- }
-}
-
-//func GetETCDLeaderEndpoint() (string, error) {
-// // 鑾峰彇kubeconfig閰嶇疆鏂囦欢璺緞
-// clientset, err := util.GetClient()
+//
+//import (
+// "apsClient/conf"
+// "context"
+// "fmt"
+// "go.etcd.io/etcd/client/pkg/v3/transport"
+// "log"
+// "net"
+// "time"
+//
+// clientv3 "go.etcd.io/etcd/client/v3"
+//)
+//
+//// ServiceRegister 鍒涘缓绉熺害娉ㄥ唽鏈嶅姟
+//type ServiceRegister struct {
+// cli *clientv3.Client // etcd v3 client
+// leaseID clientv3.LeaseID // 绉熺害ID
+// keepAliveChan <-chan *clientv3.LeaseKeepAliveResponse // 绉熺害keepalieve鐩稿簲chan
+// key string // key
+// val string // value
+//}
+//
+//// NewServiceRegister 鏂板缓娉ㄥ唽鏈嶅姟
+//func NewServiceRegister(endpoints []string, key, val string, lease int64, dailTimeout int) error {
+//
+// // todo 璇佷功
+// tlsInfo := transport.TLSInfo{
+// TrustedCAFile: conf.Conf.Etcd.Tls.CaFile,
+// CertFile: conf.Conf.Etcd.Tls.CertFile,
+// KeyFile: conf.Conf.Etcd.Tls.KeyFile,
+// }
+//
+// tlsConfig, err := tlsInfo.ClientConfig()
+//
+// if err != nil {
+// fmt.Printf("tlsconfig failed, err:%v\n", err)
+// }
+//
+// cli, err := clientv3.New(clientv3.Config{
+// Endpoints: endpoints,
+// DialTimeout: time.Duration(dailTimeout) * time.Second,
+// TLS: tlsConfig,
+// })
+//
+// defer func(cli *clientv3.Client) {
+// err := cli.Close()
+// if err != nil {
+//
+// }
+// }(cli)
+// log.Printf("44444444444444444 %v", endpoints)
+//
+// if err != nil {
+// return err
+// }
+//
+// // put
+// ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
+// _, err = cli.Put(ctx, key, val)
+// cancel()
+// if err != nil {
+// fmt.Printf("put to etcd failed, err:%v\n", err)
+// return err
+// }
+//
+// //ser := &ServiceRegister{
+// // cli: cli,
+// // key: key,
+// // val: val,
+// //}
+// //
+// //log.Printf("55555555555555555555555 %v", ser)
+// //鐢宠绉熺害璁剧疆鏃堕棿keepalive
+// //if err := ser.putKeyWithLease(lease); err != nil {
+// // return nil, err
+// //}
+//
+// return err
+//}
+//
+//// 璁剧疆绉熺害
+//func (s *ServiceRegister) putKeyWithLease(lease int64) error {
+// // 鍒涘缓涓�涓柊鐨勭绾︼紝骞惰缃畉tl鏃堕棿
+// resp, err := s.cli.Grant(context.Background(), lease)
+// if err != nil {
+// return err
+// }
+// log.Printf("666666666666666 %v", resp)
+//
+// // 娉ㄥ唽鏈嶅姟骞剁粦瀹氱绾�
+// _, err = s.cli.Put(context.Background(), s.key, s.val, clientv3.WithLease(resp.ID))
+// if err != nil {
+// return err
+// }
+//
+// // 璁剧疆缁 瀹氭湡鍙戦�侀渶姹傝姹�
+// // KeepAlive浣跨粰瀹氱殑绉熺害姘歌繙鏈夋晥銆� 濡傛灉鍙戝竷鍒伴�氶亾鐨刱eepalive鍝嶅簲娌℃湁绔嬪嵆琚娇鐢紝
+// // 鍒欑绾﹀鎴风灏嗚嚦灏戞瘡绉掗挓缁х画鍚慹tcd鏈嶅姟鍣ㄥ彂閫佷繚鎸佹椿鍔ㄨ姹傦紝鐩村埌鑾峰彇鏈�鏂扮殑鍝嶅簲涓烘銆�
+// // etcd client浼氳嚜鍔ㄥ彂閫乼tl鍒癳tcd server锛屼粠鑰屼繚璇佽绉熺害涓�鐩存湁鏁�
+// leaseRespChan, err := s.cli.KeepAlive(context.Background(), resp.ID)
+// if err != nil {
+// return err
+// }
+// log.Printf("777777777777777777 %v", leaseRespChan)
+//
+// s.leaseID = resp.ID
+// s.keepAliveChan = leaseRespChan
+//
+// return nil
+//}
+//
+//// ListenLeaseRespChan 鐩戝惉 缁鎯呭喌
+//func (s *ServiceRegister) ListenLeaseRespChan() {
+// for _ = range s.keepAliveChan {
+// }
+//
+// //for leaseKeepResp := range s.keepAliveChan {
+// // fmt.Println("缁害鎴愬姛", leaseKeepResp)
+// //}
+//
+// //fmt.Println("鍏抽棴缁")
+//}
+//
+//// Close 娉ㄩ攢鏈嶅姟
+//func (s *ServiceRegister) Close() error {
+// // 鎾ら攢绉熺害
+// if _, err := s.cli.Revoke(context.Background(), s.leaseID); err != nil {
+// return err
+// }
+//
+// //fmt.Println("鎾ら攢绉熺害")
+// return s.cli.Close()
+//}
+//
+//// GetServeAddr 鑾峰彇鏈満鍦板潃
+//func GetServeAddr(addr string) (string, error) {
+// conn, err := net.Dial("udp", addr)
// if err != nil {
// return "", err
// }
//
-// // 鑾峰彇ETCD涓昏妭鐐圭殑鍦板潃
-// pods, err := clientset.CoreV1().Pods("kube-system").List(context.TODO(), metav1.ListOptions{
-// LabelSelector: "component=etcd",
+// conn.Close()
+//
+// localAddr := conn.LocalAddr().(*net.UDPAddr)
+// //ip := strings.Split(localAddr.String(), ":")[0]
+//
+// fmt.Println("++++++++ ip: ", localAddr.IP.String())
+// return localAddr.IP.String(), nil
+//}
+//
+//func SetEtcdData(key string, value string) {
+// cli, err := clientv3.New(clientv3.Config{
+// Endpoints: []string{"192.168.20.119:2379"},
+// DialTimeout: 5 * time.Second,
// })
// if err != nil {
-// return "", err
+// // handle error!
+// fmt.Printf("connect to etcd failed, err:%v\n", err)
+// return
// }
-//
-// if len(pods.Items) == 0 {
-// return "", fmt.Errorf("no ETCD pods found")
+// fmt.Println("connect to etcd success")
+// defer cli.Close()
+// // put
+// ctx, cancel := context.WithTimeout(context.Background(), time.Second)
+// _, err = cli.Put(ctx, key, value)
+// cancel()
+// if err != nil {
+// fmt.Printf("put to etcd failed, err:%v\n", err)
+// return
// }
-//
-// leaderEndpoint := pods.Items[0].Status.PodIP + ":2379"
-// return leaderEndpoint, nil
//}
+//
+////func GetETCDLeaderEndpoint() (string, error) {
+//// // 鑾峰彇kubeconfig閰嶇疆鏂囦欢璺緞
+//// clientset, err := util.GetClient()
+//// if err != nil {
+//// return "", err
+//// }
+////
+//// // 鑾峰彇ETCD涓昏妭鐐圭殑鍦板潃
+//// pods, err := clientset.CoreV1().Pods("kube-system").List(context.TODO(), metav1.ListOptions{
+//// LabelSelector: "component=etcd",
+//// })
+//// if err != nil {
+//// return "", err
+//// }
+////
+//// if len(pods.Items) == 0 {
+//// return "", fmt.Errorf("no ETCD pods found")
+//// }
+////
+//// leaderEndpoint := pods.Items[0].Status.PodIP + ":2379"
+//// return leaderEndpoint, nil
+////}
--
Gitblit v1.8.0