A semantic search engine for source code https://bitshift.benkurtovic.com/
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 
 
 

85 行
2.1 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.net.Socket;
  9. import com.bitshift.parsing.symbols.Symbols;
  10. import com.bitshift.parsing.utils.PackableMemory;
  11. public abstract class Parser implements Runnable {
  12. protected Socket clientSocket;
  13. public Parser(Socket clientSocket) {
  14. this.clientSocket = clientSocket;
  15. }
  16. protected String readFromClient() {
  17. String fromClient = "";
  18. try {
  19. BufferedReader clientReader = new BufferedReader(
  20. new InputStreamReader(this.clientSocket.getInputStream()));
  21. int bytes = Integer.parseInt(clientReader.readLine());
  22. StringBuilder builder = new StringBuilder();
  23. int i = 0;
  24. while(i < bytes) {
  25. char aux = (char)clientReader.read();
  26. builder.append(aux);
  27. i++;
  28. }
  29. fromClient = builder.toString();
  30. } catch (IOException ex) {
  31. }
  32. return fromClient;
  33. }
  34. public String escapeUnicode(String input) {
  35. StringBuilder b = new StringBuilder(input.length());
  36. Formatter f = new Formatter(b);
  37. for (char c : input.toCharArray()) {
  38. if (c < 128) {
  39. b.append(c);
  40. } else {
  41. f.format("\\u%04x", (int) c);
  42. }
  43. }
  44. return b.toString();
  45. }
  46. protected void writeToClient(String toClient) {
  47. try {
  48. BufferedWriter clientWriter = new BufferedWriter(
  49. new OutputStreamWriter(this.clientSocket.getOutputStream()));
  50. PackableMemory mem = new PackableMemory(4);
  51. mem.pack(toClient.length(), 0);
  52. String dataSize = new String(mem.mem);
  53. clientWriter.write(toClient);
  54. clientWriter.flush();
  55. this.clientSocket.close();
  56. } catch (IOException ex) {
  57. }
  58. }
  59. protected abstract Symbols genSymbols();
  60. public abstract void run();
  61. }