Alphashack.Graphdat.Agent.Socket.Send C# (CSharp) Method

Send() public method

public Send ( byte data, long datalen, LoggerDelegate logger = null, object logContext = null ) : void
data byte
datalen long
logger LoggerDelegate
logContext object
return void
        public void Send(byte[] data, long datalen, LoggerDelegate logger = null, object logContext = null)
        {
            if (!Connect(logger, logContext)) return;

            try
            {
                Int32 intdatalen = Convert.ToInt32(datalen);
                Int32 netdatalen = IPAddress.HostToNetworkOrder(intdatalen);
                _socket.Send(BitConverter.GetBytes(netdatalen), sizeof(Int32), SocketFlags.None);
                var sent = _socket.Send(data, intdatalen, SocketFlags.None);

                if (!_lastwritesuccess)
                {
                    if(logger != null) logger(GraphdatLogType.SuccessMessage, logContext, "graphdat: sending data on socket '{0}'", _config);
                    _lastwritesuccess = true;
                }
                _lastwaserror = false;

                if (Agent.Connect.VerboseLogging)
                {
                    if (logger != null) logger(GraphdatLogType.InformationMessage, logContext, "graphdat info: socket sent {0} bytes to '{1}'", sent, _config);
                }
            }
            catch (Exception ex)
            {
                Term(logger, logContext);
                _lastwritesuccess = false;
                string message;
                if (ex is OverflowException)
                {
                    message = "data too long";
                }
                else
                {
                    message = ex.Message;
                }
                if (logger != null) logger(GraphdatLogType.ErrorMessage, logContext, "graphdat error: could not write socket '{0}' - {1}",
                       _config, message);
            }
        }