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); }
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); }
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); } }