From 458205de439d48a2cc090fc6aa194b55428d3315 Mon Sep 17 00:00:00 2001 From: Jonas Thiel Date: Tue, 24 Nov 2015 10:26:27 +0100 Subject: [PATCH] Add basic UDP connection --- lib/linr.rb | 1 + lib/linr/connection.rb | 1 + lib/linr/connection/udp.rb | 22 ++++++++++++++++++++++ spec/connection/udp_spec.rb | 18 ++++++++++++++++++ 4 files changed, 42 insertions(+) create mode 100644 lib/linr/connection.rb create mode 100644 lib/linr/connection/udp.rb create mode 100644 spec/connection/udp_spec.rb diff --git a/lib/linr.rb b/lib/linr.rb index 85557c9..752140b 100644 --- a/lib/linr.rb +++ b/lib/linr.rb @@ -1,4 +1,5 @@ require "linr/version" +require "linr/connection" # A simple UDP client for InfluxDB module Linr diff --git a/lib/linr/connection.rb b/lib/linr/connection.rb new file mode 100644 index 0000000..32d45d4 --- /dev/null +++ b/lib/linr/connection.rb @@ -0,0 +1 @@ +require "linr/connection/udp" diff --git a/lib/linr/connection/udp.rb b/lib/linr/connection/udp.rb new file mode 100644 index 0000000..fb87307 --- /dev/null +++ b/lib/linr/connection/udp.rb @@ -0,0 +1,22 @@ +module Linr + module Connection + class UDP + # Use non-custom flags + SEND_FLAGS = 0 + + # Establishes a connection + # @param host [String] + # @param port [Fixnum] + def initialize(host, port) + @socket = UDPSocket.new + @socket.connect(host, port) + end + + # Send arbitrary data ober the UDP connection + # @param data [String] + def send(data) + @socket.send(data, SEND_FLAGS) + end + end + end +end diff --git a/spec/connection/udp_spec.rb b/spec/connection/udp_spec.rb new file mode 100644 index 0000000..5d71dc2 --- /dev/null +++ b/spec/connection/udp_spec.rb @@ -0,0 +1,18 @@ +require "spec_helper" + +describe ::Linr::Connection::UDP do + subject { ::Linr::Connection::UDP.new(host, port) } + let(:host) { "127.0.0.1" } + let(:port) { 44_000 } + let(:socket) { UDPSocket.new } + + before do + socket.bind(host, port) + end + + it "sends data as passed" do + payload = "measurement,foo=bar,bat=baz value=12,otherval=21 1439587925" + subject.send(payload) + socket.recvfrom(60).first.must_equal payload + end +end