Add buffer for notification channels

This commit is contained in:
Omar Roth 2019-06-03 13:36:49 -05:00
parent d197497349
commit d6ec441c8e
No known key found for this signature in database
GPG Key ID: B8254FB7EC3D37F2
2 changed files with 11 additions and 9 deletions

View File

@ -186,7 +186,7 @@ spawn do
end end
end end
connection_channel = Channel({Bool, Channel(PQ::Notification)}).new connection_channel = Channel({Bool, Channel(PQ::Notification)}).new(32)
spawn do spawn do
connections = [] of Channel(PQ::Notification) connections = [] of Channel(PQ::Notification)

View File

@ -662,7 +662,7 @@ def copy_in_chunks(input, output, chunk_size = 4096)
end end
def create_notification_stream(env, proxies, config, kemal_config, decrypt_function, topics, connection_channel) def create_notification_stream(env, proxies, config, kemal_config, decrypt_function, topics, connection_channel)
connection = Channel(PQ::Notification).new connection = Channel(PQ::Notification).new(8)
connection_channel.send({true, connection}) connection_channel.send({true, connection})
locale = LOCALES[env.get("preferences").as(Preferences).locale]? locale = LOCALES[env.get("preferences").as(Preferences).locale]?
@ -750,6 +750,10 @@ def create_notification_stream(env, proxies, config, kemal_config, decrypt_funct
video_id = notification["videoId"].as_s video_id = notification["videoId"].as_s
published = notification["published"].as_i64 published = notification["published"].as_i64
if !topics.try &.includes? topic
next
end
video = get_video(video_id, PG_DB, proxies) video = get_video(video_id, PG_DB, proxies)
video.published = Time.unix(published) video.published = Time.unix(published)
response = JSON.parse(video.to_json(locale, config, Kemal.config, decrypt_function)) response = JSON.parse(video.to_json(locale, config, Kemal.config, decrypt_function))
@ -763,7 +767,6 @@ def create_notification_stream(env, proxies, config, kemal_config, decrypt_funct
end end
end end
if topics.try &.includes? topic
env.response.puts "id: #{id}" env.response.puts "id: #{id}"
env.response.puts "data: #{response.to_json}" env.response.puts "data: #{response.to_json}"
env.response.puts env.response.puts
@ -771,7 +774,6 @@ def create_notification_stream(env, proxies, config, kemal_config, decrypt_funct
id += 1 id += 1
end end
end
rescue ex rescue ex
ensure ensure
connection_channel.send({false, connection}) connection_channel.send({false, connection})