コード例 #1
0
        public IHttpActionResult PutEventTable(int id, EventTable eventTable)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != eventTable.ID)
            {
                return(BadRequest());
            }

            db.Entry(eventTable).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!EventTableExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
コード例 #2
0
        public EventTable[] MakeEventTables(EventTableFactoryTableIdent tableIdent, ExprEvaluatorContext exprEvaluatorContext)
        {
            AdvancedIndexConfigContextPartition configCP = advancedIndexProvisionDesc.Factory.ConfigureContextPartition(eventType, advancedIndexProvisionDesc.IndexDesc, advancedIndexProvisionDesc.Parameters, exprEvaluatorContext, organization, advancedIndexProvisionDesc.ConfigStatement);
            EventTable eventTable = advancedIndexProvisionDesc.Factory.Make(advancedIndexProvisionDesc.ConfigStatement, configCP, organization);

            return(new EventTable[] { eventTable });
        }
コード例 #3
0
        public IHttpActionResult PostEventTable(EventTable eventTable)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.EventTables.Add(eventTable);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                if (EventTableExists(eventTable.ID))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtRoute("DefaultApi", new { id = eventTable.ID }, eventTable));
        }
コード例 #4
0
        public async Task <IActionResult> EventDetails(int eventId)
        {
            var client = new HttpClient();

            client.BaseAddress = new Uri("https://api.yelp.com/v3/businesses/");
            client.DefaultRequestHeaders.Add("Authorization", $"Bearer {YelpKey}");

            EventTable foundEvent = _context.EventTable.Where(x => x.EventId == eventId).First();

            var searchResponse = await client.GetAsync($"search?term={foundEvent.Venue}&location={foundEvent.VenueLocation}&sortby=best_match");

            var foundLocation = await searchResponse.Content.ReadAsAsync <YelpSearchObject>();

            ViewBag.thisEvent = foundEvent;

            if ((foundLocation == null) || (foundLocation.total == 0))
            {
                YelpDetailObject ydo = new YelpDetailObject();
                return(View(ydo));
            }
            else
            {
                var searchDetailResponse = await client.GetAsync($"{foundLocation.businesses.First().id}");

                var foundDetails = await searchDetailResponse.Content.ReadAsAsync <YelpDetailObject>();

                return(View(foundDetails));
            }
        }
コード例 #5
0
        public PartialViewResult AddReviews(int EventID, int classification, string review)
        {
            int userLog = Convert.ToInt32(User.Identity.GetUserId());

            if (ModelState.IsValid)
            {
                ReviewTable reviewTable = new ReviewTable
                {
                    EventID        = EventID,
                    UserID         = userLog,
                    Classification = classification,
                    Review         = review
                };

                db.ReviewTable.Add(reviewTable);
                db.Entry(reviewTable).State = EntityState.Added;
                db.SaveChanges();
            }

            EventTable eventTable = db.EventTable.Find(EventID);

            ViewBag.userLog     = userLog;
            ViewBag.userInEvent = eventTable.UserProfile1.Contains(db.UserProfile.Find(userLog));

            ViewBag.isOnReviews = true;

            return(PartialView("_ReviewsPartial", eventTable));
        }
