public void ScenarioSetup() { this._senders = new SenderContext <object>(); this._receivers = new List <ReceiverContext <object> >(); this._checker = new Rediser(_redisConString); }
public override async Task OnConnectedAsync(ConnectionContext connection) { _logger.LogInformation($"New connection with id='{connection.ConnectionId}' !"); var(decoder, encoder) = _framing.CreatePair(connection); var proxy = encoder as IMessageEncoder ?? throw new InvalidOperationException(); var context = new SenderContext(connection, proxy); try { await proxy.WriteAsync(_handshakeMessage).ConfigureAwait(false); await foreach (var frame in decoder.ReadFramesAsync(connection.ConnectionClosed)) { _logger.LogDebug($"Connection with id = '{connection.ConnectionId}' sent a frame with : {frame.Metadata}"); var dispatchResult = await _framing.Dispatcher.OnFrameReceivedAsync(in frame, context) .ConfigureAwait(false); if (dispatchResult != DispatchResult.Success) { break; } } } finally { _logger.LogInformation($"Connection with id='{connection.ConnectionId}' ended with framesRead: {decoder.FramesRead}, framesSent: {encoder.FramesWritten} !"); decoder.Dispose(); encoder.Dispose(); } }
public override async Task OnConnectedAsync(ConnectionContext connection) { var(decoder, encoder) = _framing.CreatePair(connection); var context = new SenderContext(connection, encoder as IMessageEncoder); _logger.LogInformation($"Successfully connected to remote server at {connection.RemoteEndPoint} !"); try { await foreach (var frame in decoder.ReadFramesAsync(connection.ConnectionClosed)) { _logger.LogDebug($"Received a frame with : {frame.Metadata}"); var dispatchResult = await _framing.Dispatcher.OnFrameReceivedAsync(in frame, context) .ConfigureAwait(false); if (dispatchResult != DispatchResult.Success) { break; } } } finally { _logger.LogInformation($"Connection with remote server at {connection.RemoteEndPoint} ended with framesRead: {decoder.FramesRead}, framesSent: {encoder.FramesWritten} !"); decoder.Dispose(); encoder.Dispose(); } }
public void Initial() { _ctx = new SenderContext <object>(); _ctx.ReceiverTable.Receivers = rcRecords; _ctx.MsgConnection = Substitute.For <IRediser>(); _ctx.DataConnection = Substitute.For <IRediser>(); }
private static bool CallOnSendCompleted(bool async, SenderContext context) { context.EventArgs.Completed = context.CallBack; if (async) { context.CallBack(context.EventArgs); } return(async); }
public RedisSender(IBuffersPool buffersPool, IAsyncSocket asyncSocket, bool autoFlush) { _buffersPool = buffersPool; _asyncSocket = asyncSocket; _autoFlush = autoFlush; _senderContext = new SenderContext(); _flushArgs = new AsyncSocketEventArgs(); _flushArgs.Completed = FlushCallBack; _sendingQueue = new ConcurrentQueue <ArraySegment <byte> >(); }
public RedisSender(IBuffersPool buffersPool, IAsyncSocket asyncSocket, bool autoFlush) { _buffersPool = buffersPool; _asyncSocket = asyncSocket; _autoFlush = autoFlush; _senderContext = new SenderContext(); _flushArgs = new AsyncSocketEventArgs(); _flushArgs.Completed = FlushCallBack; _sendingQueue = new ConcurrentQueue<ArraySegment<byte>>(); }
public void Finished() { if (this._ctx.ReceiverTable.Amount > 0) { this._ctx.ReceiverTable.Receivers.Clear(); } this._ctx.ReceiverTable.Receivers = null; this._ctx.MsgConnection = null; this._ctx.DataConnection = null; this._ctx = null; }
private int Send(List <VKApiRequestModel> Requests, SenderContext context) { var res = AsyncHelper.RunSync(() => vk.SendAllRequests(Requests)); if (res == 0) { context.SaveChanges(); } else { context.UndoChanges(); } Requests.Clear(); return(res); }
public void InitiateMulti_Sender() { SenderContext <object> senderA = new SenderContext <object>(), senderB = new SenderContext <object>(); senderA.MsgConnection = new Rediser(_redisConString, SerializerType.NewtonJson); senderA.DataConnection = new Rediser(_redisConString, SerializerType.NewtonJson); senderB.MsgConnection = new Rediser(_redisConString, SerializerType.NewtonJson); senderB.DataConnection = new Rediser(_redisConString, SerializerType.NewtonJson); senderA.Initial(); senderB.Initial(); this._senders.Add(senderA); this._senders.Add(senderB); }
public SenderProcessState(SenderContext <T> ctx) { this._ctx = ctx; }
public SenderInitialState(SenderContext <T> ctx) { this._ctx = ctx; }
private static bool CallOnSendCompleted(bool async, SenderContext context) { context.EventArgs.Completed = context.CallBack; if (async) context.CallBack(context.EventArgs); return async; }
public SenderItem(SenderContext <DTO> sender) { this._sender = sender; }
public void DoWork() { var context = new SenderContext("database"); var Requests = new List <VKApiRequestModel>(); while (true) { try { var list = context.Message.Where(x => !x.IsSended && x.BotUserVKID != null).ToArray(); int count = 0; //неотправленные запросы пользователям Вконтакте foreach (var item in list) { count++; if (item.Photo != null) { Requests.Add(new VKApiRequestModel(ulong.Parse(item.BotUserVKID), item.Text, RequestType.SendMessageWithPhoto, item.Photo)); } else { Requests.Add(new VKApiRequestModel(ulong.Parse(item.BotUserVKID), item.Text)); } item.IsSended = true; if (count >= 20 && count % 20 == 0) { var res = AsyncHelper.RunSync(() => vk.SendAllRequests(Requests)); if (res == 0) { context.SaveChanges(); } else { context.UndoChanges(); } Requests.Clear(); } } if (Requests.Count > 0) { var res = AsyncHelper.RunSync(() => vk.SendAllRequests(Requests)); if (res == 0) { context.SaveChanges(); } else { context.UndoChanges(); } Requests.Clear(); Thread.Sleep(500); } else { Thread.Sleep(500); } } catch (Exception esc) { Logging.Logger.Error(esc); } } }
public SenderPrepareState(SenderContext <T> ctx) { this._ctx = ctx; }