private void _sipRegistrarCore_RPCDmsRegisterReceived(SIPTransaction sipTransaction, GB28181.App.SIPAccount sIPAccount)
        {
            try
            {
                Device     _device    = new Device();
                SIPRequest sipRequest = sipTransaction.TransactionRequest;
                _device.Guid = Guid.NewGuid().ToString();
                _device.IP   = sipTransaction.TransactionRequest.RemoteSIPEndPoint.Address.ToString();//IPC
                _device.Name = "gb" + _device.IP;
                _device.LoginUser.Add(new LoginUser()
                {
                    LoginName = sIPAccount.SIPUsername ?? "admin", LoginPwd = sIPAccount.SIPPassword ?? "123456"
                });
                _device.Port         = Convert.ToUInt32(sipTransaction.TransactionRequest.RemoteSIPEndPoint.Port); //5060
                _device.GBID         = sipTransaction.TransactionRequestFrom.URI.User;                             //42010000001180000184
                _device.PtzType      = 0;
                _device.ProtocolType = 0;
                _device.ShapeType    = ShapeType.Dome;
                //var options = new List<ChannelOption> { new ChannelOption(ChannelOptions.MaxMessageLength, int.MaxValue) };
                //  var channel = new Channel(EnvironmentVariables.DeviceManagementServiceAddress ?? "devicemanagementservice:8080", ChannelCredentials.Insecure);
                var channel = GrpcChannel.ForAddress(EnvironmentVariables.DeviceManagementServiceAddress ?? "devicemanagementservice:8080");

                logger.Debug("Device Management Service Address: " + (EnvironmentVariables.DeviceManagementServiceAddress ?? "devicemanagementservice:8080"));
                var client = new DevicesManager.DevicesManagerClient(channel);
                AddDeviceRequest _AddDeviceRequest = new AddDeviceRequest();
                _AddDeviceRequest.Device.Add(_device);
                _AddDeviceRequest.LoginRoleId = "XXXX";
                var reply = client.AddDevice(_AddDeviceRequest);
                if (reply.Status == OP_RESULT_STATUS.OpSuccess)
                {
                    logger.Debug("Device[" + sipTransaction.TransactionRequest.RemoteSIPEndPoint + "] have completed registering DMS service.");
                }
                else
                {
                    logger.Error("_sipRegistrarCore_RPCDmsRegisterReceived: " + reply.Status.ToString());
                }
            }
            catch (Exception ex)
            {
                logger.Error("Device[" + sipTransaction.TransactionRequest.RemoteSIPEndPoint + "] register DMS failed: " + ex.Message);
            }
        }
示例#2
0
        private void DeviceDmsRegister(SIPTransaction sipTransaction, string gbname)
        {
            try
            {
                //Device insert into database
                Device     _device    = new Device();
                SIPRequest sipRequest = sipTransaction.TransactionRequest;
                _device.Guid = Guid.NewGuid().ToString();
                _device.IP   = sipTransaction.TransactionRequest.RemoteSIPEndPoint.Address.ToString();//IPC
                _device.Name = gbname;
                _device.LoginUser.Add(new LoginUser()
                {
                    LoginName = _SIPAccount.SIPUsername ?? "admin", LoginPwd = _SIPAccount.SIPPassword ?? "123456"
                });                                                                                                //same to GB config service
                _device.Port         = Convert.ToUInt32(sipTransaction.TransactionRequest.RemoteSIPEndPoint.Port); //5060
                _device.GBID         = sipTransaction.TransactionRequestFrom.URI.User;                             //42010000001180000184
                _device.PtzType      = 0;
                _device.ProtocolType = 0;
                _device.ShapeType    = ShapeType.Dome;
                //var options = new List<ChannelOption> { new ChannelOption(ChannelOptions.MaxMessageLength, int.MaxValue) };

                //devicemanagementservice 是预留的服务标识(暂命名为设备管理服务).目前没有这个服务.
                //需要你的微服务架构中实现一个设备资产以及一个配置管理服务(或者二合一的资源管服务)
                //以达到两个目的:1、用来为当前GB服务提供启动配置,2、为GB收到注册的设备/平台信息,提供全平台的统一的存储服务.
                var channel = GrpcChannel.ForAddress(EnvironmentVariables.DeviceManagementServiceAddress ?? "devicemanagementservice:8080"); //, ChannelCredentials.Insecure);
                logger.Debug("Device Management Service Address: " + (EnvironmentVariables.DeviceManagementServiceAddress ?? "devicemanagementservice:8080"));
                var client = new DevicesManager.DevicesManagerClient(channel);
                //if (!_sipCoreMessageService.NodeMonitorService.ContainsKey(_device.GBID))
                //{
                //    AddDeviceRequest _AddDeviceRequest = new AddDeviceRequest();
                //    _AddDeviceRequest.Device.Add(_device);
                //    _AddDeviceRequest.LoginRoleId = "XXXX";
                //    var reply = client.AddDevice(_AddDeviceRequest);
                //    if (reply.Status == OP_RESULT_STATUS.OpSuccess)
                //    {
                //        logger.Debug("Device[" + sipTransaction.TransactionRequest.RemoteSIPEndPoint + "] have added registering DMS service.");
                //        DeviceEditEvent(_device.GBID, "add");
                //    }
                //    else
                //    {
                //        logger.Error("_sipRegistrarCore_RPCDmsRegisterReceived.AddDevice: " + reply.Status.ToString());
                //    }
                //}
                //else
                //{
                //    UpdateDeviceRequest _UpdateDeviceRequest = new UpdateDeviceRequest();
                //    _UpdateDeviceRequest.DeviceItem.Add(_device);
                //    _UpdateDeviceRequest.LoginRoleId = "XXXX";
                //    var reply = client.UpdateDevice(_UpdateDeviceRequest);
                //    if (reply.Status == OP_RESULT_STATUS.OpSuccess)
                //    {
                //        logger.Debug("Device[" + sipTransaction.TransactionRequest.RemoteSIPEndPoint + "] have updated registering DMS service.");
                //    }
                //    else
                //    {
                //        logger.Error("_sipRegistrarCore_RPCDmsRegisterReceived.UpdateDevice: " + reply.Status.ToString());
                //    }
                //}

                //add & update device
                AddDeviceRequest _AddDeviceRequest = new AddDeviceRequest();
                _AddDeviceRequest.Device.Add(_device);
                _AddDeviceRequest.LoginRoleId = "XXXX";
                var reply = client.AddDevice(_AddDeviceRequest);
                if (reply.Status == OP_RESULT_STATUS.OpSuccess)
                {
                    logger.Debug("Device added into DMS service: " + JsonConvert.SerializeObject(_device));
                }
                else
                {
                    logger.Warn("DeviceDmsRegister.AddDevice: " + reply.Status.ToString());
                }
            }
            catch (Exception ex)
            {
                logger.Error("DeviceDmsRegister Exception: " + ex.Message);
            }
        }