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);
}
}