- zmqctx, sub_in_chans, pub_out_socket, keylookup_socket := ZmqsInit(doorsub_addr_, sensorssub_port_, pub_port_, keylookup_addr_)
- if sub_in_chans != nil {defer sub_in_chans.Close()}
- defer zmqctx.Close()
- if pub_out_socket != nil {defer pub_out_socket.Close()}
- if keylookup_socket != nil {defer keylookup_socket.Close()}
- if sub_in_chans == nil || pub_out_socket == nil || keylookup_socket == nil {
- panic("zmq sockets must not be nil !!")
- }
- if use_syslog_ {
- var logerr error
- Syslog_, logerr = syslog.NewLogger(syslog.LOG_INFO | (18<<3), 0)
- //~ Syslog_, logerr = syslog.NewLogger(syslog.LOG_INFO | syslog.LOG_LOCAL2, 0)
- if logerr != nil { panic(logerr) }
- Syslog_.Print("started")
- defer Syslog_.Print("exiting")
- }
+ if enable_debuglog_ {
+ LogEnableDebuglog()
+ }
+ if use_syslog_ {
+ LogEnableSyslog()
+ Syslog_.Print("started")
+ defer Syslog_.Print("exiting")
+ }
+
+ zmqctx, sub_in_chans, pub_out_socket, keylookup_socket := ZmqsInit(doorsub_addr_, sensorssub_port_, pub_port_, keylookup_addr_)
+ if sub_in_chans != nil {
+ defer sub_in_chans.Close()
+ }
+ defer zmqctx.Close()
+ if pub_out_socket != nil {
+ defer pub_out_socket.Close()
+ }
+ if keylookup_socket != nil {
+ defer keylookup_socket.Close()
+ }
+ if sub_in_chans == nil || pub_out_socket == nil || keylookup_socket == nil {
+ panic("zmq sockets must not be nil !!")
+ }
+
+ ps := pubsub.New(10)
+ defer ps.Shutdown() // ps.Shutdown should be called before zmq_ctx.Close(), since it will cause goroutines to shutdown and close zqm_sockets which is needed for zmq_ctx.Close() to return
+ //~ ticker := time.NewTicker(time.Duration(5) * time.Minute)
+
+ store_these_events_chan := ps.Sub("door", "doorcmd", "presence", "sensors", "buttons", "movement")
+ go BrainCenter(zmqctx, brain_listen_addr_, store_these_events_chan)