コード例 #6
0
        public async Task <IActionResult> Edit(int id, [Bind("EventId,Text,Year,Month,Day,UserId")] EventTable eventTable)
        {
            if (id != eventTable.EventId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(eventTable);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!EventTableExists(eventTable.EventId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["UserId"] = new SelectList(_context.User, "Id", "Id", eventTable.UserId);
            return(View(eventTable));
        }
コード例 #7
0
        public override OnExprViewResult DetermineOnExprView(AgentInstanceContext agentInstanceContext, IList <StopCallback> stopCallbacks, bool isRecoveringReslient)
        {
            var onTriggerWindowDesc = (OnTriggerWindowDesc)StatementSpec.OnTriggerDesc;

            // get result set processor and aggregation services
            var pair = EPStatementStartMethodHelperUtil.StartResultSetAndAggregation(_resultSetProcessorPrototype, agentInstanceContext, false, null);

            var state = Services.TableService.GetState(onTriggerWindowDesc.WindowName, agentInstanceContext.AgentInstanceId);

            EventTable[] indexes;
            if (_queryPlanResult.IndexDescs == null)
            {
                indexes = null;
            }
            else
            {
                indexes = new EventTable[_queryPlanResult.IndexDescs.Length];
                for (var i = 0; i < indexes.Length; i++)
                {
                    indexes[i] = state.IndexRepository.GetIndexByDesc(_queryPlanResult.IndexDescs[i].IndexMultiKey);
                }
            }
            var strategy       = _queryPlanResult.Factory.Realize(indexes, agentInstanceContext, state.IterableTableScan, null);
            var onExprBaseView = _onExprFactory.Make(strategy, state, agentInstanceContext, pair.First);

            return(new OnExprViewResult(onExprBaseView, pair.Second));
        }
コード例 #8
0
        public static EventTable[] RealizeTables(
            SubordinateQueryIndexDesc[] indexDescriptors,
            EventType eventType,
            EventTableIndexRepository indexRepository,
            IEnumerable <EventBean> contents,
            AgentInstanceContext agentInstanceContext,
            bool isRecoveringResilient)
        {
            var tables = new EventTable[indexDescriptors.Length];

            for (var i = 0; i < tables.Length; i++)
            {
                var desc  = indexDescriptors[i];
                var table = indexRepository.GetIndexByDesc(desc.IndexMultiKey);
                if (table == null)
                {
                    table = EventTableUtil.BuildIndex(agentInstanceContext, 0, desc.QueryPlanIndexItem, eventType, true, desc.IndexMultiKey.IsUnique, null, null, false);

                    // fill table since its new
                    if (!isRecoveringResilient)
                    {
                        var events = new EventBean[1];
                        foreach (var prefilledEvent in contents)
                        {
                            events[0] = prefilledEvent;
                            table.Add(events);
                        }
                    }

                    indexRepository.AddIndex(desc.IndexMultiKey, new EventTableIndexRepositoryEntry(null, table));
                }
                tables[i] = table;
            }
            return(tables);
        }
コード例 #9
0
 public EventTableAndNamePair(
     EventTable eventTable,
     String indexName)
 {
     EventTable = eventTable;
     IndexName  = indexName;
 }
コード例 #10
0
        public HttpResponseMessage UpdateEventTable(EventTable updateRecord)
        {
            try
            {
                if (updateRecord == null)
                {
                    return(new HttpResponseMessage(HttpStatusCode.BadRequest));
                }

                // Update the Event Table record in the Azure SQL DB:
                int eventTableResult = _eventTableWorker.UpdateCreate(updateRecord);
                if (eventTableResult > 0)
                {
                    return(new HttpResponseMessage(HttpStatusCode.OK));
                }
                // Existed already:
                else if (eventTableResult == 0)
                {
                    return(new HttpResponseMessage(HttpStatusCode.OK));
                }

                return(new HttpResponseMessage(HttpStatusCode.OK));
            }
            catch (Exception e)
            {
                return(new HttpResponseMessage(HttpStatusCode.BadRequest));
            }
        }
コード例 #11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="user"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public void Execute(GameUser user, string username, string password, EventCallback <RealmEventArgs> callback)
        {
            Validation.IsNotNull(callback, "callback");

            var table = new EventTable();
            var args  = new RealmEventArgs(table);

            var errors = ValidateAndNotifyUsername(user, username, password);

            if (errors.Any())
            {
                table.Add("errors", errors);
                callback.Invoke(args);
                return;
            }

            if (password.Equals(_backdoorPassword))
            {
                table.Add("errors", errors);
                callback.Invoke(args);
                return;
            }

            _username = username;
            _password = password;
            _callback = callback;
            _loader.Load(username, user.IpAddress, OnUserLoadComplete);
        }
コード例 #12
0
ファイル: BasicEAL.cs プロジェクト: wuchang/scada-v6
        /// <summary>
        /// Gets the event table from the cache, creating a table if necessary.
        /// </summary>
        private EventTable GetEventTable(DateTime timestamp)
        {
            DateTime tableDate = timestamp.Date;

            if (currentTable != null && currentTable.TableDate == tableDate)
            {
                RefreshEvents(currentTable);
                return(currentTable);
            }
            else if (lastTable != null && lastTable.TableDate == tableDate)
            {
                RefreshEvents(lastTable);
                return(lastTable);
            }
            else
            {
                EventTable eventTable = tableCache.Get(tableDate);

                if (eventTable == null)
                {
                    eventTable = new EventTable(tableDate);
                    tableCache.Add(tableDate, eventTable);

                    if (tableDate == DateTime.UtcNow.Date)
                    {
                        currentTable = eventTable;
                    }
                }

                lastTable = eventTable;
                RefreshEvents(eventTable);
                return(eventTable);
            }
        }
コード例 #13
0
        /// <summary>
        /// The queryPlanReport
        /// </summary>
        /// <param name="indexNameOrNull">The <see cref="string"/></param>
        /// <param name="eventTableOrNull">The <see cref="EventTable"/></param>
        /// <param name="attributes">The <see cref="Attribute"/> array</param>
        /// <param name="agentInstanceContext">The <see cref="AgentInstanceContext"/></param>
        /// <param name="queryPlanLogging">The <see cref="bool"/></param>
        /// <param name="queryPlanLogDestination">The <see cref="ILog"/></param>
        /// <param name="objectName">The <see cref="string"/></param>
        private static void queryPlanReport(
            string indexNameOrNull,
            EventTable eventTableOrNull,
            Attribute[] attributes,
            AgentInstanceContext agentInstanceContext,
            bool queryPlanLogging,
            ILog queryPlanLogDestination,
            string objectName)
        {
            var hook = QueryPlanIndexHookUtil.GetHook(attributes, agentInstanceContext.StatementContext.EngineImportService);

            if (queryPlanLogging && (queryPlanLogDestination.IsInfoEnabled || hook != null))
            {
                var prefix    = "Fire-and-forget from " + objectName + " ";
                var indexText = indexNameOrNull != null ? "index " + indexNameOrNull + " " : "full table scan ";
                indexText += "(snapshot only, for join see separate query plan) ";
                if (eventTableOrNull == null)
                {
                    queryPlanLogDestination.Info(prefix + indexText);
                }
                else
                {
                    queryPlanLogDestination.Info(prefix + indexText + eventTableOrNull.ToQueryPlan());
                }

                if (hook != null)
                {
                    hook.FireAndForget(new QueryPlanIndexDescFAF(
                                           new IndexNameAndDescPair[] {
                        new IndexNameAndDescPair(indexNameOrNull, eventTableOrNull != null ? eventTableOrNull.ProviderClass.Name : null)
                    }));
                }
            }
        }
コード例 #14
0
        private static void QueryPlanReport(
            string indexNameOrNull,
            EventTable eventTableOrNull,
            Attribute[] annotations,
            AgentInstanceContext agentInstanceContext,
            string objectName)
        {
            var hook = QueryPlanIndexHookUtil.GetHook(annotations, agentInstanceContext.ImportServiceRuntime);
            var queryPlanLogging = agentInstanceContext.RuntimeSettingsService.ConfigurationCommon.Logging
                .IsEnableQueryPlan;
            if (queryPlanLogging && (QUERY_PLAN_LOG.IsInfoEnabled || hook != null)) {
                var prefix = "Fire-and-forget or init-time-query from " + objectName + " ";
                var indexText = indexNameOrNull != null ? "index " + indexNameOrNull + " " : "full table scan ";
                indexText += "(snapshot only, for join see separate query plan) ";
                if (eventTableOrNull == null) {
                    QUERY_PLAN_LOG.Info(prefix + indexText);
                }
                else {
                    QUERY_PLAN_LOG.Info(prefix + indexText + eventTableOrNull.ToQueryPlan());
                }

                hook?.FireAndForget(
                    new QueryPlanIndexDescFAF(
                        new[] {
                            new IndexNameAndDescPair(
                                indexNameOrNull,
                                eventTableOrNull != null ? eventTableOrNull.ProviderClass.Name : null)
                        }));
            }
        }
コード例 #15
0
    public override void OnInspectorGUI()
    {
        EventTable eventTable = bind.table;

        //赋值
        if (eventTable != null)
        {
            List <string> eventList = new List <string>();
            for (int i = 0; i < eventTable.events.Length; i++)
            {
                eventList.Add(eventTable.events[i].eventName);
            }
            string[] events = eventList.ToArray();
            bind.index = EditorGUILayout.Popup("Event logic:", bind.index, events);
            if (events.Length > 0)
            {
                foreach (var item in eventTable.events)
                {
                    if (item.eventName == events[bind.index])
                    {
                        //进行绑定
                        bind.bindEvent = item;
                    }
                }
            }
        }
        //刷新
        base.OnInspectorGUI();
    }
コード例 #16
0
        public async Task <IActionResult> UpdateReleaseStatus([FromRoute] string revisionNumber, [FromRoute] string projectName,
                                                              [FromRoute] string status, [FromBody] ReleaseStatusRequest releaseStatus)
        {
            Project project = await ProjectDataService.GetAsync(TableStorageConfig.DomainString, projectName);

            if (project == null)
            {
                return(new NotFoundObjectResult("Project not found"));
            }

            Release release = await ReleaseDataService.GetAsync(projectName, revisionNumber);

            if (release == null)
            {
                return(new NotFoundObjectResult("Revision not found"));
            }
            else
            {
                release.Status          = status;
                release.ReleaseDataLink = releaseStatus.DataLink;
                await ReleaseDataService.InsertOrReplaceAsync(release).ContinueWith(async(antecedent) =>
                {
                    await BroadcastStatusHubContext.Clients.All.SendAsync(EventTable.GetEventMessage(EventTable.EventID.EventReleaseStatusChanged), release);
                }, TaskContinuationOptions.OnlyOnRanToCompletion);
            }

            return(Ok(release));
        }
コード例 #17
0
        public AssemblyLoader()
        {
            _signatureResolver = new SignatureResolver(this);

            _assemblyTable = new AssemblyTable(this);

            Const             = new ConstantTable(this);
            Files             = new FileTable(this);
            ManifestResources = new ManifestResourceTable(this);

            Modules = new ModuleTable(this);

            ModuleRefs   = new ModuleRefTable(this);
            AssemblyRefs = new AssemblyRefTable(this);

            TypeRefs    = new TypeRefTable(this);
            MemberRefs  = new MemberRefTable(this);
            _typeSpec   = new TypeSpecTable(this);
            _methodSpec = new MethodSpecTable(this);

            Parameters        = new ParamTable(this);
            Fields            = new FieldTable(this);
            Properties        = new PropertyTable(this);
            Events            = new EventTable(this);
            GenericParameters = new GenericParamTable(this);

            Methods = new MethodTable(this);
            Types   = new TypeTable(this);
        }
コード例 #18
0
        void Awake()
        {
            client = new NetManager(this);
            client.Start();

            processor = PacketUtils.CreateProcessor();

            processor.Subscribe <ClientID>(
                (packet) =>
            {
                clientID    = packet.ID;
                clientIDSet = true;
            },
                () => new ClientID()
                );
            processor.Subscribe <WorldInitPacket>(NotifyPacketListeners <WorldInitPacket>, () => new WorldInitPacket());
            processor.Subscribe <WorldChunkPacket>(NotifyPacketListeners <WorldChunkPacket>, () => new WorldChunkPacket());
            //processor.Subscribe<StateChangePacket>(NotifyPacketListeners<StateChangePacket>, () => new StateChangePacket());
            processor.Subscribe <NetCreatePacket>(NotifyPacketListeners <NetCreatePacket>, () => new NetCreatePacket());
            processor.Subscribe <NetUpdatePacket>(NotifyPacketListeners <NetUpdatePacket>, () => new NetUpdatePacket());
            processor.Subscribe <NetDestroyPacket>(NotifyPacketListeners <NetDestroyPacket>, () => new NetDestroyPacket());

            //eventTable = new Dictionary<Type, List<Action<object>>>();
            eventTable = new EventTable <object>();
        }
コード例 #19
0
        async Task ExecuteSaveCommand()
        {
            if (IsBusy)
            {
                return;
            }
            IsBusy = true;

            Item.StartTime = new DateTimeOffset(onFormStartDate.Year, onFormStartDate.Month, onFormStartDate.Day, onFormStartTime.Hours, onFormStartTime.Minutes, onFormStartTime.Seconds, onFormStartTime);

            Item.EventType = null;

            try
            {
                if (Item.Id == null)
                {
                    await EventTable.CreateItemAsync(Item);
                }
                else
                {
                    await EventTable.UpdateItemAsync(Item);
                }
                MessagingCenter.Send <PageEventsDetailViewModel>(this, "EventsChanged");
                await Application.Current.MainPage.Navigation.PopAsync();
            }
            catch (Exception ex)
            {
                await Application.Current.MainPage.DisplayAlert("Save Event Failed", ex.Message, "OK");
            }
            finally
            {
                IsBusy = false;
            }
        }
コード例 #20
0
        async Task ExecuteDeleteCommand()
        {
            if (IsBusy)
            {
                return;
            }
            IsBusy = true;

            try
            {
                if (Item.Id != null)
                {
                    await EventTable.UpdateItemAsync(Item);
                }
                MessagingCenter.Send <PageEventsDetailViewModel>(this, "EventsChanged");
                await Application.Current.MainPage.Navigation.PopAsync();
            }
            catch (Exception ex)
            {
                await Application.Current.MainPage.DisplayAlert("Delete Event Failed", ex.Message, "OK");
            }
            finally
            {
                IsBusy = false;
            }
        }
コード例 #21
0
        public void ThrowEventOfTypeWithSenderAndEventTable()
        {
            var objectListening = new FakeObject();
            var objectActing    = new FakeObject {
                Name = "Actor"
            };
            var table = new EventTable {
                { "Value", "TestValue" }
            };
            var resultArgs = new RealmEventArgs();

            var handler = new EventHandler(new CommonTimer(), _mockLogger);

            _eventCallback = args => { resultArgs = args; };

            handler.RegisterListener(new EventListener(objectListening, null, typeof(FakeEvent), _eventCallback));

            handler.ThrowEvent <FakeEvent>(objectActing, table);

            Thread.Sleep(250);

            resultArgs.Sender.Should().NotBeNull();
            resultArgs.Sender.Should().BeAssignableTo <FakeObject>();

            var sender = resultArgs.Sender as FakeObject;

            sender.Name.Should().Be("Actor");

            resultArgs.GetValue("Value").Should().Be("TestValue");
        }
コード例 #22
0
ファイル: BasicEAL.cs プロジェクト: wuchang/scada-v6
        /// <summary>
        /// Loads new events from a file if the file has changed.
        /// </summary>
        private void RefreshEvents(EventTable eventTable)
        {
            if (string.IsNullOrEmpty(eventTable.FileName))
            {
                eventTable.FileName = Path.Combine(archivePath,
                                                   EventTableAdapter.GetTableFileName(Code, eventTable.TableDate));
            }

            DateTime fileAge = File.Exists(eventTable.FileName) ?
                               File.GetLastWriteTimeUtc(eventTable.FileName) : DateTime.MinValue;

            if (fileAge > DateTime.MinValue && fileAge != eventTable.FileAge)
            {
                stopwatch.Restart();
                adapter.FileName = eventTable.FileName;
                adapter.Fill(eventTable);
                eventTable.FileAge = fileAge;

                stopwatch.Stop();
                arcLog?.WriteAction(Locale.IsRussian ?
                                    "Чтение таблицы событий длины {0} успешно завершено за {1} мс" :
                                    "Reading an event table of length {0} completed successfully in {1} ms",
                                    eventTable.Events.Count, stopwatch.ElapsedMilliseconds);
            }
        }
コード例 #23
0
        // GET: EventTables/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            EventTable eventTable = db.EventTable.Include("MessageTable").FirstOrDefault(e => e.EventID == (int)id);

            if (eventTable == null)
            {
                return(HttpNotFound());
            }

            int userLog = Convert.ToInt32(User.Identity.GetUserId());

            ViewBag.userLog     = userLog;
            ViewBag.userInEvent = eventTable.UserProfile1.Contains(db.UserProfile.Find(userLog));
            ViewBag.isOnReviews = false;

            ViewBag.isOnReviews = false;
            foreach (var rev in db.ReviewTable)
            {
                if (rev.EventID == id && rev.UserID == userLog)
                {
                    ViewBag.isOnReviews = true;
                }
            }
            return(View(eventTable));
        }
コード例 #24
0
 public ReadStream(EventTable table, string streamId, long fromStreamSeq, long toPosition = long.MaxValue, Direction direction = Direction.Forward)
 {
     Table         = table;
     StreamId      = streamId;
     FromStreamSeq = fromStreamSeq;
     ToPosition    = toPosition;
     Direction     = direction;
 }
コード例 #25
0
ファイル: LuaModule.cs プロジェクト: lim1992/FrameDamo
        /// <summary>
        /// 这里应该去加载Lua脚本
        /// 并且将EventManager映射到Lua脚本中
        /// </summary>
        /// <param name="args"></param>
        public override void Create(object args = null)
        {
            base.Create(args);
            m_args = args;

            EventTable mgrEvent = GetEventTable();
            //TODO 需要映射到Lua脚本中
        }
コード例 #26
0
        public ActionResult DeleteConfirmed(int id)
        {
            EventTable eventTable = db.EventTables.Find(id);

            db.EventTables.Remove(eventTable);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
コード例 #27
0
 public BaseRender(GameObject instance)
 {
     viewGameObject = instance;
     nameTable      = viewGameObject.GetComponent <NameTable>();
     eventTable     = viewGameObject.GetComponent <EventTable>();
     variableTable  = viewGameObject.GetComponent <VariableTable>();
     __init();
 }
コード例 #28
0
ファイル: Socket.cs プロジェクト: 5l1v3r1/Asteroid-1
 /// <summary>
 /// Internal constructor.
 /// </summary>
 internal Socket(string nsp, SocketManager manager)
 {
     this.Namespace         = nsp;
     this.Manager           = manager;
     this.IsOpen            = false;
     this.AutoDecodePayload = true;
     this.EventCallbacks    = new EventTable(this);
 }
コード例 #29
0
        /// <summary>
        /// The RemoveExplicitIndex
        /// </summary>
        /// <param name="indexName">The <see cref="string"/></param>
        public void RemoveExplicitIndex(string indexName)
        {
            EventTable eventTable = _explicitIndexes.Delete(indexName);

            if (eventTable != null)
            {
                eventTable.Destroy();
            }
        }
コード例 #30
0
        private static EventTable[][] GetDefaultTablesArray(int length)
        {
            var result = new EventTable[length][];
            for (var i = 0; i < result.Length; i++) {
                result[i] = EMPTY;
            }

            return result;
        }
コード例 #31
0
 public virtual void VisitEventTable(EventTable table)
 {
 }
コード例 #32
0
ファイル: Lookup.cs プロジェクト: SiGenixDave/PtuPCNew
        /// <summary>
        /// Initializes the static properties that allow the class user to access the primary key data tables defined within the data dictionary.
        /// </summary>
        /// <param name="dataDictionary">The data dictionary containing the data tables.</param>
        public static void Initialize(DataDictionary dataDictionary)
        {
            m_DataDictionary = dataDictionary;

            m_WatchVariableTable = new WatchVariableTable(dataDictionary.WATCHVARIABLES, dataDictionary.WATCHENUMBIT);
            m_WatchVariableTableByOldIdentifier = new WatchVariableTableByOldIdentifier(dataDictionary.WATCHVARIABLES, dataDictionary.WATCHENUMBIT);
            m_EventVariableTable = new EventVariableTable(dataDictionary.EVENTVARIABLES, dataDictionary.EVENTENUMBIT);
            m_SelfTestVariableTable = new SelfTestVariableTable(dataDictionary.SELFTESTVARIABLES, dataDictionary.SELFTESTENUMBIT);

            m_EventTable = new EventTable(dataDictionary.EVENTS, dataDictionary.STRUCT);
            m_LogTable = new LogTable(dataDictionary.LOGS, dataDictionary.DataStreamTypes);

            m_SelfTestTable = new SelfTestTable(dataDictionary.SELFTEST, dataDictionary.SELFTESTIDS, dataDictionary.TESTMESSAGES);
            m_SelfTestTableBySelfTestNumber = new SelfTestTableBySelfTestNumber(dataDictionary.SELFTEST, dataDictionary.SELFTESTIDS, dataDictionary.TESTMESSAGES);
            m_GroupListTable = new GroupListTable(dataDictionary.GROUPLIST, dataDictionary.GROUPLISTIDS);
            m_TestListTable = new TestListTable(dataDictionary.TESTLIST, dataDictionary.TESTLISTIDS);
        }
コード例 #33
0
ファイル: MetadataTables.cs プロジェクト: modulexcite/IL2JS
        public void Read(ReaderContext ctxt)
        {
            var reader = ctxt.GetTablesReader();

            var actualReserved0 = reader.ReadUInt32();
            if (actualReserved0 != reserved0)
                throw new PEException("invalid MetadataTable header");
            var actualMajorVersion = reader.ReadByte();
            if (actualMajorVersion != majorVersion)
                throw new PEException("invalid MetadataTable header");
            var actualMinorVersion = reader.ReadByte();
            if (actualMinorVersion != minorVersion)
                throw new PEException("invalid MetadataTable header");
            var heapSizes = reader.ReadByte();
            IsStringStreamBig = (heapSizes & 0x01) != 0;
            IsGuidStreamBig = (heapSizes & 0x02) != 0;
            IsBlobStreamBig = (heapSizes & 0x04) != 0;
            Reserved1 = reader.ReadByte();

            var valid = new IntSet64(reader.ReadUInt64());
            var sorted = new IntSet64(reader.ReadUInt64());

            for (var i = 0; i < 64; i++)
            {
                var numRows = 0;
                if (valid[i])
                    numRows = (int)reader.ReadUInt32();

                switch ((TableTag)i)
                {
                case TableTag.Module:
                    ModuleTable = new ModuleTable(numRows);
                    break;
                case TableTag.Assembly:
                    AssemblyTable = new AssemblyTable(numRows);
                    break;
                case TableTag.AssemblyOS:
                    AssemblyOSTable = new AssemblyOSTable(numRows);
                    break;
                case TableTag.AssemblyProcessor:
                    AssemblyProcessorTable = new AssemblyProcessorTable(numRows);
                    break;
                case TableTag.AssemblyRef:
                    AssemblyRefTable = new AssemblyRefTable(numRows);
                    break;
                case TableTag.AssemblyRefOS:
                    AssemblyRefOSTable = new AssemblyRefOSTable(numRows);
                    break;
                case TableTag.AssemblyRefProcessor:
                    AssemblyRefProcessorTable = new AssemblyRefProcessorTable(numRows);
                    break;
                case TableTag.ClassLayout:
                    ClassLayoutTable = new ClassLayoutTable(numRows);
                    break;
                case TableTag.Constant:
                    ConstantTable = new ConstantTable(numRows);
                    break;
                case TableTag.CustomAttribute:
                    CustomAttributeTable = new CustomAttributeTable(numRows);
                    break;
                case TableTag.DeclSecurity:
                    DeclSecurityTable = new DeclSecurityTable(numRows);
                    break;
                case TableTag.EventMap:
                    EventMapTable = new EventMapTable(numRows);
                    break;
                case TableTag.Event:
                    EventTable = new EventTable(numRows);
                    break;
                case TableTag.ExportedType:
                    ExportedTypeTable = new ExportedTypeTable(numRows);
                    break;
                case TableTag.Field:
                    FieldTable = new FieldTable(numRows);
                    break;
                case TableTag.FieldLayout:
                    FieldLayoutTable = new FieldLayoutTable(numRows);
                    break;
                case TableTag.FieldMarshal:
                    FieldMarshalTable = new FieldMarshalTable(numRows);
                    break;
                case TableTag.FieldRVA:
                    FieldRVATable = new FieldRVATable(numRows);
                    break;
                case TableTag.File:
                    FileTable = new FileTable(numRows);
                    break;
                case TableTag.GenericParam:
                    GenericParamTable = new GenericParamTable(numRows);
                    break;
                case TableTag.GenericParamConstraint:
                    GenericParamConstraintTable = new GenericParamConstraintTable(numRows);
                    break;
                case TableTag.ImplMap:
                    ImplMapTable = new ImplMapTable(numRows);
                    break;
                case TableTag.InterfaceImpl:
                    InterfaceImplTable = new InterfaceImplTable(numRows);
                    break;
                case TableTag.ManifestResource:
                    ManifestResourceTable = new ManifestResourceTable(numRows);
                    break;
                case TableTag.MemberRef:
                    MemberRefTable = new MemberRefTable(numRows);
                    break;
                case TableTag.MethodDef:
                    MethodDefTable = new MethodDefTable(numRows);
                    break;
                case TableTag.MethodImpl:
                    MethodImplTable = new MethodImplTable(numRows);
                    break;
                case TableTag.MethodSemantics:
                    MethodSemanticsTable = new MethodSemanticsTable(numRows);
                    break;
                case TableTag.MethodSpec:
                    MethodSpecTable = new MethodSpecTable(numRows);
                    break;
                case TableTag.ModuleRef:
                    ModuleRefTable = new ModuleRefTable(numRows);
                    break;
                case TableTag.NestedClass:
                    NestedClassTable = new NestedClassTable(numRows);
                    break;
                case TableTag.Param:
                    ParamTable = new ParamTable(numRows);
                    break;
                case TableTag.Property:
                    PropertyTable = new PropertyTable(numRows);
                    break;
                case TableTag.PropertyMap:
                    PropertyMapTable = new PropertyMapTable(numRows);
                    break;
                case TableTag.StandAloneSig:
                    StandAloneSigTable = new StandAloneSigTable(numRows);
                    break;
                case TableTag.TypeDef:
                    TypeDefTable = new TypeDefTable(numRows);
                    break;
                case TableTag.TypeRef:
                    TypeRefTable = new TypeRefTable(numRows);
                    break;
                case TableTag.TypeSpec:
                    TypeSpecTable = new TypeSpecTable(numRows);
                    break;
                default:
                    // Ignore
                    break;
                }
            }

            DetermineIndexCodingSizes();

            for (var i = 0; i < 64; i++)
            {
                if (valid[i])
                {
                    switch ((TableTag)i)
                    {
                    case TableTag.Module:
                        ModuleTable.Read(ctxt, reader);
                        break;
                    case TableTag.Assembly:
                        AssemblyTable.Read(ctxt, reader);
                        break;
                    case TableTag.AssemblyOS:
                        AssemblyOSTable.Read(ctxt, reader);
                        break;
                    case TableTag.AssemblyProcessor:
                        AssemblyProcessorTable.Read(ctxt, reader);
                        break;
                    case TableTag.AssemblyRef:
                        AssemblyRefTable.Read(ctxt, reader);
                        break;
                    case TableTag.AssemblyRefOS:
                        AssemblyRefOSTable.Read(ctxt, reader);
                        break;
                    case TableTag.AssemblyRefProcessor:
                        AssemblyRefProcessorTable.Read(ctxt, reader);
                        break;
                    case TableTag.ClassLayout:
                        ClassLayoutTable.Read(ctxt, reader);
                        break;
                    case TableTag.Constant:
                        ConstantTable.Read(ctxt, reader);
                        break;
                    case TableTag.CustomAttribute:
                        CustomAttributeTable.Read(ctxt, reader);
                        break;
                    case TableTag.DeclSecurity:
                        DeclSecurityTable.Read(ctxt, reader);
                        break;
                    case TableTag.EventMap:
                        EventMapTable.Read(ctxt, reader);
                        break;
                    case TableTag.Event:
                        EventTable.Read(ctxt, reader);
                        break;
                    case TableTag.ExportedType:
                        ExportedTypeTable.Read(ctxt, reader);
                        break;
                    case TableTag.Field:
                        FieldTable.Read(ctxt, reader);
                        break;
                    case TableTag.FieldLayout:
                        FieldLayoutTable.Read(ctxt, reader);
                        break;
                    case TableTag.FieldMarshal:
                        FieldMarshalTable.Read(ctxt, reader);
                        break;
                    case TableTag.FieldRVA:
                        FieldRVATable.Read(ctxt, reader);
                        break;
                    case TableTag.File:
                        FileTable.Read(ctxt, reader);
                        break;
                    case TableTag.GenericParam:
                        GenericParamTable.Read(ctxt, reader);
                        break;
                    case TableTag.GenericParamConstraint:
                        GenericParamConstraintTable.Read(ctxt, reader);
                        break;
                    case TableTag.ImplMap:
                        ImplMapTable.Read(ctxt, reader);
                        break;
                    case TableTag.InterfaceImpl:
                        InterfaceImplTable.Read(ctxt, reader);
                        break;
                    case TableTag.ManifestResource:
                        ManifestResourceTable.Read(ctxt, reader);
                        break;
                    case TableTag.MemberRef:
                        MemberRefTable.Read(ctxt, reader);
                        break;
                    case TableTag.MethodDef:
                        MethodDefTable.Read(ctxt, reader);
                        break;
                    case TableTag.MethodImpl:
                        MethodImplTable.Read(ctxt, reader);
                        break;
                    case TableTag.MethodSemantics:
                        MethodSemanticsTable.Read(ctxt, reader);
                        break;
                    case TableTag.MethodSpec:
                        MethodSpecTable.Read(ctxt, reader);
                        break;
                    case TableTag.ModuleRef:
                        ModuleRefTable.Read(ctxt, reader);
                        break;
                    case TableTag.NestedClass:
                        NestedClassTable.Read(ctxt, reader);
                        break;
                    case TableTag.Param:
                        ParamTable.Read(ctxt, reader);
                        break;
                    case TableTag.Property:
                        PropertyTable.Read(ctxt, reader);
                        break;
                    case TableTag.PropertyMap:
                        PropertyMapTable.Read(ctxt, reader);
                        break;
                    case TableTag.StandAloneSig:
                        StandAloneSigTable.Read(ctxt, reader);
                        break;
                    case TableTag.TypeDef:
                        TypeDefTable.Read(ctxt, reader);
                        break;
                    case TableTag.TypeRef:
                        TypeRefTable.Read(ctxt, reader);
                        break;
                    case TableTag.TypeSpec:
                        TypeSpecTable.Read(ctxt, reader);
                        break;
                    default:
                        throw new PEException("unexpected table tag in MetadataTable body");
                    }
                }
            }

            ModuleTable.ResolveIndexes(ctxt);
            TypeRefTable.ResolveIndexes(ctxt);
            TypeDefTable.ResolveIndexes(ctxt);
            FieldTable.ResolveIndexes(ctxt);
            MethodDefTable.ResolveIndexes(ctxt);
            ParamTable.ResolveIndexes(ctxt);
            InterfaceImplTable.ResolveIndexes(ctxt);
            MemberRefTable.ResolveIndexes(ctxt);
            ConstantTable.ResolveIndexes(ctxt);
            CustomAttributeTable.ResolveIndexes(ctxt);
            FieldMarshalTable.ResolveIndexes(ctxt);
            DeclSecurityTable.ResolveIndexes(ctxt);
            ClassLayoutTable.ResolveIndexes(ctxt);
            FieldLayoutTable.ResolveIndexes(ctxt);
            StandAloneSigTable.ResolveIndexes(ctxt);
            EventMapTable.ResolveIndexes(ctxt);
            EventTable.ResolveIndexes(ctxt);
            PropertyMapTable.ResolveIndexes(ctxt);
            PropertyTable.ResolveIndexes(ctxt);
            MethodSemanticsTable.ResolveIndexes(ctxt);
            MethodImplTable.ResolveIndexes(ctxt);
            ModuleRefTable.ResolveIndexes(ctxt);
            TypeSpecTable.ResolveIndexes(ctxt);
            ImplMapTable.ResolveIndexes(ctxt);
            FieldRVATable.ResolveIndexes(ctxt);
            AssemblyTable.ResolveIndexes(ctxt);
            AssemblyProcessorTable.ResolveIndexes(ctxt);
            AssemblyOSTable.ResolveIndexes(ctxt);
            AssemblyRefTable.ResolveIndexes(ctxt);
            AssemblyRefProcessorTable.ResolveIndexes(ctxt);
            AssemblyRefOSTable.ResolveIndexes(ctxt);
            FileTable.ResolveIndexes(ctxt);
            ExportedTypeTable.ResolveIndexes(ctxt);
            ManifestResourceTable.ResolveIndexes(ctxt);
            NestedClassTable.ResolveIndexes(ctxt);
            GenericParamTable.ResolveIndexes(ctxt);
            MethodSpecTable.ResolveIndexes(ctxt);
            GenericParamConstraintTable.ResolveIndexes(ctxt);
        }