protected void readHeader(NetworkDataRepresentation ndr) { if (ndr.readUnsignedSmall() != CONNECTION_ORIENTED_MAJOR_VERSION) { throw new IllegalStateException("Version mismatch."); } // read minor version setMinorVersion(ndr.readUnsignedSmall()); if (getType() != ndr.readUnsignedSmall()) { throw new IllegalArgumentException("Incorrect PDU type."); } setFlags(ndr.readUnsignedSmall()); Format format = ndr.readFormat(false); setFormat(format); ndr.setFormat(format); setFragmentLength(ndr.readUnsignedShort()); setAuthenticatorLength(ndr.readUnsignedShort()); this.callId = ((int) ndr.readUnsignedLong()); }
public void encode(NetworkDataRepresentation ndr, NdrBuffer dst) { ndr.setBuffer(dst); ndr.setFormat(getFormat()); writePdu(ndr); NdrBuffer buffer = ndr.getBuffer(); int length = buffer.getLength(); setFragmentLength(length); // write the header lengths, now that we know them. buffer.setIndex(FRAG_LENGTH_OFFSET); ndr.writeUnsignedShort(length); ndr.writeUnsignedShort(getAuthenticatorLength()); buffer.setIndex(length); }
System.arraycopy(stub, index, fragmentStub, 0, allocation); fragment.setStub(fragmentStub); int flags = getFlags() & ~(PFC_FIRST_FRAG | PFC_LAST_FRAG); if (index == 0) flags |= PFC_FIRST_FRAG; index += allocation; if (index >= stub.length) flags |= PFC_LAST_FRAG; fragment.setFlags(flags); fragment.setCallId(callId);
protected void writeHeader ( NetworkDataRepresentation ndr ) { ndr.writeUnsignedSmall ( (short)getMajorVersion () ); ndr.writeUnsignedSmall ( (short)getMinorVersion () ); ndr.writeUnsignedSmall ( (short)getType () ); ndr.writeUnsignedSmall ( (short)getFlags () ); ndr.writeFormat ( false ); // skip the fragment and auth lengths, since we don't have them yet. ndr.writeUnsignedShort ( 0 ); ndr.writeUnsignedShort ( 0 ); ndr.writeUnsignedLong ( useCallIdCounter ? callIdCounter++ : callId ); }
ndr.setFormat(((RequestCoPdu) request).getFormat()); workerObject.setOpnum(((RequestCoPdu) request).getOpnum()); ResponseCoPdu responseCoPdu = new ResponseCoPdu(); responseCoPdu.setContextId(((RequestCoPdu) request).getContextId()); responseCoPdu.setFormat(((RequestCoPdu) request).getFormat()); responseCoPdu.setCallId(((RequestCoPdu) request).getCallId()); ((NdrObject)workerObject).encode(ndr,null); int length = ndr.getBuffer().length > ndr.getBuffer().index ? ndr.getBuffer().length : ndr.getBuffer().index; response.setCallId(((RequestCoPdu) request).getCallId()); ((FaultCoPdu)response).setStatus(e.getHResult()); switch(request.getType())
if ((pdu = context.accept(recieved)) != null) switch(pdu.getType())
public ConnectionOrientedPdu accept(ConnectionOrientedPdu pdu) throws IOException { ConnectionOrientedPdu reply = null; switch (pdu.getType()) { case BindPdu.BIND_TYPE: established = true; ((BindAcknowledgePdu)reply).setResultList(result); ((BindAcknowledgePdu)reply).setCallId(pdu.getCallId()); break; case AlterContextPdu.ALTER_CONTEXT_TYPE: ((AlterContextResponsePdu)reply).setCallId(pdu.getCallId());
public ConnectionOrientedPdu accept(ConnectionOrientedPdu pdu) throws IOException { ConnectionOrientedPdu reply = null; switch (pdu.getType()) { case BindPdu.BIND_TYPE: established = true; ((BindAcknowledgePdu)reply).setResultList(result); ((BindAcknowledgePdu)reply).setCallId(pdu.getCallId()); break; case AlterContextPdu.ALTER_CONTEXT_TYPE: ((AlterContextResponsePdu)reply).setCallId(pdu.getCallId());
public Object next() { if (currentFragment == null) { throw new NoSuchElementException(); } try { return currentFragment; } finally { if (currentFragment.getFlag( ConnectionOrientedPdu.PFC_LAST_FRAG)) { currentFragment = null; } else { try { //fragLengthOfReceiveBuffer = -1;//clear the buffer here. //System.out.println("VIKRAM VIKRAM "); if (logger.isLoggable(Level.FINEST)) { logger.finest("[Fragmented Packet] [" + i++ + "] recieved , fragment decomposition is below:- "); } currentFragment = receiveFragment(transport); } catch (Exception ex) { throw new IllegalStateException(); } } } } public void remove() {
ConnectionOrientedPdu reply = receive(); if (reply instanceof ResponseCoPdu) { ndr.setFormat(reply.getFormat());
public Auth3Pdu() { //Really useless value setCallId(0); } public int getType() {
public boolean getFlag ( int flag ) { return ( getFlags () & flag ) != 0; }
protected void transmitFragment ( ConnectionOrientedPdu fragment, Transport transport ) throws IOException { transmitBuffer.reset (); fragment.encode ( ndr, transmitBuffer ); processOutgoing (); //jcifs.util.Hexdump.hexdump(System.err, transmitBuffer.getBuffer(), 0, transmitBuffer.length); if ( logger.isLoggable ( Level.FINEST ) ) { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream (); jcifs.util.Hexdump.hexdump ( new PrintStream ( byteArrayOutputStream ), transmitBuffer.getBuffer (), 0, transmitBuffer.length ); logger.finest ( "[TRANSMIT BUFFER]:-\n" + byteArrayOutputStream.toString () ); } transport.send ( transmitBuffer ); }
pdu.decode ( ndr, bufferToBeUsed ); return pdu;
protected void writeHeader(NetworkDataRepresentation ndr) { ndr.writeUnsignedSmall((short) getMajorVersion()); ndr.writeUnsignedSmall((short) getMinorVersion()); ndr.writeUnsignedSmall((short) getType()); ndr.writeUnsignedSmall((short) getFlags()); ndr.writeFormat(false); // skip the fragment and auth lengths, since we don't have them yet. ndr.writeUnsignedShort(0); ndr.writeUnsignedShort(0); ndr.writeUnsignedLong(useCallIdCounter ? callIdCounter++ : callId); }
if ((pdu = context.accept(recieved)) != null) switch(pdu.getType())
public ConnectionOrientedPdu accept(ConnectionOrientedPdu pdu) throws IOException { ConnectionOrientedPdu reply = null; switch (pdu.getType()) { case BindPdu.BIND_TYPE: established = true; ((BindAcknowledgePdu)reply).setResultList(result); ((BindAcknowledgePdu)reply).setCallId(pdu.getCallId()); ((AlterContextResponsePdu)reply).setCallId(pdu.getCallId());