āĻāĻŽāĻŋ āĻāĻāĻ¨ āĻāĻžāĻ° āĻŽāĻžāĻ¸ āĻ§āĻ°ā§ "āĻŦā§āĻ˛āĻāĻā§āĻāĻ¨ā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻ¸āĻ°āĻāĻžāĻ°ā§ āĻāĻŦāĻ āĻļāĻŋāĻ˛ā§āĻĒ āĻāĻžāĻ¤ā§ āĻĄā§āĻāĻž āĻ¸ā§āĻ°āĻā§āĻˇāĻž āĻāĻŦāĻ āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻ¸āĻ°āĻā§āĻāĻžāĻŽāĻā§āĻ˛āĻŋāĻ° āĻŦāĻŋāĻāĻžāĻļ" āĻ¨āĻžāĻŽā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻāĻžāĻ āĻāĻ°āĻāĻŋāĨ¤
āĻāĻāĻ¨ āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻŦāĻ˛āĻ¤ā§ āĻāĻžāĻ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻŽāĻŋ āĻāĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻļā§āĻ°ā§ āĻāĻ°ā§āĻāĻŋ, āĻāĻŦāĻ āĻāĻāĻ¨ āĻāĻŽāĻŋ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻāĻžāĻŦā§ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻā§āĻĄ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻŦāĨ¤
āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ§āĻžāĻ°āĻžāĻŦāĻžāĻšāĻŋāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻŦāĻ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻŋāĨ¤ āĻāĻ¸āĻ˛ā§, āĻĒāĻžāĻ āĻ āĻāĻŽāĻ¨āĻāĻŋ āĻāĻ āĻŦā§āĻ˛āĻāĻā§āĻāĻ¨ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ˛āĻŋāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻ¤ āĻŦāĻāĻ°, āĻĄāĻŋāĻāĻŋāĻāĻžāĻ˛ āĻŦā§āĻ°ā§āĻāĻĨā§āĻ°ā§ āĻšā§āĻ¯āĻžāĻāĻžāĻĨāĻ¨ā§, āĻ¤āĻžāĻ°āĻž āĻĄāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻŦāĻŋāĻāĻā§āĻĄ āĻ˛ā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻļāĻŋāĻ˛ā§āĻĒ āĻāĻŦāĻ āĻĄāĻŋāĻāĻŋāĻāĻžāĻ˛ āĻ āĻ°ā§āĻĨāĻ¨ā§āĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻāĻāĻŋ āĻ§āĻžāĻ°āĻŖāĻž āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ¸ā§āĻāĻŋāĻ˛; āĻāĻĻā§āĻāĻžāĻŦāĻ¨ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ¤āĻž āĻ¤āĻšāĻŦāĻŋāĻ˛ āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ āĻ¨ā§āĻĻāĻžāĻ¨āĻ āĻāĻžāĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ (āĻāĻŽāĻžāĻ° āĻāĻāĻāĻŋ āĻāĻ˛āĻžāĻĻāĻž āĻ˛āĻŋāĻāĻ¤ā§ āĻšāĻŦā§ āĻ āĻ¨ā§āĻĻāĻžāĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§, āĻ¯āĻžāĻ°āĻž āĻ¸āĻŦā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§āĻāĻžāĻ°ā§āĻāĻāĻĒ āĻāĻ°āĻ¤ā§ āĻļā§āĻ°ā§ āĻāĻ°āĻā§āĻ¨ āĻ¤āĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ ), āĻāĻŦāĻ āĻāĻāĻ¨ āĻā§āĻ°āĻŽāĻžāĻ¨ā§āĻ¸āĻžāĻ°ā§āĨ¤
āĻĄā§āĻā§āĻ˛āĻĒāĻŽā§āĻ¨ā§āĻ āĻā§ āĻ˛ā§āĻ¯āĻžāĻā§āĻā§āĻ¯āĻŧā§āĻā§ āĻ¸āĻā§āĻāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻāĻŦāĻ āĻ¯ā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻŦā§āĻ˛āĻāĻā§āĻ˛ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻĨāĻžāĻā§ āĻ¸ā§āĻāĻŋ āĻšāĻ˛ āĻ˛ā§āĻā§āĻ˛āĻĄāĻŋāĻŦāĻŋāĨ¤
āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ
āĻāĻļāĻā§āĻ˛āĻŋ āĻšāĻ˛ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛, āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° (āĻ¯āĻž āĻāĻŋāĻ¸āĻŋāĻĒāĻŋ āĻāĻŦāĻ āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻā§āĻ āĻāĻžāĻ˛āĻžāĻ¯āĻŧ - āĻĒā§āĻ°āĻĨāĻŽāĻāĻŋ āĻŦā§āĻ˛āĻāĻā§āĻāĻ¨ āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧāĻāĻŋ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻāĻĻā§āĻ° āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻĨā§āĻā§ āĻ˛ā§āĻ¨āĻĻā§āĻ¨ āĻāĻŦāĻ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĒāĻžāĻ āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒāĨ¤
āĻ¯ā§āĻŽāĻ¨ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻāĻ āĻŦā§āĻ˛āĻāĻā§āĻāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻāĻāĻžāĻŦā§ āĻ¸āĻ°āĻŦāĻ°āĻžāĻšāĻāĻžāĻ°ā§ āĻāĻŦāĻ āĻā§āĻ°āĻžāĻšāĻāĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒāĻŖā§āĻ¯ā§āĻ° āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻŦāĻ āĻ¸ā§āĻ°āĻā§āĻˇāĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻ āĻĨāĻŦāĻž āĻāĻāĻ¯āĻŧāĻ āĻāĻ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§āĨ¤ āĻāĻ āĻ˛ā§āĻā§āĻ°āĻž āĻāĻā§ āĻ āĻĒāĻ°āĻā§ āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¤āĻžāĻĄāĻŧāĻžāĻšā§āĻĄāĻŧā§ āĻāĻ°ā§ āĻ¨āĻžāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻžāĻāĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻŦāĻŋāĻ˛ā§āĻ-āĻāĻ¨ āĻā§āĻ¯āĻžāĻ˛āĻā§āĻ˛ā§āĻāĻ° āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻāĻāĻŋ "āĻā§āĻāĻŦā§āĻ" āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¨āĻ¯āĻŧ, āĻāĻāĻāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¯āĻž āĻĒāĻŖā§āĻ¯ā§āĻ° āĻā§āĻŦāĻ¨āĻāĻā§āĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻĻā§āĻā§āĻ¤ āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻ°ā§āĻāĻŋāĻ¨ āĻāĻžāĻāĻā§āĻ˛āĻŋāĻā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°ā§āĨ¤ āĻāĻ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§ āĻŦāĻžāĻāĻāĻā§āĻĄ, āĻ¯ā§āĻŽāĻ¨ āĻŦā§āĻ˛āĻāĻā§āĻāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻ°āĻĨāĻžāĻāĻ¤, āĻ˛ā§āĻ¨āĻĻā§āĻ¨ā§āĻ° āĻāĻ¨āĻĒā§āĻ āĻāĻŦāĻ āĻāĻāĻāĻĒā§āĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻĨāĻžāĻā§ (āĻ˛ā§āĻ¨āĻĻā§āĻ¨āĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻā§āĻ āĻŦā§āĻ˛āĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻĨāĻžāĻā§, āĻ˛ā§āĻā§āĻ˛āĻĄāĻŋāĻŦāĻŋ-āĻ¤ā§ āĻŦā§āĻ˛āĻāĻā§āĻ˛āĻŋ GOB āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻā§ āĻĒā§āĻ°āĻžāĻ-āĻāĻ¨āĻā§āĻĄ āĻāĻ°āĻž āĻšāĻ¯āĻŧ)āĨ¤ āĻĒā§āĻ°āĻĨāĻŽā§, āĻāĻ¸ā§āĻ¨ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻāĻŦāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° (āĻāĻ°āĻĢā§ āĻ¨ā§āĻĄ) āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻŋāĨ¤
āĻĒā§āĻ°ā§āĻā§āĻāĻ˛āĻāĻŋ āĻāĻāĻŋāĻ˛ āĻ¨āĻ¯āĻŧ, āĻāĻ° āĻĒā§āĻ°ā§ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻāĻŋ āĻšāĻ˛ āĻāĻŋāĻā§ āĻĄā§āĻāĻž āĻ˛ā§āĻĄ āĻāĻ°āĻžāĻ° āĻŽā§āĻĄā§ āĻ¸ā§āĻ¯ā§āĻāĻ āĻāĻ°āĻž, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻāĻāĻŋ āĻŦā§āĻ˛āĻ āĻŦāĻž āĻ˛ā§āĻ¨āĻĻā§āĻ¨, āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§, āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻ¨āĻā§āĻ¨ā§āĻāĻ°āĻŋ āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨, āĻ¯āĻžāĻ¤ā§ āĻ¨ā§āĻĄāĻāĻŋ āĻāĻžāĻ¨ā§ āĻ¯ā§ āĻāĻāĻŋ āĻā§ āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻŦāĻ āĻā§āĻāĻžāĻŦā§ āĻ¤āĻžāĻĻā§āĻ° āĻŦā§āĻ¯āĻŦāĻ¸āĻž āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ (āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻā§āĻļāĻ¨ āĻ¸ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻā§ "āĻĒā§āĻ°āĻ¤āĻŋāĻŦā§āĻļā§"āĻ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻāĻžāĻ°āĻŖ āĻ¤āĻžāĻĻā§āĻ° āĻāĻāĻĒāĻŋ āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻ°āĻžāĻā§āĻ¯ā§āĻ° āĻĄā§āĻāĻž āĻŽā§āĻŽāĻ°āĻŋāĻ¤ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧ)āĨ¤
āĻā§ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻžāĻ°āĻĻā§āĻ° āĻŦā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°āĻā§āĻ˛āĻŋ (āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻā§āĻ˛āĻŋāĻā§ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻŦāĻ˛ā§) āĻĒā§āĻ¯āĻžāĻā§āĻ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ āĻāĻ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻĨā§āĻā§ Go āĻā§āĻĄ āĻ¸āĻš āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻļā§āĻ°ā§āĻ¤ā§ āĻ¤āĻžāĻ°āĻž āĻ˛āĻŋāĻā§ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°_āĻ¨āĻžāĻŽ_where_this_file āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤āĨ¤ āĻ āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ, āĻāĻĒāĻ¨āĻŋ āĻāĻŽā§āĻĒāĻžāĻāĻ˛āĻžāĻ°āĻā§ āĻĒā§āĻ¯āĻžāĻā§āĻāĻāĻŋ āĻāĻžāĻāĻ¯āĻŧāĻžāĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻŦā§āĻ¨ āĻ¨āĻžāĨ¤ āĻ āĻŋāĻ āĻāĻā§, āĻ¯āĻžāĻ°āĻž āĻāĻ āĻāĻžāĻˇāĻž āĻāĻžāĻ¨ā§āĻ¨ āĻ¤āĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋ āĻā§āĻ¨āĻ āĻā§āĻĒāĻ¨ āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻ āĻĒā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋ āĻšāĻ˛:
- āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ (āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°, āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ, āĻĒā§āĻ°ā§āĻā§āĻāĻ˛)
- āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻāĻŦāĻ āĻĒā§āĻ°ā§āĻ°āĻŋāĻ¤ āĻĄā§āĻāĻžāĻ° āĻāĻžāĻ āĻžāĻŽā§ (āĻŦā§āĻ˛āĻ, āĻ˛ā§āĻ¨āĻĻā§āĻ¨)
- āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ (āĻŦā§āĻ˛āĻāĻā§āĻ¨)
- āĻāĻā§āĻ¯āĻŽāĻ¤
- āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻĄ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨ (xvm)
- āĻ āĻā§āĻ¸āĻŋāĻ˛āĻŋāĻ¯āĻŧāĻžāĻ°āĻŋ (āĻā§āĻ°āĻŋāĻĒā§āĻā§, āĻĒā§āĻ°āĻāĻžāĻ°) āĻāĻĒāĻžāĻ¤āĻ¤ āĻāĻ¤āĻā§āĻā§āĻāĨ¤
āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻļāĻŋāĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ, āĻāĻ¤ā§ āĻāĻ¨ā§āĻ¤āĻāĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŽāĻŋāĻĨāĻ¸ā§āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻŦāĻ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻ° āĻ āĻāĻžāĻŦ āĻ°āĻ¯āĻŧā§āĻā§, āĻ¤āĻŦā§ āĻāĻžāĻ āĻžāĻŽā§āĻāĻŋ āĻ¯āĻžāĻ° āĻāĻĒāĻ° āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻāĻ°āĻž āĻšāĻā§āĻā§ āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻŋāĻ˛ā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ā§ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻāĻŋāĻā§ āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻāĻŽāĻŋ āĻāĻ°āĻ āĻŦāĻŋāĻāĻžāĻļā§ āĻāĻāĻŋ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻžāĻ¯āĻŧ āĻ¨āĻŋāĻ¯āĻŧā§ āĻā§āĻļāĻŋ āĻšāĻŦāĨ¤ āĻāĻŦāĻ āĻāĻāĻ¨ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻž āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛.
āĻĒā§āĻ°āĻĨāĻŽā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻĻāĻŋāĻā§ āĻ¤āĻžāĻāĻžāĻāĨ¤
āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¸āĻžāĻŦāĻ°ā§āĻāĻŋāĻ¨ āĻāĻāĻāĻŋ āĻĄā§āĻāĻž āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§ āĻ¯āĻž āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°āĻžāĻāĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ TCP āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ā§āĻ° āĻāĻĒāĻ°ā§ āĻāĻ˛ā§āĨ¤
āĻ°ā§āĻāĻŋāĻ¨ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§: āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°, āĻĒā§āĻ°ā§āĻā§āĻāĻ˛, āĻ§āĻ°āĻ¨ā§āĻ°. āĻĒā§āĻ¯āĻžāĻā§āĻā§ āĻ¨āĻŋāĻā§āĻ tcp_server.go āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°āĻžāĻāĻāĻžāĻ° āĻ°āĻ¯āĻŧā§āĻā§ āĻĒāĻ°āĻŋāĻŦā§āĻļāĻ¨ āĻāĻ°āĻž.
type Serve struct {
Port string
BufSize int
ST *types.Settings
}
āĻāĻāĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§:
- āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĒā§āĻ°ā§āĻ āĻ¯āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĄā§āĻāĻž āĻāĻĻāĻžāĻ¨-āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻž āĻšāĻŦā§
- JSON āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛
- āĻĄāĻŋāĻŦāĻžāĻ āĻŽā§āĻĄā§ āĻāĻ˛āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ¤āĻžāĻāĻž (āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤ āĻŦā§āĻ˛āĻāĻā§āĻāĻ¨)
āĻ āĻā§āĻ°āĻāĻ¤āĻŋ:
- JSON āĻĢāĻžāĻāĻ˛ āĻĨā§āĻā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒāĻĄāĻŧā§
- āĻĄāĻŋāĻŦāĻžāĻ āĻŽā§āĻĄ āĻĢā§āĻ˛ā§āĻ¯āĻžāĻ āĻā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§: āĻāĻāĻŋ āĻ¸ā§āĻ āĻāĻ°āĻž āĻĨāĻžāĻāĻ˛ā§, āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻā§āĻļāĻ¨ āĻļāĻŋāĻĄāĻŋāĻ¯āĻŧā§āĻ˛āĻžāĻ° āĻāĻžāĻ˛ā§ āĻšāĻ¯āĻŧ āĻ¨āĻž āĻāĻŦāĻ āĻŦā§āĻ˛āĻāĻā§āĻāĻ¨ āĻ˛ā§āĻĄ āĻšāĻ¯āĻŧ āĻ¨āĻž
- āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°āĻžāĻāĻāĻžāĻ° āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻāĻŦāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻļā§āĻ°ā§ āĻāĻ°āĻž
āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°
- āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§ TCP āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻŦāĻ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻŽāĻŋāĻĨāĻ¸ā§āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĨ¤
- āĻāĻāĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻ āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°āĻžāĻāĻāĻžāĻ° āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻ āĻ¨āĻŽā§āĻŦāĻ°, āĻāĻāĻāĻŋ āĻŦāĻžāĻĢāĻžāĻ° āĻāĻāĻžāĻ° āĻāĻŦāĻ āĻāĻžāĻ āĻžāĻŽā§āĻ° āĻāĻāĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻāĻžāĻ° āĻ°āĻ¯āĻŧā§āĻā§ āĻĒā§āĻ°āĻāĻžāĻ°āĨ¤āĻ¸ā§āĻāĻŋāĻāĻ¸
- āĻ°āĻžāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻāĻ¨ā§āĻāĻžāĻ°āĻ ā§āĻ¯āĻžāĻāĻļāĻ¨ āĻļā§āĻ°ā§ āĻāĻ°ā§ (āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻĒā§āĻ°ā§āĻā§ āĻāĻ¨āĻāĻžāĻŽāĻŋāĻ āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻļā§āĻ¨āĻž, āĻ¯āĻāĻ¨ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻāĻ¯ā§āĻ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ¤āĻāĻ¨ āĻāĻāĻŋāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĨā§āĻ°ā§āĻĄā§ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ)
- Đ āĻšāĻžāĻ¤āĻ˛ āĻ¸āĻāĻ¯ā§āĻ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻāĻāĻāĻŋ āĻŦāĻžāĻĢāĻžāĻ°ā§ āĻĒāĻĄāĻŧāĻž āĻšāĻ¯āĻŧ, āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ¯āĻŧ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛āĨ¤ āĻĒāĻāĻ¨ā§āĻĻ
- āĻĒā§āĻ°ā§āĻā§āĻāĻ˛āĨ¤ āĻĒāĻāĻ¨ā§āĻĻ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻŦāĻ°ā§āĻ¤āĻ¨ āĻĢāĻ˛ āĻŦāĻž āĻāĻāĻāĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻāĻāĻžāĻ¯āĻŧāĨ¤ āĻĢāĻ˛ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ protocol. āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻžāĻ¯āĻž āĻĢāĻŋāĻ°ā§ āĻāĻ¸ā§ intrpr - āĻ§āĻ°āĻ¨ā§āĻ° āĻŦāĻ¸ā§āĻ¤ā§ āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻž āĻāĻ°āĻž āĻĄā§āĻāĻž, āĻ āĻĨāĻŦāĻž āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖā§ āĻāĻāĻāĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻāĻāĻžāĻ¯āĻŧ
- āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¸ā§āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ intrpr.commands[0] āĻ¯āĻž āĻāĻāĻāĻŋ āĻā§āĻ āĻāĻ°ā§: āĻĢāĻ˛āĻžāĻĢāĻ˛, āĻāĻ¨āĻāĻŋ, āĻ¤ā§āĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻŦāĻŋāĻāĻžāĻ āĻāĻā§ āĻĄāĻŋāĻĢāĻ˛ā§āĻ
- āĻŦāĻŋāĻāĻžāĻā§ āĻĢāĻ˛ āĻ¸ā§āĻāĻ āĻŽāĻžāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ intrpr.commands[1] āĻ¯āĻž āĻŽāĻžāĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§ āĻŦāĻžāĻĢāĻžāĻ° āĻĻā§āĻ°ā§āĻā§āĻ¯ и āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ (āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻĢāĻžāĻāĻļāĻ¨ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ)
āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ˛āĻžāĻĒ GetVersion и āĻŦāĻžāĻĢāĻžāĻ° āĻĻā§āĻ°ā§āĻā§āĻ¯ āĻĢāĻžāĻāĻ˛ā§ āĻāĻā§ 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])
- āĻŽāĻžāĻ¨ āĻĒāĻĄāĻŧā§ intrpr.Body āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻ¯āĻžāĻāĻ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ buf_len
- āĻāĻāĻāĻŋ āĻŦāĻžāĻĢāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ newbuf āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻāĻžāĻ°:
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, āĻā§, āĻ āĻŋāĻāĻžāĻ¨āĻž āĻ āĻĨāĻŦāĻž āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻĄāĻŋāĻĢāĻ˛ā§āĻ)
- cmd-āĻ 2āĻāĻŋ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¸ā§āĻāĻ(āĻāĻŽāĻžāĻ¨ā§āĻĄ[1]) â āĻĻā§āĻ°ā§āĻā§āĻ¯ и getversion.
- āĻ˛āĻŽā§āĻŦāĻž āĻĄāĻžāĻāĻž āĻāĻžāĻāĻĒ āĻā§āĻ āĻāĻ°ā§ āĻāĻĻā§āĻļ[2] āĻāĻŦāĻ āĻāĻāĻŋ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§ āĻĄāĻžāĻāĻžāĻāĻžāĻāĻĒ
- āĻ¸ā§āĻāĻž āĻā§āĻ āĻāĻ°ā§ āĻļāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻŽāĻžāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§
len(body) < 1
- āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§:
"result:bufferlength:" + datatype + "/" + body
- getversion āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§
return "result:version/auto"
āĻĻā§āĻāĻžāĻˇā§
āĻāĻ¨ā§āĻāĻžāĻ°āĻĒā§āĻ°āĻŋāĻāĻĄā§āĻāĻž āĻāĻžāĻ āĻžāĻŽā§ āĻ§āĻžāĻ°āĻŖ āĻāĻ°ā§ āĻāĻŦāĻ āĻ¯ā§ āĻĄā§āĻāĻž āĻĨā§āĻā§ āĻĢāĻŋāĻ°ā§ āĻāĻ¸ā§ āĻ¤āĻžāĻ° āĻ¸ā§āĻā§āĻ¨ā§āĻĄāĻžāĻ°āĻŋ āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻŋāĻ āĻāĻ°ā§ āĻĒāĻāĻ¨ā§āĻĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻāĻŦāĻ āĻŦāĻ¸ā§āĻ¤ā§ āĻāĻ āĻ¨ āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻž āĻāĻ°āĻž āĻĄā§āĻāĻž.
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
āĻāĻ āĻŦāĻ¸ā§āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ server.go āĻĒā§āĻ¯āĻžāĻā§āĻ āĻĒā§āĻ°āĻ§āĻžāĻ¨āĨ¤
āĻŽāĻā§āĻā§āĻ˛
āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻĒā§āĻ¯āĻžāĻā§āĻā§ āĻĢāĻžāĻāĻļāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§ TCPConnect и TCPresponseData.
āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž
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)
- āĻāĻŽā§ āĻĒāĻ¤āĻžāĻāĻž āĻĒāĻžāĻ¸ āĻšāĻ˛ā§, āĻāĻāĻŋ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧ sheduler
- āĻ¯āĻĻāĻŋ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻĒāĻĨ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§ 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