cc_library(
    name = "epoll",
    srcs = ["epoll.cc"],
    hdrs = ["epoll.h"],
    visibility = ["//visibility:public"],
    deps = [
        "//aos/time",
        "@com_github_google_glog//:glog",
    ],
)

cc_library(
    name = "raw-event-loop",
    hdrs = ["raw-event-loop.h"],
    deps = [
        "//aos:queues",
        "//aos/time",
    ],
)

cc_library(
    name = "event-loop",
    srcs = ["event-loop-tmpl.h"],
    hdrs = [
        "event-loop.h",
        "raw-event-loop.h",
    ],
    visibility = ["//visibility:public"],
    deps = [
        ":raw-event-loop",
        "//aos:queues",
        "//aos/time",
    ],
)

cc_library(
    name = "shm-event-loop",
    srcs = ["shm-event-loop.cc"],
    hdrs = ["shm-event-loop.h"],
    visibility = ["//visibility:public"],
    deps = [
        ":epoll",
        ":event-loop",
        "//aos:init",
        "//aos:queues",
        "//aos/logging",
        "//aos/util:phased_loop",
    ],
)

cc_test(
    name = "shm-event-loop_test",
    srcs = ["shm-event-loop_test.cc"],
    shard_count = 5,
    deps = [
        ":event-loop_param_test",
        ":shm-event-loop",
        "//aos/testing:test_shm",
    ],
)

cc_library(
    name = "event-loop_param_test",
    testonly = True,
    srcs = ["event-loop_param_test.cc"],
    hdrs = ["event-loop_param_test.h"],
    deps = [
        ":event-loop",
        "//aos/logging:queue_logging",
        "//aos/testing:googletest",
    ],
)

cc_test(
    name = "simulated_event_loop_test",
    srcs = ["simulated-event-loop_test.cc"],
    deps = [
        ":event-loop_param_test",
        ":simulated_event_loop",
        "//aos/testing:googletest",
    ],
)

cc_library(
    name = "simulated_event_loop",
    testonly = True,
    srcs = ["simulated-event-loop.cc"],
    hdrs = ["simulated-event-loop.h"],
    visibility = ["//visibility:public"],
    deps = [
        ":event-loop",
        "//aos:queues",
        "//aos/logging",
        "//aos/testing:test_logging",
        "//aos/util:phased_loop",
    ],
)
