11defmodule NervesHubWeb.DeviceSocket do
22 use Phoenix.Socket
3+ use OpenTelemetryDecorator
34
45 require Logger
56
@@ -26,6 +27,7 @@ defmodule NervesHubWeb.DeviceSocket do
2627 end
2728
2829 @ impl Phoenix.Socket.Transport
30+ @ decorate with_span ( "Channels.DeviceSocket.terminate" )
2931 def terminate ( reason , { _channels_info , socket } = state ) do
3032 on_disconnect ( reason , socket )
3133 super ( reason , state )
@@ -40,6 +42,7 @@ defmodule NervesHubWeb.DeviceSocket do
4042 super ( msg , { state , socket } )
4143 end
4244
45+ @ decorate with_span ( "Channels.DeviceSocket.heartbeat" )
4346 defp heartbeat (
4447 % Phoenix.Socket.Message { topic: "phoenix" , event: "heartbeat" } ,
4548 % { assigns: % { device: device } } = socket
@@ -77,6 +80,7 @@ defmodule NervesHubWeb.DeviceSocket do
7780
7881 # Used by Devices connecting with SSL certificates
7982 @ impl Phoenix.Socket
83+ @ decorate with_span ( "Channels.DeviceSocket.connect" )
8084 def connect ( _params , socket , % { peer_data: % { ssl_cert: ssl_cert } } )
8185 when not is_nil ( ssl_cert ) do
8286 X509.Certificate . from_der! ( ssl_cert )
@@ -96,6 +100,7 @@ defmodule NervesHubWeb.DeviceSocket do
96100 end
97101
98102 # Used by Devices connecting with HMAC Shared Secrets
103+ @ decorate with_span ( "Channels.DeviceSocket.connect" )
99104 def connect ( _params , socket , % { x_headers: x_headers } )
100105 when is_list ( x_headers ) and length ( x_headers ) > 0 do
101106 headers = Map . new ( x_headers )
@@ -208,6 +213,7 @@ defmodule NervesHubWeb.DeviceSocket do
208213 { :ok , socket }
209214 end
210215
216+ @ decorate with_span ( "Channels.DeviceSocket.on_connect" )
211217 defp on_connect ( socket ) do
212218 :telemetry . execute ( [ :nerves_hub , :devices , :connect ] , % { count: 1 } , % {
213219 ref_id: socket . assigns . reference_id ,
@@ -223,6 +229,7 @@ defmodule NervesHubWeb.DeviceSocket do
223229 assign ( socket , :device , device )
224230 end
225231
232+ @ decorate with_span ( "Channels.DeviceSocket.on_disconnect" )
226233 defp on_disconnect ( { :error , reason } , % { assigns: % { device: device , reference_id: reference_id } } ) do
227234 if reason == { :shutdown , :disconnected } do
228235 :telemetry . execute ( [ :nerves_hub , :devices , :duplicate_connection ] , % { count: 1 } , % {
@@ -236,10 +243,12 @@ defmodule NervesHubWeb.DeviceSocket do
236243 :ok
237244 end
238245
246+ @ decorate with_span ( "Channels.DeviceSocket.on_disconnect" )
239247 defp on_disconnect ( _ , % { assigns: % { device: device , reference_id: reference_id } } ) do
240248 shutdown ( device , reference_id )
241249 end
242250
251+ @ decorate with_span ( "Channels.DeviceSocket.shutdown" )
243252 defp shutdown ( device , reference_id ) do
244253 :telemetry . execute ( [ :nerves_hub , :devices , :disconnect ] , % { count: 1 } , % {
245254 ref_id: reference_id ,
0 commit comments