Esempio n. 1
0
        private void SendLocalHolePunchData(int requester, int ep2)
        {
            ServerMessageProvider smpFor2 = new ServerMessageProvider(SocketResourcesManager.srm.ProvideBuffer());
            OutputMessage         omFor2  = smpFor2.ProvideTryLocalHolePunchMessage(ServerCommunicationCenter.commCenter.ClientsEndPoint[requester].PrivateEndPoint);

            ServerCommunicationCenter.commCenter.SendMessageTo(ep2, omFor2);
        }
        private void SendFinishedNotification(int fileId, int clientEp)
        {
            ServerMessageProvider smp = new ServerMessageProvider(SocketResourcesManager.srm.ProvideBuffer());
            OutputMessage         om  = smp.ProvideFileRegisteredMessage(fileId);

            ServerCommunicationCenter.commCenter.SendMessageTo(clientEp, om);
        }
        public void RequestResend(int chunkHashId, int senderId, int fileId)
        {
            ServerMessageProvider smp = new ServerMessageProvider(SocketResourcesManager.srm.ProvideBuffer());
            OutputMessage         om  = smp.ProvideResendHashRequestMessage(chunkHashId, fileId);

            ServerCommunicationCenter.commCenter.SendMessageTo(senderId, om);
        }
Esempio n. 4
0
        private static void SendHash(int clientEp, int chunkId, byte[] hash)
        {
            Debug.WriteLine("sent: " + chunkId);
            ServerMessageProvider smp = new ServerMessageProvider(SocketResourcesManager.srm.ProvideBuffer());
            OutputMessage         om  = smp.ProvideChunkHashDataMessage(chunkId, hash);

            ServerCommunicationCenter.commCenter.SendMessageTo(clientEp, om);
        }
