public void checkCancellationRequests() { int bytes = 0; try { if (!m_netStream.DataAvailable) { return; } XMLStream inputXMLStream = new XMLStream(); bytes = m_netStream.Read(inputXMLStream.getBuffer(), inputXMLStream.getBufferOffset() , inputXMLStream.getBufferSize() - inputXMLStream.getBufferOffset()); inputXMLStream.addBytesRead(bytes); //we let the xmlstream object know that some bytes have been read in its buffer string xmlItem = inputXMLStream.peekNextXMLItem(); if (xmlItem != "") { string xmlItemContent = inputXMLStream.getLastXMLItemContent(); if (xmlItemContent == CJobDispatcher.m_quitMessage) { inputXMLStream.addProcessedBytes(bytes); inputXMLStream.discardProcessedData(); logMessage("Stopping job execution"); m_cancelTokenSource.Cancel(); } } } catch (IOException) { logMessage("IOException in readFromShepherd()"); } catch (OperationCanceledException) { logMessage("Thread finished gracefully"); } catch (ObjectDisposedException) { logMessage("Network stream closed: async read finished"); } catch (Exception ex) { logMessage("Unhandled exception in readFromShepherd"); logMessage(ex.ToString()); } }
public void checkCancellationRequests() { int bytes = 0; try { if (!m_netStream.DataAvailable) return; XMLStream inputXMLStream = new XMLStream(); bytes = m_netStream.Read(inputXMLStream.getBuffer(), inputXMLStream.getBufferOffset() , inputXMLStream.getBufferSize() - inputXMLStream.getBufferOffset()); inputXMLStream.addBytesRead(bytes); //we let the xmlstream object know that some bytes have been read in its buffer string xmlItem = inputXMLStream.peekNextXMLItem(); if (xmlItem != "") { string xmlItemContent = inputXMLStream.getLastXMLItemContent(); if (xmlItemContent == CJobDispatcher.m_quitMessage) { inputXMLStream.addProcessedBytes(bytes); inputXMLStream.discardProcessedData(); logMessage("Stopping job execution"); m_cancelTokenSource.Cancel(); } } } catch (IOException) { logMessage("IOException in readFromShepherd()"); } catch (OperationCanceledException) { logMessage("Thread finished gracefully"); } catch (ObjectDisposedException) { logMessage("Network stream closed: async read finished"); } catch (Exception ex) { logMessage("Unhandled exception in readFromShepherd"); logMessage(ex.ToString()); } }
protected void SendFile(string fileName, FileType type, bool sendContent, bool fromCachedDir, CancellationToken cancelToken) { string fileTypeXMLTag; string header; byte[] headerBytes; string footer = ""; fileTypeXMLTag = getFileTypeXMLTag(type); header = "<" + fileTypeXMLTag + " Name=\"" + fileName + "\""; if (sendContent) { footer = "</" + fileTypeXMLTag + ">"; } if (sendContent) { FileStream fileStream = null; long fileSize = 0; logMessage("Sending file " + fileName); if (fromCachedDir) { fileName = getCachedFilename(fileName); } try { fileStream = File.OpenRead(fileName); } catch { logMessage("Could not find input file: " + fileName); return; } fileSize = fileStream.Length; header += " Size=\"" + fileSize + "\">"; //send the header headerBytes = Encoding.ASCII.GetBytes(header); writeAsync(headerBytes, 0, headerBytes.Length, cancelToken); long readBytes = 0; int lastReadBytes; while (readBytes < fileSize) { byte[] buffer = new byte[m_xmlStream.getBufferSize()]; lastReadBytes = fileStream.Read(buffer, 0, m_xmlStream.getBufferSize()); readBytes += lastReadBytes; try { writeAsync(buffer, 0, (int)lastReadBytes, cancelToken); } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); } } fileStream.Close(); //Send the footer: </Exe>, </Input> or </Output> byte[] footerBytes = Encoding.ASCII.GetBytes(footer); writeAsync(footerBytes, 0, footerBytes.Length, cancelToken); m_netStream.Flush(); } else { header += "/>"; //send the header headerBytes = Encoding.ASCII.GetBytes(header); writeAsync(headerBytes, 0, headerBytes.Length, cancelToken); m_netStream.Flush(); } }