/** * Copyright (c) 2017-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ package com.facebook.litho; import android.support.v4.util.SimpleArrayMap; /** * A class representing an event to log to a {@link ComponentsLogger}. There are two kind of events, * performance events and regular events. Performance events track the time between instantiation * and being logged while regular events do not. A {@link LogEvent} is created by requesting a new * event from the {@link ComponentsLogger} and they are recycled when logged and should not be * re-used. */ public final class LogEvent { private SimpleArrayMap<String, Object> mParams = new SimpleArrayMap<>(); private int mEventId = -1; private boolean mIsPerformanceEvent = false; LogEvent() {} void setEventId(int eventId) { mEventId = eventId; } void setIsPerformanceEvent(boolean performanceEvent) { mIsPerformanceEvent = performanceEvent; } void reset() { mParams.clear(); mEventId = -1; mIsPerformanceEvent = false; } public int getEventId() { return mEventId; } public boolean isPerformanceEvent() { return mIsPerformanceEvent; } public void addParam(String key, Object value) { mParams.put(key, value); } public int getParamCount() { return mParams.size(); } public String getParamKeyAt(int index) { return mParams.keyAt(index); } public <T> T getParamValueAt(int index) { return (T) mParams.valueAt(index); } public <T> T getParam(String paramMessage) { return (T) mParams.get(paramMessage); } @Override public String toString() { return "eventId = " + mEventId + ", isPerformanceEvent = " + mIsPerformanceEvent + ", params = " + mParams.toString(); } @Override public boolean equals(Object o) { if (o instanceof LogEvent) { final LogEvent other = (LogEvent) o; if (other.mEventId == mEventId && other.mIsPerformanceEvent == mIsPerformanceEvent) { for (int i = 0, count = mParams.size(); i < count; i++) { final String key = mParams.keyAt(i); if (other.mParams.containsKey(key)) { if (!mParams.get(key).equals(other.mParams.get(key))) { return false; } } } return true; } } return false; } }