protected virtual void ProcessMessage(string type, JObject data, byte[] dataBytes) { switch (type) { case "log": var msg = data.ToObject <FridaLog>(); OnConsole?.Invoke(msg.level, msg.payload); break; default: JToken payload; data.TryGetValue("payload", out payload); OnMessage?.Invoke(type, payload, dataBytes); break; } }
void OnScriptMessage(IntPtr messagePtr, IntPtr data, UInt32 dataSize) { try { var message = messagePtr.ReadStringAndFree(); byte[] dataBytes = null; if (data != IntPtr.Zero) { dataBytes = new byte[dataSize]; Marshal.Copy(data, dataBytes, 0, (int)dataSize); } var payload = JsonConvert.DeserializeObject <JObject>(message); JToken type; if (!payload.TryGetValue("type", out type) || type.Type != JTokenType.String) { return; } ProcessMessage(type.Value <string>(), payload, dataBytes); } catch (Exception ex) { OnConsole?.Invoke("error", "ERROR PROCESSING MESSAGE: " + ex.Message); } }
public static void InvokeConsole(string msg) => OnConsole?.Invoke(msg);
internal static void CallWriteCallback(IModManifest manifest, string text) { OnConsole?.Invoke(manifest, text); }