コード例 #1
0
ファイル: EventQueueImpl.cs プロジェクト: mdae/MonoRT
        Event DecodeEventInfo(WireProtocol.EventInfo info)
        {
            EventRequest req = FindRequest(info.requestId);

            if (info.eventKind == WireProtocol.EVENT_VM_START)
            {
                WireProtocol.VMStartEventInfo einfo = (WireProtocol.VMStartEventInfo)info;
                return(new VMStartEventImpl(vm, req, new ThreadReferenceImpl(vm, einfo.thread), new AppDomainMirrorImpl(vm, einfo.domain)));
            }
            else if (info.eventKind == WireProtocol.EVENT_VM_DEATH)
            {
                return(new VMDeathEventImpl(vm, req));
            }
            else if (info.eventKind == WireProtocol.EVENT_THREAD_START)
            {
                WireProtocol.ThreadStartEventInfo einfo = (WireProtocol.ThreadStartEventInfo)info;
                return(new ThreadStartEventImpl(vm, req, new ThreadReferenceImpl(vm, einfo.thread)));
            }
            else if (info.eventKind == WireProtocol.EVENT_THREAD_DEATH)
            {
                WireProtocol.ThreadDeathEventInfo einfo = (WireProtocol.ThreadDeathEventInfo)info;
                return(new ThreadDeathEventImpl(vm, req, new ThreadReferenceImpl(vm, einfo.thread)));
            }
            else
            {
                throw new NotImplementedException();
            }
        }
コード例 #2
0
 internal void RemoveRequest(EventRequest req, int id)
 {
     lock (requests_lock) {
         requests.Remove(id);
     }
 }
コード例 #3
0
 internal void AddRequest(EventRequest req, int id)
 {
     lock (requests_lock) {
         requests [id] = req;
     }
 }