KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > knowgate > jcifs > smb > TransactNamedPipeOutputStream


1 /* jcifs smb client library in Java
2  * Copyright (C) 2000 "Michael B. Allen" <jcifs at samba dot org>
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  */

18
19 package com.knowgate.jcifs.smb;
20
21 import java.io.OutputStream JavaDoc;
22 import java.io.IOException JavaDoc;
23
24 class TransactNamedPipeOutputStream extends OutputStream JavaDoc {
25
26     private String JavaDoc path;
27     private SmbNamedPipe pipe;
28     private byte[] tmp = new byte[1];
29
30     TransactNamedPipeOutputStream( SmbNamedPipe pipe ) throws IOException JavaDoc {
31         this.pipe = pipe;
32         path = pipe.unc;
33     }
34
35     public void close() throws IOException JavaDoc {
36         pipe.close();
37     }
38     public void write( int b ) throws IOException JavaDoc {
39         tmp[0] = (byte)b;
40         write( tmp, 0, 1 );
41     }
42     public void write( byte[] b ) throws IOException JavaDoc {
43         write( b, 0, b.length );
44     }
45     public void write( byte[] b, int off, int len ) throws IOException JavaDoc {
46         if( len < 0 ) {
47             len = 0;
48         }
49
50         if(( pipe.pipeType & SmbNamedPipe.PIPE_TYPE_CALL ) ==
51                                                     SmbNamedPipe.PIPE_TYPE_CALL ) {
52             pipe.sendTransaction( new TransWaitNamedPipe( path ),
53                                         new TransWaitNamedPipeResponse() );
54             pipe.sendTransaction( new TransCallNamedPipe( path, b, off, len ),
55                                         new TransCallNamedPipeResponse( pipe ));
56         } else if(( pipe.pipeType & SmbNamedPipe.PIPE_TYPE_TRANSACT ) ==
57                                                     SmbNamedPipe.PIPE_TYPE_TRANSACT ) {
58             pipe.open(( pipe.pipeType & 0xFF0000 ) | SmbFile.O_EXCL, SmbFile.ATTR_NORMAL, 0 );
59             pipe.sendTransaction( new TransTransactNamedPipe( pipe.fid, b, off, len ),
60                                         new TransTransactNamedPipeResponse( pipe ));
61         }
62     }
63 }
64
Popular Tags