123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- package HikNetSDK
- import (
- "sync"
- "unsafe"
- )
- type HIKNvr struct {
- core unsafe.Pointer
- State bool
- NvrConfig Nvr
- mux sync.RWMutex
- }
- func NewHIKNvr(nvrConfig Nvr) *HIKNvr {
- return &HIKNvr{
- core: newHIKNvr(),
- NvrConfig: nvrConfig,
- State: false,
- mux: sync.RWMutex{},
- }
- }
- func (h *HIKNvr) opt(action func() bool) bool {
- h.mux.RLock()
- if h.State {
- h.mux.RUnlock()
- h.mux.Lock()
- h.State = action()
- h.mux.Unlock()
- }
- h.mux.RUnlock()
- return h.State
- }
- func (h *HIKNvr) Login() bool {
- h.mux.Lock()
- h.State = initNvr(h.core, h.NvrConfig.Ip, h.NvrConfig.Port, h.NvrConfig.User, h.NvrConfig.Password, h.NvrConfig.Channel)
- h.mux.Unlock()
- return h.State
- }
- func (h *HIKNvr) CheckTimeRegionWithMonth(year int, month int) string {
- h.mux.RLock()
- if h.State {
- h.mux.RUnlock()
- data := checkTimeRegionWithMonth(h.core, year, month)
- if data == "" {
- h.mux.Lock()
- h.State = false
- h.mux.Unlock()
- } else {
- h.mux.Lock()
- h.State = true
- h.mux.Unlock()
- return data
- }
- } else {
- h.mux.RUnlock()
- }
- return ""
- }
- func (h *HIKNvr) CheckTimeRegionWithDay(year int, month int, day int) string {
- h.mux.RLock()
- if h.State {
- h.mux.RUnlock()
- data := checkTimeRegionWithDay(h.core, year, month, day)
- if data == "" {
- h.mux.Lock()
- h.State = false
- h.mux.Unlock()
- } else {
- h.mux.Lock()
- h.State = true
- h.mux.Unlock()
- return data
- }
- } else {
- h.mux.RUnlock()
- }
- return ""
- }
- func (h *HIKNvr) UTCDiff() int {
- h.mux.RLock()
- if h.State {
- data := nvrUTCDiff(h.core)
- h.mux.RUnlock()
- if nvrUTCDiff(h.core) == 5000 {
- h.mux.Lock()
- h.State = false
- h.mux.Unlock()
- } else {
- h.mux.Lock()
- h.State = true
- h.mux.Unlock()
- return data
- }
- } else {
- h.mux.RUnlock()
- }
- return 5000
- }
|