Inheritance: AndXServerMessageBlock
 /// <exception cref="SharpCifs.Smb.SmbException"></exception>
 /// <exception cref="System.UriFormatException"></exception>
 /// <exception cref="UnknownHostException"></exception>
 internal SmbFileOutputStream(SmbFile file, bool append, int openFlags)
 {
     this._file      = file;
     this._append    = append;
     this._openFlags = openFlags;
     _access         = ((int)(((uint)openFlags) >> 16)) & 0xFFFF;
     if (append)
     {
         try
         {
             _fp = file.Length();
         }
         catch (SmbAuthException sae)
         {
             throw;
         }
         catch (SmbException)
         {
             _fp = 0L;
         }
     }
     if (file is SmbNamedPipe && file.Unc.StartsWith("\\pipe\\"))
     {
         file.Unc = Runtime.Substring(file.Unc, 5);
         file.Send(new TransWaitNamedPipe("\\pipe" + file.Unc),
                   new TransWaitNamedPipeResponse());
     }
     file.Open(openFlags,
               _access | SmbConstants.FileWriteData,
               SmbFile.AttrNormal,
               0);
     this._openFlags &= ~(SmbFile.OCreat | SmbFile.OTrunc);
     _writeSize       = file.Tree.Session.transport.SndBufSize - 70;
     _useNtSmbs       = file.Tree.Session.transport.HasCapability(SmbConstants.CapNtSmbs);
     if (_useNtSmbs)
     {
         _reqx = new SmbComWriteAndX();
         _rspx = new SmbComWriteAndXResponse();
     }
     else
     {
         _req = new SmbComWrite();
         _rsp = new SmbComWriteResponse();
     }
 }
		/// <exception cref="SharpCifs.Smb.SmbException"></exception>
		/// <exception cref="System.UriFormatException"></exception>
		/// <exception cref="UnknownHostException"></exception>
		internal SmbFileOutputStream(SmbFile file, bool append, int openFlags)
		{
			this._file = file;
			this._append = append;
			this._openFlags = openFlags;
			_access = ((int)(((uint)openFlags) >> 16)) & 0xFFFF;
			if (append)
			{
				try
				{
					_fp = file.Length();
				}
				catch (SmbAuthException sae)
				{
					throw;
				}
				catch (SmbException)
				{
					_fp = 0L;
				}
			}
			if (file is SmbNamedPipe && file.Unc.StartsWith("\\pipe\\"))
			{
				file.Unc = Runtime.Substring(file.Unc, 5);
				file.Send(new TransWaitNamedPipe("\\pipe" + file.Unc), new TransWaitNamedPipeResponse
					());
			}
			file.Open(openFlags, _access | SmbConstants.FileWriteData, SmbFile.AttrNormal, 
				0);
			this._openFlags &= ~(SmbFile.OCreat | SmbFile.OTrunc);
			_writeSize = file.Tree.Session.transport.SndBufSize - 70;
			_useNtSmbs = file.Tree.Session.transport.HasCapability(SmbConstants.CapNtSmbs
				);
			if (_useNtSmbs)
			{
				_reqx = new SmbComWriteAndX();
				_rspx = new SmbComWriteAndXResponse();
			}
			else
			{
				_req = new SmbComWrite();
				_rsp = new SmbComWriteResponse();
			}
		}
示例#3
0
 /// <exception cref="SharpCifs.Smb.SmbException"></exception>
 public WriterThread(SmbFile enclosing)
     : base("JCIFS-WriterThread")
 {
     this._enclosing = enclosing;
     UseNtSmbs = this._enclosing.Tree.Session.transport.HasCapability(SmbConstants.CapNtSmbs);
     if (UseNtSmbs)
     {
         Reqx = new SmbComWriteAndX();
         Resp = new SmbComWriteAndXResponse();
     }
     else
     {
         Req = new SmbComWrite();
         Resp = new SmbComWriteResponse();
     }
     Ready = false;
 }