рдЕрдм рдЪрд╛рд░ рдорд╣реАрдиреЗ рд╕реЗ рдореИрдВ "рдмреНрд▓реЙрдХрдЪреЗрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рд░рдХрд╛рд░реА рдФрд░ рдФрджреНрдпреЛрдЧрд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдкреНрд░рдмрдВрдзрди рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕" рдирд╛рдордХ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЕрдм рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдФрд░ рдЕрдм рдореИрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред
рд▓реЗрдЦреЛрдВ рдХреА рд╢реГрдВрдЦрд▓рд╛ рдореЗрдВ рдпрд╣ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╣реИред рдпрд╣рд╛рдВ рдореИрдВ рд╕рд░реНрд╡рд░ рдФрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд╛рдардХ рдЗрди рдмреНрд▓реЙрдХрдЪреЗрди рддрддреНрд╡реЛрдВ рдХрд╛ рдЕрдкрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рднреА рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИред
рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓, рдбрд┐рдЬрд┐рдЯрд▓ рдмреНрд░реЗрдХрдереНрд░реВ рд╣реИрдХрдереЙрди рдореЗрдВ, рд╡реЗ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдЬрд░ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрджреНрдпреЛрдЧ рдФрд░ рдбрд┐рдЬрд┐рдЯрд▓ рдЕрд░реНрдерд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд▓реЗрдХрд░ рдЖрдП; рдЗрдиреЛрд╡реЗрд╢рди рдЕрд╕рд┐рд╕реНрдЯреЗрдВрд╕ рдлрдВрдб рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрджрд╛рди рднреА рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдореБрдЭреЗ рдПрдХ рдЕрд▓рдЧ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП) рдЕрдиреБрджрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрднреА рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ), рдФрд░ рдЕрдм рдХреНрд░рдо рдореЗрдВред
рд╡рд┐рдХрд╛рд╕ рдЧреЛ рднрд╛рд╖рд╛ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЬрд┐рд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдмреНрд▓реЙрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВ рд╡рд╣ рд▓реЗрд╡рд▓рдбреАрдмреА рд╣реИред
рдореБрдЦреНрдп рднрд╛рдЧ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИрдВ, рд╕рд░реНрд╡рд░ (рдЬреЛ рдЯреАрд╕реАрдкреА рдФрд░ рд╡реЗрдмрд╕реЙрдХреЗрдЯ рдЪрд▓рд╛рддрд╛ рд╣реИ - рдкрд╣рд▓рд╛ рдмреНрд▓реЙрдХрдЪреЗрди рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рд▓реЗрдирджреЗрди рдФрд░ рдХрдорд╛рдВрдб рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдПред
рдЬреИрд╕рд╛ рдХрд┐ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕ рдмреНрд▓реЙрдХрдЪреЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛рдУрдВ рдФрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ, рдпрд╛ рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╣реА рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдФрд░ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдпреЗ рд▓реЛрдЧ рдПрдХ-рджреВрд╕рд░реЗ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЬрд▓реНрджреА рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддреЗред рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдп рдХреЗрд╡рд▓ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреЗ рд╕рд╛рде "рдЪреЗрдХрдмреБрдХ" рдмрдирд╛рдирд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рд╣реИ рдЬреЛ рдЙрддреНрдкрд╛рдж рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдмрд╛рдЗрдЯрдХреЛрдб, рдЬреИрд╕рд╛ рдХрд┐ рдмреНрд▓реЙрдХрдЪреЗрди рдХреЗ рд╕рд╛рде рдкреНрд░рдерд╛рдЧрдд рд╣реИ, рд▓реЗрдирджреЗрди рдХреЗ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд▓реЗрдирджреЗрди рд╕реНрд╡рдпрдВ рдмреНрд▓реЙрдХ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрд╡рд▓рдбреАрдмреА рдореЗрдВ рдмреНрд▓реЙрдХ рдЬреАрдУрдмреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреВрд░реНрд╡-рдПрдиреНрдХреЛрдбреЗрдб рд╣реЛрддреЗ рд╣реИрдВ)ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ рд╕рд░реНрд╡рд░ (рдЙрд░реНрдл рдиреЛрдб) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХрд╛ рдкреВрд░рд╛ рдЙрджреНрджреЗрд╢реНрдп рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдХреБрдЫ рдбреЗрдЯрд╛, рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдмреНрд▓реЙрдХ рдпрд╛ рд▓реЗрдирджреЗрди рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддрд╛рдХрд┐ рдиреЛрдб рдХреЛ рдкрддрд╛ рдЪрд▓реЗ рдХрд┐ рдпрд╣ рдХреМрди рд╣реИ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕рд╛рдп рдХрд░рдирд╛ рд╣реИ (рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП рдЬреБрдбрд╝реЗ рдиреЛрдбреНрд╕ рдХреЛ "рдкрдбрд╝реЛрд╕реА" рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рдЖрдИрдкреА рдЬреНрдЮрд╛рдд рд╣реИ рдФрд░ рдЙрдирдХрд╛ рд░рд╛рдЬреНрдп рдбреЗрдЯрд╛ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ)ред
рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреА рд╕рдордЭ рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ (рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рд▓рд┐рдирдХреНрд╕ рдЙрдиреНрд╣реЗрдВ рдХрд╣рддрд╛ рд╣реИ) рдХреЛ рдкреИрдХреЗрдЬ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдЧреЛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡реЗ рдкреИрдХреЗрдЬ рдлрд╝реЛрд▓реНрдбрд░_рдирд╛рдо_рдЬрд╣рд╛рдВ_рдпрд╣_рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд┐рдд рд╣реИ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рдЖрдк рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдкреИрдХреЗрдЬ рдлрд╝реАрдб рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред рдЦреИрд░, рдпрд╣ рднрд╛рд╖рд╛ рдЬрд╛рдирдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИред рдпреЗ рдкреИрдХреЗрдЬ рд╣реИрдВ:
- рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрдЪрд╛рд░ (рд╕рд░реНрд╡рд░, рдХреНрд▓рд╛рдЗрдВрдЯ, рдкреНрд░реЛрдЯреЛрдХреЙрд▓)
- рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдбреЗрдЯрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛рдПрдВ (рдмреНрд▓реЙрдХ, рд▓реЗрдирджреЗрди)
- рдбреЗрдЯрд╛рдмреЗрд╕ (рдмреНрд▓реЙрдХрдЪреЗрди)
- рд╕рд░реНрд╡рд╕рдореНрдорддрд┐
- рд╕реНрдЯреИрдХреНрдб рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди (xvm)
- рд╕рд╣рд╛рдпрдХ (рдХреНрд░рд┐рдкреНрдЯреЛ, рдкреНрд░рдХрд╛рд░) рдЕрднреА рдХреЗ рд▓рд┐рдП рдмрд╕ рдЗрддрдирд╛ рд╣реАред
рдпрд╣ рдПрдХ рд╢реИрдХреНрд╖рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЗрд╕рдореЗрдВ рдЕрдВрддрд░-рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдФрд░ рдХрдИ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдШрдЯрдХреЛрдВ рдХрд╛ рдЕрднрд╛рд╡ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрд░рдЪрдирд╛ рдЙрд╕реА рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╡рд┐рдХрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЖрдЧреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдФрд░ рдЕрдм рд╕рд░реНрд╡рд░ рдХреЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдФрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓.
рдЖрдЗрдП рдкрд╣рд▓реЗ рд╕рд░реНрд╡рд░ рдХреЛ рджреЗрдЦреЗрдВред
рд╕рд░реНрд╡рд░ рд╕рдмрд░реВрдЯреАрди рдПрдХ рдбреЗрдЯрд╛ рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкреИрдХреЗрдЬ рд╕реЗ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреАрд╕реАрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред
рд░реВрдЯреАрди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: рд╕рд░реНрд╡рд░, рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рдкреНрд░рдХрд╛рд░. рдкреИрдХреЗрдЬ рдореЗрдВ рд╣реА tcp_server.go рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдкрд░реЛрд╕реЗрдВ.
type Serve struct {
Port string
BufSize int
ST *types.Settings
}
рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
- рдиреЗрдЯрд╡рд░реНрдХ рдкреЛрд░реНрдЯ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
- JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓
- рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реНрд▓реИрдЧ рдХрд░реЗрдВ (рдирд┐рдЬреА рдмреНрд▓реЙрдХрдЪреЗрди)
рдкреНрд░рдЧрддрд┐:
- JSON рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрдврд╝рддрд╛ рд╣реИ
- рдбрд┐рдмрдЧ рдореЛрдб рдлрд╝реНрд▓реИрдЧ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ: рдпрджрд┐ рдпрд╣ рд╕реЗрдЯ рд╣реИ, рддреЛ рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рд╢реЗрдбреНрдпреВрд▓рд░ рд▓реЙрдиреНрдЪ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдмреНрд▓реЙрдХрдЪреЗрди рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ
- рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдФрд░ рд╕рд░реНрд╡рд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛
рд╕рд░реНрд╡рд░
- рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЯреАрд╕реАрдкреА рд╕рд░реНрд╡рд░ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХрд╛ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред
- рдЗрд╕рдореЗрдВ рдПрдХ рд╕рд░реНрд╡ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкреЛрд░реНрдЯ рдирдВрдмрд░, рдПрдХ рдмрдлрд░ рдЖрдХрд╛рд░ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд╢рд╛рдорд┐рд▓ рд╣реИ рдкреНрд░рдХрд╛рд░.рд╕реЗрдЯрд┐рдВрдЧреНрд╕
- рд░рди рд╡рд┐рдзрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рд╢реБрд░реВ рдХрд░рддреА рд╣реИ (рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреЛрд░реНрдЯ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕реБрдирдирд╛, рдЬрдм рдПрдХ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдПрдХ рдирдП рдереНрд░реЗрдб рдореЗрдВ рдирд┐рдЬреА рд╣реИрдВрдбрд▓ рд╡рд┐рдзрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ)
- ╨Т рд╕рдВрднрд╛рд▓рдирд╛ рдХрдиреЗрдХреНрд╢рди рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдмрдлрд░ рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдкреНрд░реЛрдЯреЛрдХреЙрд▓.рд╡рд┐рдХрд▓реНрдк
- рдкреНрд░реЛрдЯреЛрдХреЙрд▓.рд╡рд┐рдХрд▓реНрдк рд░рд┐рдЯрд░реНрди рдкрд░рд┐рдгрд╛рдо рдпрд╛ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ. рдкрд░рд┐рдгрд╛рдо рдлрд┐рд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓.рд╡реНрдпрд╛рдЦреНрдпрд╛рдЬреЛ рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИ intrpr - рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рдбреЗрдЯрд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ, рдпрд╛ рдЪрдпрди рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ
- рдлрд┐рд░ рд╕реНрд╡рд┐рдЪ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ intrpr.рдХрдорд╛рдВрдб[0] рдЬреЛ рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ: рдкрд░рд┐рдгрд╛рдо, рдЖрдордВрддреНрд░рдг, рддреНрд░реБрдЯрд┐ рдФрд░ рдПрдХ рдЕрдиреБрднрд╛рдЧ рд╣реИ рдЪреВрдХ
- рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡рд┐рдЪ рдорд╛рди рд╕реЗ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ intrpr.рдХрдорд╛рдВрдб[1] рдЬреЛ рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдмрдлрд╝рд░рд▓реЗрдВрде ╨╕ рд╕рдВрд╕реНрдХрд░рдг (рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)
рдХрд╛рд░реНрдп рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ╨╕ рдмрдлрд╝рд░рд▓рдВрдмрд╛рдИ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИрдВ srvlib.go рд╕рд░реНрд╡рд░ рдкреИрдХреЗрдЬ
GetVersion(conn net.Conn, version string)
рдпрд╣ рдмрд╕ рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкрд╛рд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреЗрдЬрддрд╛ рд╣реИ:
conn.Write([]byte("result:" + version))
.
рд╕рдорд╛рд░реЛрд╣
BufferLength(conn net.Conn, intrpr *protocol.InterpreteData)
рдХрд┐рд╕реА рдмреНрд▓реЙрдХ, рд▓реЗрди-рджреЗрди, рдпрд╛ рдЕрдиреНрдп рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ:
- рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
fmt.Println("DataType:", intrpr.Commands[2])
- рдорд╛рди рдкрдврд╝рддрд╛ рд╣реИ рдЗрдВрдЯреНрд░рдкреНрд░.рдмреЙрдбреА рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЪрд░ рдХреЗ рд▓рд┐рдП buf_len
- рдПрдХ рдмрдлрд╝рд░ рдмрдирд╛рддрд╛ рд╣реИ рдиреНрдпреВрдмрдл рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдХрд╛рд░:
make([]byte, buf_len)
- рдареАрдХ рдЙрддреНрддрд░ рднреЗрдЬрддрд╛ рд╣реИ:
conn.Write([]byte("result:ok"))
- рд░реАрдб рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдмрдлрд╝рд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрд░ рджреЗрддрд╛ рд╣реИ:
io.ReadFull(conn, newbuf)
.
- рдмрдлрд╝рд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ
fmt.Println(string(newbuf))
рдФрд░ рдкрдврд╝реЗ рдЧрдП рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛
fmt.Println("Bytes length:", n)
- рдареАрдХ рдЙрддреНрддрд░ рднреЗрдЬрддрд╛ рд╣реИ:
conn.Write([]byte("result:ok"))
рдкреИрдХреЗрдЬ рд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдкреИрдХреЗрдЬ рд╕реЗ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдкреНрд░реЛрдЯреЛрдХреЙрд▓.
рдкреНрд░реЛрдЯреЛрдХреЙрд▓
рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдПрдХ рд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
рд╡рд┐рдХрд▓реНрдк (str рд╕реНрдЯреНрд░рд┐рдВрдЧ) (рд╕реНрдЯреНрд░рд┐рдВрдЧ, рддреНрд░реБрдЯрд┐) рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреА рдкреНрд░рд╛рдердорд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рджреБрднрд╛рд╖рд┐рдпрд╛:
- рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╣реЗрдб рдФрд░ рдмреЙрдбреА рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ReqParseN2(str)
- рд╣реЗрдб рдХреЛ рддрддреНрд╡реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ ReqParseHead(head) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдорд╛рдВрдб рд╕реНрд▓рд╛рдЗрд╕ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ
- ╨Т рд╕реНрд╡рд┐рдЪ(рдЖрджреЗрд╢[0]) рдкреНрд░рд╛рдкреНрдд рдЖрджреЗрд╢ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ (рд╕реАрдПрдордбреА, рдХреБрдВрдЬреА, рдкрддрд╛ рдпрд╛ рдЕрдиреБрднрд╛рдЧ рдЪрд╛рд▓реВ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдЪреВрдХ)
- Cmd рдореЗрдВ 2 рдХрдорд╛рдВрдб рдЪреЗрдХ рдХрд┐рдП рдЧрдП рд╣реИрдВ рд╕реНрд╡рд┐рдЪ(рдХрдорд╛рдВрдб[1])- рд▓рдВрдмрд╛рдИ ╨╕ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ.
- рд▓рдВрдмрд╛рдИ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдЖрджреЗрд╢[2] рдФрд░ рдЗрд╕реЗ рд╕реЗрд╡ рдХрд░рддрд╛ рд╣реИ рдбрд╛рдЯрд╛ рдкреНрд░рдХрд╛рд░
- рдЙрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИ
len(body) < 1
- рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:
"result:bufferlength:" + datatype + "/" + body
- рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
return "result:version/auto"
рджреБрднрд╛рд╖рд┐рдпрд╛
рдЗрд╕рдореЗрдВ InterpreteData рд╕рдВрд░рдЪрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рд▓реМрдЯрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдХрд╛ рджреНрд╡рд┐рддреАрдпрдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд░рддрд╛ рд╣реИ рдЪреБрдирд╛рд╡ рддрд╛рд░ рдФрд░ рд╡рд╕реНрддреБ рдирд┐рд░реНрдорд╛рдг рдбреЗрдЯрд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ.
type InterpreteData struct {
Head string
Commands []string
Body string
IsErr bool
ErrCode int
ErrMessage string
}
рд╕рдорд╛рд░реЛрд╣
Interprete(str string) (*InterpreteData, error)
рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдкрд░рд┐рдгрд╛рдо рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдбреЗрдЯрд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ.
рдкреНрд░рдЧрддрд┐:
- рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдЪреБрдирд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рд░ рдФрд░ рд╢рд░реАрд░ рдХреЛ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ ReqParseN2(str)
- рд╕рд┐рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрддреНрд╡реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ReqParseHead(рд╕рд┐рд░)
- рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрд░рдВрднреАрдХреГрдд рд╣реИ рдбреЗрдЯрд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХрд╛ рдПрдХ рд╕реВрдЪрдХ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
res := &InterpreteData{
Head: head,
Commands: commands,
Body: body,
}
return res, nil
рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╕рд░реНрд╡рд░.рдЧреЛ рдкреИрдХреЗрдЬ рдореБрдЦреНрдп.
рдЧреНрд░рд╛рд╣рдХ
рдХреНрд▓рд╛рдЗрдВрдЯ рдкреИрдХреЗрдЬ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЯреАрд╕реАрдкреАрдХрдиреЗрдХреНрдЯ ╨╕ рдЯреАрд╕реАрдкреАрд░реЗрд╕реНрдкреЙрдиреНрд╕рдбреЗрдЯрд╛.
рд╕рдорд╛рд░реЛрд╣
TCPConnect(s *types.Settings, data []byte, payload []byte)
рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
- рдкрд╛рд░рд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдиреЗрдХреНрд╢рди рд╕реЗ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
net.Dial("tcp", s.Host + ":" + s.Port)
- рдбреЗрдЯрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкрд╛рд░рд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ:
conn.Write(data)
- рдЙрддреНрддрд░ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ
resp, n, _ := TCPResponseData(conn, s.BufSize)
рдФрд░ рдХрдВрд╕реЛрд▓ рдкрд░ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛
fmt.Println(string(resp[:n]))
- рдпрджрд┐ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдП рдкреЗрд▓реЛрдб рдлрд┐рд░ рдЙрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛ рджреЗрддрд╛ рд╣реИ
conn.Write(payload)
рдФрд░ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рдЗрд╕реЗ рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ
рд╕рдорд╛рд░реЛрд╣
TCPResponseData(conn net.Conn, bufsiz int) ([]byte, int, error)
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рдмрдлрд╝рд░ рдмрдирд╛рддрд╛ рд╣реИ, рд╡рд╣рд╛рдВ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдмрдлрд╝рд░ рдФрд░ рдкрдврд╝реЗ рдЧрдП рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛, рд╕рд╛рде рд╣реА рдПрдХ рддреНрд░реБрдЯрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рдмрд░реВрдЯреАрди
рдиреЛрдб рд╕рд░реНрд╡рд░ рдкрд░ рдХрдорд╛рдВрдб рднреЗрдЬрдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЖрдБрдХрдбрд╝реЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛, рдкреЗрд▓реЛрдб рдкрд░ рднреЗрдЬреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде, рдиреЛрдб рд╢реЗрдбреНрдпреВрд▓рд░ рдЗрдореНрдпреВрд▓реЗрд╢рди рдлрд╝реНрд▓реИрдЧ, рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ред
- рд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
st := types.ParseConfig(*config)
- рдпрджрд┐ рдПрдореБ рдзреНрд╡рдЬ рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░рд╛рд░рдВрдн рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рд╕рдордпрдмрджреНрдзрдХ
- рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрде рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ f рдзреНрд╡рдЬ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЙрд╕рдХрд╛ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ FDB рдФрд░ рд╕рд╛рдордЧреНрд░реА рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬ рджреА рдЬрд╛рддреА рд╣реИ
client.TCPConnect(st, []byte(CMD_BUFFER_LENGTH + ":" + strconv.Itoa(*t) + "/" + strconv.Itoa(fdblen)), fdb)
- рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдзреНрд╡рдЬ рд╕реЗ рдбреЗрдЯрд╛ рдмрд╕ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ -d:
client.TCPConnect(st, []byte(*data), nil)
рдпрд╣ рд╕рдм рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИред
рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдореИрдВ рдмреНрд▓реЙрдХ рдФрд░ рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, 3 рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, 4 рдореЗрдВ рдореИрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рджреЗрдЦреВрдВрдЧрд╛, рдлрд┐рд░ рдПрдХ рд╕реНрдЯреИрдХ рдорд╢реАрди рдЬреЛ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ, рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдФрд░ рд╕реЗ рдмрд╛рдпрдЯреЗрдХреЛрдб рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддреА рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдкреВрд▓ред
рд╕реНрд░реЛрдд: www.habr.com