rendered paste body
class CrossDomainProxy {
public CrossDomainProxy (AppDomain domain, UnmanagedEventHandler handler)
{
Console.WriteLine ("Created proxy in domain {0}", domain.FriendlyName);
this.domain = domain;
this.handler = handler;
_wrapper = new UnmanagedEventHandler (wrapper);
}
public UnmanagedEventHandler Wrapper {
get { return _wrapper; }
}
void wrapper (IntPtr target, IntPtr calldata, IntPtr closure) {
Console.WriteLine ("wrapper called in domain {0}", AppDomain.CurrentDomain.FriendlyName);
Console.WriteLine (" + domain = {0}", domain.FriendlyName);
this.target = target;
this.calldata = calldata;
this.closure = closure;
domain.DoCallBack (new CrossAppDomainDelegate (call_in_target_domain));
}
void call_in_target_domain ()
{
Console.WriteLine ("call_in_target_domain called in domain {0}", AppDomain.CurrentDomain.FriendlyName);
handler (target, calldata, closure);
}
AppDomain domain;
UnmanagedEventHandler handler;
UnmanagedEventHandler _wrapper;
IntPtr target;
IntPtr calldata;
IntPtr closure;
}