A semantic search engine for source code https://bitshift.benkurtovic.com/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

72 lines
1.7 KiB

  1. package com.bitshift.parsing.parsers;
  2. import java.util.Formatter;
  3. import java.io.BufferedReader;
  4. import java.io.BufferedWriter;
  5. import java.io.InputStreamReader;
  6. import java.io.OutputStreamWriter;
  7. import java.io.IOException;
  8. import java.nio.ByteBuffer;
  9. import java.net.Socket;
  10. import com.bitshift.parsing.symbols.Symbols;
  11. public abstract class Parser implements Runnable {
  12. protected Socket clientSocket;
  13. private String eos;
  14. public Parser(Socket clientSocket) {
  15. this.clientSocket = clientSocket;
  16. }
  17. protected String readFromClient() {
  18. String fromClient = "";
  19. try {
  20. BufferedReader clientReader = new BufferedReader(
  21. new InputStreamReader(this.clientSocket.getInputStream()));
  22. int bytes = Integer.parseInt(clientReader.readLine());
  23. this.eos = clientReader.readLine();
  24. StringBuilder builder = new StringBuilder();
  25. int i = 0;
  26. while(i < bytes) {
  27. char aux = (char)clientReader.read();
  28. builder.append(aux);
  29. i++;
  30. }
  31. fromClient = builder.toString();
  32. } catch (IOException ex) {
  33. }
  34. return fromClient;
  35. }
  36. protected void writeToClient(String toClient) {
  37. try {
  38. BufferedWriter clientWriter = new BufferedWriter(
  39. new OutputStreamWriter(this.clientSocket.getOutputStream()));
  40. clientWriter.write(toClient);
  41. clientWriter.write(eos);
  42. clientWriter.flush();
  43. this.clientSocket.close();
  44. } catch (IOException ex) {
  45. }
  46. }
  47. protected abstract Symbols genSymbols();
  48. public abstract void run();
  49. }