private static void FindUpdateFileCallback(IAsyncResult ar) { ComObject state = (ComObject)ar.AsyncState; Socket handler = state.WorkSocket; int bytesRead = handler.EndReceive(ar); if (bytesRead > 0) { var receiveData = state.Buffer.Take(bytesRead).ToArray(); var dataList = PacketUtils.SplitBytes(receiveData, PacketUtils.ClientFindFileInfoTag()); if (dataList != null && dataList.Any()) { var request = PacketUtils.GetData(PacketUtils.ClientFindFileInfoTag(), dataList.FirstOrDefault()); string str = System.Text.Encoding.UTF8.GetString(request); var infos = str.Split('_'); var productName = infos[0]; var revitVersion = infos[1]; var currentVersion = infos[2]; var updatefile = ServerFileUtils.GetLatestFilePath(productName, revitVersion, currentVersion); if (string.IsNullOrEmpty(updatefile) || !File.Exists(updatefile)) { return; } _serverPath = updatefile; FoundUpdateFileResponse(handler); } } }
private void FindUpdateFileInfo(Socket client, int packetNumber) { ComObject state = new ComObject { WorkSocket = client, PacketNumber = packetNumber }; byte[] byteData = PacketUtils.PacketData(PacketUtils.ClientFindFileInfoTag(), Encoding.UTF8.GetBytes(_updateFileName)); client.BeginSend(byteData, 0, byteData.Length, 0, FindUpdateFileCallback, state); }
private void ProcessReceiveFindFileRequest(SocketAsyncEventArgs e) { var bytesRead = e.BytesTransferred; if (bytesRead > 0 && e.SocketError == SocketError.Success) { var receiveData = e.Buffer.Skip(e.Offset).Take(bytesRead).ToArray(); var dataList = PacketUtils.SplitBytes(receiveData, PacketUtils.ClientFindFileInfoTag()); if (dataList != null && dataList.Any()) { var request = PacketUtils.GetData(PacketUtils.ClientFindFileInfoTag(), dataList.FirstOrDefault()); string str = System.Text.Encoding.UTF8.GetString(request); var infos = str.Split('_'); var productName = infos[0]; var revitVersion = infos[1]; var currentVersion = infos[2]; var mainFolder = AppDomain.CurrentDomain.BaseDirectory.Replace("bin", "TestFile"); var serverFileFolder = Path.Combine(mainFolder, "Server"); var serverFileFiles = new DirectoryInfo(serverFileFolder).GetFiles(); var updatefile = serverFileFiles.FirstOrDefault(x => x.Name.Contains(productName) && x.Name.Contains(revitVersion) && x.Name.Contains(currentVersion)); if (updatefile != null) { if (string.IsNullOrEmpty(updatefile.FullName) || !File.Exists(updatefile.FullName)) { return; } _serverPath = updatefile.FullName; //ready to send back to Client byte[] foundUpdateFileData = PacketUtils.PacketData(PacketUtils.ServerFoundFileInfoTag(), null); Array.Clear(e.Buffer, e.Offset, e.Count); Array.Copy(foundUpdateFileData, 0, e.Buffer, e.Offset, foundUpdateFileData.Length); e.Completed -= ProcessAccept_Completed; e.Completed += ProcessReceiveFindFileRequest_Completed; if (!e.AcceptSocket.SendAsync(e)) { ProcessFilePosition(e); } } } } }
private static void FindUpdateFileCallback(IAsyncResult ar) { ComObject state = (ComObject)ar.AsyncState; Socket handler = state.WorkSocket; int bytesRead = handler.EndReceive(ar); if (bytesRead > 0) { var receiveData = state.Buffer.Take(bytesRead).ToArray(); var dataList = PacketUtils.SplitBytes(receiveData, PacketUtils.ClientFindFileInfoTag()); if (dataList != null && dataList.Any()) { var request = PacketUtils.GetData(PacketUtils.ClientFindFileInfoTag(), dataList.FirstOrDefault()); string str = System.Text.Encoding.UTF8.GetString(request); var infos = str.Split('_'); var productName = infos[0]; var revitVersion = infos[1]; var currentVersion = infos[2]; var mainFolder = AppDomain.CurrentDomain.BaseDirectory.Replace("bin", "TestFile"); var serverFileFolder = Path.Combine(mainFolder, "Server"); var serverFileFiles = new DirectoryInfo(serverFileFolder).GetFiles(); var updatefile = serverFileFiles.FirstOrDefault(x => x.Name.Contains(productName) && x.Name.Contains(revitVersion) && x.Name.Contains(currentVersion)); if (updatefile != null) { if (string.IsNullOrEmpty(updatefile.FullName) || !File.Exists(updatefile.FullName)) { return; } _serverPath = updatefile.FullName; FoundUpdateFileResponse(handler); } } } }