コード例 #1
0
 static void Main(string[] args)
 {
     Console.WriteLine("{0}Hello client{0}", new string('-', 30));
     socket =
        new AdvancedSocket(
            new Socket(
                AddressFamily.InterNetwork,
                SocketType.Stream,
                ProtocolType.Tcp));
     try
     {
         //HELLO
         Hello();
         Console.WriteLine("{0}GetStart{0}", new string('-', 30));
         //WORK
         Work();
     }
     catch (SocketException)
     {
         Console.WriteLine("{0}Connection lost{0}", new string('-', 30));
     }
     catch (Exception)
     {
         // ignored
     }
     finally
     {
         socket.Close();
     }
 }
コード例 #2
0
        private static void MainLoop(IWorker currentWorker)
        {
            socket.Bind(
                new IPEndPoint(
                    IPAddress.Any,
                    AdvancedSocket.Port));
            socket.Listen(maxClientsCount + 1);
            while (true)
                try
                {
                    AdvancedSocket _socket = new AdvancedSocket(socket.Accept());
                    var packet = _socket.RecivePacket(CommandType.Hello);

                    if (currentTasksCount == maxClientsCount)
                        packet.ErrorInfo = "Server is bussy, please try again later";
                    _socket.SendPacket(packet);

                    if (packet.Error != 0)
                    {
                        _socket.Close();
                        continue;
                    }

                    var task = Task.Factory.StartNew(() =>
                    {
                        currentTasksCount++;
                        int numOfTask = listTasks.Count;
                        Console.WriteLine($"[{Logger.Time()}] TaskN{numOfTask} start working");
                        new BaseServerWorker().Run(_socket);
                        _socket.Close();
                        return numOfTask;
                    });

                    listTasks.Add(task);

                    task.ContinueWith(numOfTask =>
                    {
                        currentTasksCount--;
                        Console.WriteLine($"[{Logger.Time()}] TaskN{numOfTask.Result} end working");
                    });
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
        }
コード例 #3
0
        private static void MainLoop(IWorker currentWorker)
        {
            socket.Bind(
                new IPEndPoint(
                    IPAddress.Any,
                    AdvancedSocket.Port));
            socket.Listen(maxClientsCount + 1);
            while (true)
                try
                {
                    var _socket = new AdvancedSocket(socket.Accept());
                    var packet = _socket.RecivePacket(CommandType.Hello);

                    if (currentTasksCount == maxClientsCount)
                        packet.ErrorInfo = "Server is bussy, please try again later";
                    _socket.SendPacket(packet);

                    if (packet.Error != 0)
                    {
                        _socket.Close();
                        continue;
                    }

                    var task = Task.Factory.StartNew(() =>
                    {
                        currentTasksCount++;
                        var numOfTask = listTasks.Count;
                        Console.WriteLine($"[{DateTime.Now}] TaskN{numOfTask} start working");
                        var worker = new BaseServerWorker();
                        worker.Init(_socket);
                        UpdateAll += worker.Update;
                        while (true) Thread.Sleep(int.MaxValue);
                    });

                    listTasks.Add(task);

                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
        }
コード例 #4
0
        public void Update(bool hard, string[] args)
        {
            if (socket == null) return;
            try
            {
                var packet = socket.SendAndRecivePacket(hard ?
                    CommandType.Update :
                    CommandType.Revert,
                    string.Join("\n", args.Skip(1)));
                if (packet.Error != 0) return;

                var archive = ArchiveZip.DirToZip(args.First());
                socket.SendArchive(archive);
            }
            catch (SocketException)
            {
                socket.Close();
                socket = null;
            }
        }
コード例 #5
0
 public void Init(object arg = null)
 {
     socket = arg as AdvancedSocket;
     if (socket == null) throw new ArgumentException();
 }
コード例 #6
0
ファイル: BaseAuth.cs プロジェクト: Anovi-Soft/Git-C-Sharp
 public BaseAuth(AdvancedSocket advancedSocket)
 {
     socket = advancedSocket;
     Load();
 }
コード例 #7
0
        public void Run(object arg = null)
        {
            socket = arg as AdvancedSocket;
            if (socket == null) return;
            if (StepAuth()) return;
            provider = new FolderProvider(userName, 
                ((IPEndPoint)socket.socket.RemoteEndPoint).Address.ToString());


            while (true)
                try
                {
                    packet = socket.RecivePacket(CommandType.WorkerCommands);
                    switch (packet.Command)
                    {
                        case CommandType.Add:
                            Add();
                            break;
                        case CommandType.Clone:
                            Clone();
                            break;
                        case CommandType.Commit:
                            Commit();
                            break;
                        case CommandType.Update:
                            Update();
                            break;
                        case CommandType.Revert:
                            Revert();
                            break;
                        case CommandType.Log:
                            Log();
                            break;
                        case CommandType.GoodBy:
                            Console.WriteLine($"[{Logger.Time()}] client say goodby");
                            return;
                        default:
                            return;
                    }
                }
                catch (SocketException)
                {
                    packet.ErrorInfo = "Connection lost";
                    return;
                }
                catch (GitHubException e)
                {
                    packet.ErrorInfo = e.Message;
                }
                catch (Exception e)
                {
                    packet.ErrorInfo = "Unknown server exception";
                    Console.WriteLine(e.Message);
                }
                finally
                {
                    try{socket.SendPacket(packet);}
                    catch (Exception){/*ignored*/}
                    if(packet.Command != CommandType.Log)
                        Console.WriteLine($"[{Logger.Time()}][{userName}] {packet.Command} {Join(" ",packet.Args)} {packet.ErrorInfo}");
                }
            
        }