pw_transfer: Transfer handler classes

Initial versions of the data transfer handler classes.

Change-Id: I62b0852f4d80e94e5564e9fbbd1372b72d4ad0e1
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/49023
Pigweed-Auto-Submit: Wyatt Hepler <hepler@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
Reviewed-by: Alexei Frolov <frolv@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
diff --git a/pw_transfer/BUILD.bazel b/pw_transfer/BUILD.bazel
new file mode 100644
index 0000000..b8f52df
--- /dev/null
+++ b/pw_transfer/BUILD.bazel
@@ -0,0 +1,46 @@
+# Copyright 2021 The Pigweed Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+load(
+    "//pw_build:pigweed.bzl",
+    "pw_cc_library",
+    "pw_cc_test",
+)
+
+package(default_visibility = ["//visibility:public"])
+
+licenses(["notice"])  # Apache License 2.0
+
+pw_cc_library(
+    name = "pw_transfer",
+    hdrs = [
+        "public/pw_transfer/handler.h",
+    ],
+    includes = ["public"],
+    deps = [
+        "//pw_assert",
+        "//pw_containers:intrusive_list",
+        "//pw_status",
+        "//pw_stream",
+    ],
+)
+
+pw_cc_test(
+    name = "handler_test",
+    srcs = ["handler_test.cc"],
+    deps = [
+        ":pw_transfer",
+        "//pw_unit_test",
+    ],
+)