Write one string to a socket within 10 seconds or another string if the time is out

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty margin-bottom:0;







up vote
2
down vote

favorite












I have implemented a method which will send one data to the server if it (Raspberry Pi Pin Input HIGH, in this case) occurs within 10 seconds. If this doesn't happen within 10 seconds then I should send some other data.



This implementation works for me, but I think that there should be another better implementation.



ScheduledExecutorService timeoutScheduler = Executors.newScheduledThreadPool(1);

ScheduledFuture<?> timeoutHandler = timeoutScheduler.schedule(() ->
try
socketConnection.writeData("String that should be sent if time is out");
turnstileClosed.removeAllListeners();
timeoutScheduler.shutdownNow();
catch (IOException e)
e.printStackTrace();

, 10_000, TimeUnit.MILLISECONDS);

turnstileClosed.addListener((GpioPinListenerDigital) event ->
try
if (event.getState() == PinState.HIGH)
socketConnection.writeData("String that should be sent within 10 seconds");
timeoutHandler.cancel(true);
timeoutScheduler.shutdownNow();

catch (IOException e)
e.printStackTrace();

);

timeoutScheduler.awaitTermination(10_000, TimeUnit.MILLISECONDS);
turnstileClosed.removeAllListeners();






share|improve this question



























    up vote
    2
    down vote

    favorite












    I have implemented a method which will send one data to the server if it (Raspberry Pi Pin Input HIGH, in this case) occurs within 10 seconds. If this doesn't happen within 10 seconds then I should send some other data.



    This implementation works for me, but I think that there should be another better implementation.



    ScheduledExecutorService timeoutScheduler = Executors.newScheduledThreadPool(1);

    ScheduledFuture<?> timeoutHandler = timeoutScheduler.schedule(() ->
    try
    socketConnection.writeData("String that should be sent if time is out");
    turnstileClosed.removeAllListeners();
    timeoutScheduler.shutdownNow();
    catch (IOException e)
    e.printStackTrace();

    , 10_000, TimeUnit.MILLISECONDS);

    turnstileClosed.addListener((GpioPinListenerDigital) event ->
    try
    if (event.getState() == PinState.HIGH)
    socketConnection.writeData("String that should be sent within 10 seconds");
    timeoutHandler.cancel(true);
    timeoutScheduler.shutdownNow();

    catch (IOException e)
    e.printStackTrace();

    );

    timeoutScheduler.awaitTermination(10_000, TimeUnit.MILLISECONDS);
    turnstileClosed.removeAllListeners();






    share|improve this question























      up vote
      2
      down vote

      favorite









      up vote
      2
      down vote

      favorite











      I have implemented a method which will send one data to the server if it (Raspberry Pi Pin Input HIGH, in this case) occurs within 10 seconds. If this doesn't happen within 10 seconds then I should send some other data.



      This implementation works for me, but I think that there should be another better implementation.



      ScheduledExecutorService timeoutScheduler = Executors.newScheduledThreadPool(1);

      ScheduledFuture<?> timeoutHandler = timeoutScheduler.schedule(() ->
      try
      socketConnection.writeData("String that should be sent if time is out");
      turnstileClosed.removeAllListeners();
      timeoutScheduler.shutdownNow();
      catch (IOException e)
      e.printStackTrace();

      , 10_000, TimeUnit.MILLISECONDS);

      turnstileClosed.addListener((GpioPinListenerDigital) event ->
      try
      if (event.getState() == PinState.HIGH)
      socketConnection.writeData("String that should be sent within 10 seconds");
      timeoutHandler.cancel(true);
      timeoutScheduler.shutdownNow();

      catch (IOException e)
      e.printStackTrace();

      );

      timeoutScheduler.awaitTermination(10_000, TimeUnit.MILLISECONDS);
      turnstileClosed.removeAllListeners();






      share|improve this question













      I have implemented a method which will send one data to the server if it (Raspberry Pi Pin Input HIGH, in this case) occurs within 10 seconds. If this doesn't happen within 10 seconds then I should send some other data.



      This implementation works for me, but I think that there should be another better implementation.



      ScheduledExecutorService timeoutScheduler = Executors.newScheduledThreadPool(1);

      ScheduledFuture<?> timeoutHandler = timeoutScheduler.schedule(() ->
      try
      socketConnection.writeData("String that should be sent if time is out");
      turnstileClosed.removeAllListeners();
      timeoutScheduler.shutdownNow();
      catch (IOException e)
      e.printStackTrace();

      , 10_000, TimeUnit.MILLISECONDS);

      turnstileClosed.addListener((GpioPinListenerDigital) event ->
      try
      if (event.getState() == PinState.HIGH)
      socketConnection.writeData("String that should be sent within 10 seconds");
      timeoutHandler.cancel(true);
      timeoutScheduler.shutdownNow();

      catch (IOException e)
      e.printStackTrace();

      );

      timeoutScheduler.awaitTermination(10_000, TimeUnit.MILLISECONDS);
      turnstileClosed.removeAllListeners();








      share|improve this question












      share|improve this question




      share|improve this question








      edited Mar 22 at 15:14
























      asked Mar 21 at 10:26









      Khojiakbar

      113




      113

























          active

          oldest

          votes











          Your Answer




          StackExchange.ifUsing("editor", function ()
          return StackExchange.using("mathjaxEditing", function ()
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
          );
          );
          , "mathjax-editing");

          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "196"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          convertImagesToLinks: false,
          noModals: false,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );








           

          draft saved


          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f190116%2fwrite-one-string-to-a-socket-within-10-seconds-or-another-string-if-the-time-is%23new-answer', 'question_page');

          );

          Post as a guest



































          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes










           

          draft saved


          draft discarded


























           


          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f190116%2fwrite-one-string-to-a-socket-within-10-seconds-or-another-string-if-the-time-is%23new-answer', 'question_page');

          );

          Post as a guest













































































          Popular posts from this blog

          Greedy Best First Search implementation in Rust

          Function to Return a JSON Like Objects Using VBA Collections and Arrays

          C++11 CLH Lock Implementation