コード例 #1
0
        /// <summary>
        /// Serialize a word to send down the wire
        /// </summary>
        /// <param name="wire">The wire</param>
        /// <param name="size">The size of the word (usually 1)</param>
        /// <param name="value">The value to send</param>
        /// <returns>The size sent</returns>
        private static int SendWord(NetworkMethods wire, int size, int value)
        {
            int sze = size * 4;

            wire.SendWord(sze);
            wire.SendWord(1);
            wire.SendWord(value);
            return(sze);
        }
コード例 #2
0
        /// <summary>
        /// Serialize a string to send down the wire
        /// </summary>
        /// <param name="wire">The wire</param>
        /// <param name="value">The value to send</param>
        /// <returns>The size sent</returns>
        private static int SendString(NetworkMethods wire, string value)
        {
            int sze = Encoding.ASCII.GetBytes(value).Length;

            wire.SendWord(sze);
            wire.SendString(value);
            return(sze);
        }
コード例 #3
0
        /// <summary>
        /// Calls the Init remote procedure
        /// </summary>
        /// <param name="userName">The username</param>
        /// <param name="versionCode">The version code</param>
        /// <returns>The version of the SANE daemon</returns>
        internal int Initialise(string userName, int versionCode)
        {
            _wire.SendCommand(NetworkCommand.Initialize);
            _wire.SendWord(versionCode);

            _wire.SendString(userName);
            int status = _wire.ReadWord();

            if (status != (int)SaneStatus.Success)
            {
                throw NSaneException.CreateFromStatus(status);
            }

            // TODO: Convert the version to something more human
            int version = _wire.ReadWord();

            return(version);
        }