@Test public void Advise() { // query for ConnectionPointContainer Unknown unk = new Unknown(this.ppWordApp.getValue()); PointerByReference ppCpc = new PointerByReference(); IID cpcIID = new IID("{B196B284-BAB4-101A-B69C-00AA00341D07}"); HRESULT hr = unk.QueryInterface(new REFIID.ByValue(cpcIID), ppCpc); COMUtils.checkRC(hr); ConnectionPointContainer cpc = new ConnectionPointContainer(ppCpc.getValue()); // find connection point for Application_Events4 IID appEvnts4 = new IID("{00020A01-0000-0000-C000-000000000046}"); REFIID riid = new REFIID(appEvnts4.getPointer()); PointerByReference ppCp = new PointerByReference(); hr = cpc.FindConnectionPoint(riid, ppCp); COMUtils.checkRC(hr); ConnectionPoint cp = new ConnectionPoint(ppCp.getValue()); IID cp_iid = new IID(); hr = cp.GetConnectionInterface(cp_iid); COMUtils.checkRC(hr); Application_Events4 listener = new Application_Events4(); DWORDByReference pdwCookie = new DWORDByReference(); hr = cp.Advise(listener, pdwCookie); COMUtils.checkRC(hr); Assert.assertTrue(listener.QueryInterface_called); }
@Test public void queryInterface_ConnectionPointContainer() { Unknown unk = new Unknown(this.ppWordApp.getValue()); PointerByReference ppCpc = new PointerByReference(); IID cpcIID = new IID("{B196B284-BAB4-101A-B69C-00AA00341D07}"); HRESULT hr = unk.QueryInterface(new REFIID.ByValue(cpcIID), ppCpc); COMUtils.checkRC(hr); ConnectionPointContainer cpc = new ConnectionPointContainer(ppCpc.getValue()); }
@Test public void FindConnectionPoint() { // query for ConnectionPointContainer Unknown unk = new Unknown(this.ppWordApp.getValue()); PointerByReference ppCpc = new PointerByReference(); IID cpcIID = new IID("{B196B284-BAB4-101A-B69C-00AA00341D07}"); HRESULT hr = unk.QueryInterface(new REFIID.ByValue(cpcIID), ppCpc); COMUtils.checkRC(hr); ConnectionPointContainer cpc = new ConnectionPointContainer(ppCpc.getValue()); // find connection point for Application_Events4 IID appEvnts4 = new IID("{00020A01-0000-0000-C000-000000000046}"); REFIID riid = new REFIID(appEvnts4.getPointer()); PointerByReference ppCp = new PointerByReference(); hr = cpc.FindConnectionPoint(riid, ppCp); COMUtils.checkRC(hr); ConnectionPoint cp = new ConnectionPoint(ppCp.getValue()); }
public static void init() { Add.init(); Address.init(); Align.init(); Alloc.init(); Anchor.init(); And.init(); Bad.init(); Bitcast.init(); Block.init(); Builtin.init(); Call.init(); Cmp.init(); Cond.init(); Confirm.init(); Const.init(); Conv.init(); CopyB.init(); Deleted.init(); Div.init(); Dummy.init(); End.init(); Eor.init(); Free.init(); IJmp.init(); Id.init(); Jmp.init(); Load.init(); Member.init(); Minus.init(); Mod.init(); Mul.init(); Mulh.init(); Mux.init(); NoMem.init(); Not.init(); Offset.init(); Or.init(); Phi.init(); Pin.init(); Proj.init(); Raise.init(); Return.init(); Sel.init(); Shl.init(); Shr.init(); Shrs.init(); Size.init(); Start.init(); Store.init(); Sub.init(); Switch.init(); Sync.init(); Tuple.init(); Unknown.init(); }
/** * Get File Type String by File Type Name. * * @param typeName ("Image"/"ConfigFile"/"LogFile" * @return * @throws CcException */ public static String getAcsFileTypeString(String typeName) { for (AcsFileType fileType : values()) { if (fileType.name().equals(typeName)) { return fileType.typeString; } } log.error("Invalid ACS File Type " + typeName + "!"); return Unknown.name(); }
public void visitUnknown(Unknown attribute) { attribute.accept(visitor); }
/** * Breaks-up the aggregate into its individual parts and returns them as a list. The parts are * returned based on the ordering of the aggregate itself. * * @return list of IRTMPEvent objects */ public LinkedList<IRTMPEvent> getParts() { LinkedList<IRTMPEvent> parts = new LinkedList<IRTMPEvent>(); log.trace("Aggregate data length: {}", data.limit()); int position = data.position(); do { try { // read the header // log.trace("Hex: {}", data.getHexDump()); byte subType = data.get(); // when we run into subtype 0 break out of here if (subType == 0) { log.debug("Subtype 0 encountered within this aggregate, processing with exit"); break; } int size = IOUtils.readUnsignedMediumInt(data); log.debug("Data subtype: {} size: {}", subType, size); // TODO ensure the data contains all the bytes to support the specified size int timestamp = IOUtils.readExtendedMediumInt(data); /*timestamp = ntohap((GETIBPOINTER(buffer) + 4)); 0x12345678 == 34 56 78 12*/ int streamId = IOUtils.readUnsignedMediumInt(data); log.debug("Data timestamp: {} stream id: {}", timestamp, streamId); Header partHeader = new Header(); partHeader.setChannelId(header.getChannelId()); partHeader.setDataType(subType); partHeader.setSize(size); // use the stream id from the aggregate's header partHeader.setStreamId(header.getStreamId()); partHeader.setTimer(timestamp); // timer delta == time stamp - timer base // the back pointer may be used to verify the size of the individual part // it will be equal to the data size + header size int backPointer = 0; switch (subType) { case TYPE_AUDIO_DATA: AudioData audio = new AudioData(data.getSlice(size)); audio.setTimestamp(timestamp); audio.setHeader(partHeader); log.debug("Audio header: {}", audio.getHeader()); parts.add(audio); // log.trace("Hex: {}", data.getHexDump()); // ensure 4 bytes left to read an int if (data.position() < data.limit() - 4) { backPointer = data.getInt(); // log.trace("Back pointer: {}", backPointer); if (backPointer != (size + 11)) { log.debug("Data size ({}) and back pointer ({}) did not match", size, backPointer); } } break; case TYPE_VIDEO_DATA: VideoData video = new VideoData(data.getSlice(size)); video.setTimestamp(timestamp); video.setHeader(partHeader); log.debug("Video header: {}", video.getHeader()); parts.add(video); // log.trace("Hex: {}", data.getHexDump()); // ensure 4 bytes left to read an int if (data.position() < data.limit() - 4) { backPointer = data.getInt(); // log.trace("Back pointer: {}", backPointer); if (backPointer != (size + 11)) { log.debug("Data size ({}) and back pointer ({}) did not match", size, backPointer); } } break; default: log.debug("Non-A/V subtype: {}", subType); Unknown unk = new Unknown(subType, data.getSlice(size)); unk.setTimestamp(timestamp); unk.setHeader(partHeader); parts.add(unk); // ensure 4 bytes left to read an int if (data.position() < data.limit() - 4) { backPointer = data.getInt(); } } position = data.position(); } catch (Exception e) { log.error("Exception decoding aggregate parts", e); break; } log.trace("Data position: {}", position); } while (position < data.limit()); log.trace("Aggregate processing complete, {} parts extracted", parts.size()); return parts; }