Exemplo n.º 1
0
 public int AddPoint(IPointInfo pointInfo)
 {
     pointInfo.Number = ++_lastPointNumber;
     PointDictionary.Add(pointInfo.Number, pointInfo);
     ++pointInfo.Host.PointCount;
     NeedsPoint = false;
     return(_lastPointNumber);
 }
Exemplo n.º 2
0
 public int AddPoint(IPointInfo pointInfo)
 {
     pointInfo.Number = ++_lastPointNumber;
     PointDictionary.Add(pointInfo.Number, pointInfo);
     ++pointInfo.Host.PointCount;
     NeedsPoint = false;
     return _lastPointNumber;
 }
Exemplo n.º 3
0
        private void RunClient(NetworkStream clientStream)
        {
            int    jobNumber = 0;
            string daemonIp  = null;

            using (var writer = new BinaryWriter(clientStream))
            {
                using (var reader = new BinaryReader(clientStream))
                {
                    while (true)
                    {
                        try
                        {
                            byte signal = reader.ReadByte();

                            switch (signal)
                            {
                            case ((byte)Constants.PointCreated):
                                jobNumber = reader.ReadInt32();
                                int        parentNumber = reader.ReadInt32();
                                IPointInfo point        = _hostServer.CreatePoint(jobNumber, parentNumber);
                                if (point == null)
                                {
                                    return;
                                }
                                writer.Write(point.Number);
                                writer.Write(point.Host.IpAddress.ToString());     //provide client with point and daemon IP adress
                                continue;

                            case ((byte)Constants.PointDeleted):
                            {
                                jobNumber = reader.ReadInt32();
                                var pointNumber = reader.ReadInt32();
                                _hostServer.DeletePoint(jobNumber, pointNumber);
                            }
                                continue;

                            case ((byte)Constants.BeginJob):
                                int    priority = reader.ReadInt32();
                                string username = reader.ReadString();
                                jobNumber = _hostServer.BeginJob(priority, username);
                                writer.Write(jobNumber);
                                continue;

                            case ((byte)Constants.FinishJob):
                                jobNumber = reader.ReadInt32();
                                _hostServer.EndJob(jobNumber);
                                return;

                            case (byte)Constants.IpAddress:
                                daemonIp = reader.ReadString();
                                _log.Information($"Adding new daemon. IP: {daemonIp}");
                                _hostServer.AddDaemon(daemonIp);
                                continue;
                            }
                        }
                        catch (IOException)
                        {
                            HandleDisconnect(jobNumber, daemonIp);
                            return;
                        }
                        catch (Exception ex)
                        {
                            _log.Error(ex, "An error occurred during job execution");
                            HandleDisconnect(jobNumber, daemonIp);
                            return;
                        }
                    }
                }
            }
        }