Esempio n. 5
0
        private void SendHolePunchData(int ep1, int ep2)
        {
            Debug.WriteLine("send HP" + ep1 + "|" + ep2);
            ServerMessageProvider smpFor2 = new ServerMessageProvider(SocketResourcesManager.srm.ProvideBuffer());
            OutputMessage         omFor2  = smpFor2.ProvideTryHolePunchMessage(ServerCommunicationCenter.commCenter.ClientsEndPoint[ep1].PublicEndPoint);

            ServerMessageProvider smpFor1 = new ServerMessageProvider(SocketResourcesManager.srm.ProvideBuffer());
            OutputMessage         omFor1  = smpFor1.ProvideTryHolePunchMessage(ServerCommunicationCenter.commCenter.ClientsEndPoint[ep2].PublicEndPoint);

            ServerCommunicationCenter.commCenter.SendMessageTo(ep1, omFor1);
            ServerCommunicationCenter.commCenter.SendMessageTo(ep2, omFor2);
        }
        public void HandleFileSearchByNameRequest(C2SMessageReader mr)
        {
            if (!ServerCommunicationCenter.commCenter.ClientsEndPoint.ContainsKey(mr.ClientEP()))
            {
                return;
            }
            string                keyword = mr.ReadFileNameKeyword();
            List <File>           files   = File.GetFiles(keyword);
            ServerMessageProvider smp     = new ServerMessageProvider(SocketResourcesManager.srm.ProvideBuffer());
            OutputMessage         om      = smp.ProvideFileSearchByNameMessage(files);

            ServerCommunicationCenter.commCenter.SendMessageTo(mr.ClientEP(), om);
        }
 public void HandleClientAvailabilityRequest(C2SMessageReader mr)
 {
     if (!ServerCommunicationCenter.commCenter.ClientsEndPoint.ContainsKey(mr.ClientEP()))
     {
         return;
     }
     if (ServerCommunicationCenter.commCenter.ClientsEndPoint.ContainsKey(mr.ReadRequestedClientId()))
     {
         ServerMessageProvider smp = new ServerMessageProvider(SocketResourcesManager.srm.ProvideBuffer());
         OutputMessage         om  = smp.ProvideClientAvailableMessage(mr.ReadRequestedClientId());
         ServerCommunicationCenter.commCenter.SendMessageTo(mr.ClientEP(), om);
     }
 }
        public void HandleFileClientListRequest(C2SMessageReader mr)
        {
            if (!ServerCommunicationCenter.commCenter.ClientsEndPoint.ContainsKey(mr.ClientEP()))
            {
                return;
            }
            int        fileId     = mr.ReadFileId();
            List <int> clientList = File.GetFileOwnersId(mr.ReadFileId());

            clientList.Remove(mr.ClientEP());
            ServerMessageProvider smp = new ServerMessageProvider(SocketResourcesManager.srm.ProvideBuffer());
            OutputMessage         om  = smp.ProvideClientListMessage(fileId, clientList);

            ServerCommunicationCenter.commCenter.SendMessageTo(mr.ClientEP(), om);
        }
        public void HandleRequestFileUpload(C2SMessageReader mr)
        {
            if (!ServerCommunicationCenter.commCenter.ClientsEndPoint.ContainsKey(mr.ClientEP()))
            {
                return;
            }
            Debug.WriteLine("SR: Received request for registration");
            ServerMessageProvider smp = new ServerMessageProvider(SocketResourcesManager.srm.ProvideBuffer());
            OutputMessage         om;
            string fileFullName = mr.ReadRegisteringFileFullName();
            string ext          = Utils.GetFileExtensionFromPath(fileFullName);
            string name         = Utils.GetFileNameFromPath(fileFullName);

            bool duplikat = File.Exists(name, ext, mr.ReadRegisteringFileSize());

            if (!duplikat)
            {
                File f = new File();
                f.ApplicationId = mr.ClientEP();
                f.FileExtension = ext;
                f.FileName      = name;
                f.FileSize      = mr.ReadRegisteringFileSize();
                int fileId = f.Add();
                om = smp.ProvidePositiveUploadFileMessage(fileId);
                HashManager shr = new HashManager(mr.ClientEP(), Sizes.GetChunksNumber(mr.ReadRegisteringFileSize()), fileId, new ServerHashManagerListener());
                Debug.WriteLine("File: " + fileId);
                Debug.WriteLine("FileSize: " + f.FileSize);
                ServerObjectGraph.sog.FileRegistrations.Add(fileId, shr);
                Debug.WriteLine("SR: Registration approved");
            }
            else
            {
                om = smp.ProvideNegativeUploadFileMessage();
            }
            ServerCommunicationCenter.commCenter.SendMessageTo(mr.ClientEP(), om);
        }
        public void HandleRequestConnect(EndPoint publicEndPoint, C2SMessageReader mr)
        {
            Debug.WriteLine("SR: Client" + mr.ClientEP() + " connected");
            int clientEp = mr.ClientEP();

            if (clientEp == -1)
            {
                Peer p = new Peer();
                p.LastVisit = DateTime.Now;
                p.IpAddress = IPAddress.Any;
                int id = p.Add();
                ServerCommunicationCenter.commCenter.ClientConnected(id, new ClientEndPoint((IPEndPoint)publicEndPoint, mr.ClientPrivateEP()));
                ServerMessageProvider smp = new ServerMessageProvider(SocketResourcesManager.srm.ProvideBuffer());
                OutputMessage         om  = smp.ProvideApplicationRegisterResponseMessage(id);
                ServerCommunicationCenter.commCenter.SendMessage(publicEndPoint, om);
            }
            else
            {
                ServerCommunicationCenter.commCenter.ClientConnected(mr.ClientEP(), new ClientEndPoint((IPEndPoint)publicEndPoint, mr.ClientPrivateEP()));
                ServerMessageProvider smp = new ServerMessageProvider(SocketResourcesManager.srm.ProvideBuffer());
                OutputMessage         om  = smp.ProvideConnectedMessage();
                ServerCommunicationCenter.commCenter.SendMessageTo(mr.ClientEP(), om);
            }
        }