public JvmEnvironment GetEnvironment(jvmtiVersion version) { JniInvokeInterface jniInvokeInterface = GetRawInterface(); jvmtiEnvHandle env; int result = jniInvokeInterface.GetEnv(this, out env, version); JniErrorHandler.ThrowOnFailure(result); return(JvmEnvironment.GetOrCreateEnvironment(this, env)); }
public void Unsubscribe(JvmEventType eventType) { if (!_subscribedEvents.Remove(eventType)) { return; } if (_subscribedEvents.Count >= 1) { return; } JvmEnvironment environment = JvmEnvironment.GetCurrentInstance(); environment.EventManager.RemoveProcessor(this); }
public void Subscribe(JvmEventType eventType) { if (!_subscribedEvents.Add(eventType)) { return; } if (_subscribedEvents.Count > 1) { return; } _subscriber = OperationContext.Current.GetCallbackChannel <IJvmEvents>(); JvmEnvironment environment = JvmEnvironment.GetCurrentInstance(); environment.EventManager.AddProcessor(this); }
public override void HandleVMDeath(JvmEnvironment environment) { if (!_subscribedEvents.Contains(JvmEventType.VMDeath)) { return; } try { DispatcherFrame frame = new DispatcherFrame(true); IAsyncResult result = _subscriber.BeginHandleVMDeath(environment.VirtualMachine, environment.VirtualMachine.HandleAsyncOperationComplete, null); environment.VirtualMachine.PushDispatcherFrame(frame, environment, result); _subscriber.EndHandleVMDeath(result); } catch (CommunicationException) { } }
public override void HandleClassPrepare(JvmEnvironment environment, JvmThreadReference thread, JvmClassReference @class) { if (!_subscribedEvents.Contains(JvmEventType.ThreadEnd)) { return; } try { DispatcherFrame frame = new DispatcherFrame(true); IAsyncResult result = _subscriber.BeginHandleClassPrepare(environment.VirtualMachine, thread, @class, environment.VirtualMachine.HandleAsyncOperationComplete, null); environment.VirtualMachine.PushDispatcherFrame(frame, environment, result); _subscriber.EndHandleClassPrepare(result); } catch (CommunicationException) { } }
public override void HandleClassFileLoadHook(JvmEnvironment environment, JvmClassReference classBeingRedefined, JvmObjectReference loader, string name, JvmObjectReference protectionDomain) { }