public void ConvertSDKUnrecognizedSenderStatusToAPIUnknownValue() { apiSenderStatus1 = "NEWLY_ADDED_SENDER_STATUS"; SenderStatus unrecognizedSenderStatus = SenderStatus.valueOf(apiSenderStatus1); string acutalApiScheme = new SenderStatusConverter(unrecognizedSenderStatus).ToAPISenderStatus(); Assert.AreEqual(apiSenderStatus1, acutalApiScheme); }
public void whenBuildingSenderStatusWithUnknownAPIValueThenUNRECOGNIZEDSenderStatusIsReturned() { string expectedSDKValue = "UNRECOGNIZED"; SenderStatus classUnderTest = SenderStatus.valueOf("ThisSenderStatusDoesNotExistINSDK"); String actualSDKValue = classUnderTest.getSdkValue(); Assert.AreEqual(expectedSDKValue, actualSDKValue); }
public void whenBuildingSenderStatusWithAPIValueLOCKEDThenLOCKEDSenderStatusIsReturned() { string expectedSDKValue = "LOCKED"; SenderStatus classUnderTest = SenderStatus.valueOf("LOCKED"); String actualSDKValue = classUnderTest.getSdkValue(); Assert.AreEqual(expectedSDKValue, actualSDKValue); }
public void TestSenderStatus() { foreach (SenderStatus senderStatus in SenderStatus.Values()) { Assert.IsNotNull(senderStatus.ToString()); Assert.IsNotEmpty(senderStatus.ToString()); } Assert.AreEqual(0, (int)SenderStatus.INVITED); Assert.AreEqual("ACTIVE", (string)SenderStatus.ACTIVE); Assert.AreEqual("LOCKED", SenderStatus.LOCKED.GetName()); }
public void SendData <T>(T Data) where T : ISerializable { Status = SenderStatus.Preparing; MemoryStream = new MemoryStream(); BinaryFormatter BinaryFormatter = new BinaryFormatter(); //二进制序列化类 BinaryFormatter.Serialize(MemoryStream, Data); //将消息类转换为内存流 FullData = MemoryStream.GetBuffer(); DataLength = FullData.Length; SendedLength = 0; MemoryStream.Flush(); Socket.SendAsync(Encoding.UTF8.GetBytes("DataTransmit|*|" + DataLength)); }
public void SendCompleted(object Sender, SocketEventArgs E) { if (Status == SenderStatus.Sending) { if (SendedLength < DataLength) { Buffer = new byte[DataLength - SendedLength < BufferLength ? DataLength - SendedLength : BufferLength]; Buffer = FullData.Skip(SendedLength).Take(Buffer.Length).ToArray(); E.Socket.SendAsync(Buffer); //从内存中读取二进制流,并发送 SendedLength += Buffer.Length; } else { Status = SenderStatus.Ready; } } else if (Status == SenderStatus.Preparing) { Status = SenderStatus.Sending; Buffer = new byte[BufferLength]; MemoryStream.Position = 0; //将流的当前位置重新归0,否则Read方法将读取不到任何数据 if (SendedLength < DataLength) { Buffer = new byte[DataLength - SendedLength < BufferLength ? DataLength - SendedLength : BufferLength]; Buffer = FullData.Skip(SendedLength).Take(Buffer.Length).ToArray(); E.Socket.SendAsync(Buffer); //从内存中读取二进制流,并发送 SendedLength += Buffer.Length; } } SendOnce?.Invoke(this, new SendOnceEventArgs() { Socket = Socket, NewData = Buffer, CumulativeLength = SendedLength, ReceivedLength = Buffer.Length, TotalLength = DataLength, Status = Status }); }
public senderDestination() { Status = SenderStatus.Pending; }
private void HasResponse(IAsyncResult result) { try { _client.EndSend(result); SenderEnvelope envelope = null; lock (_syncLock) { envelope = _sendQueue.Dequeue(); } _retryTimer.Reset(); var eventArgs = new SenderEventArgs(envelope, SenderEventArgs.SenderEventType.Succeeded); DispatchEvent(MessageSucceeded, eventArgs); } catch (Exception ex) { Status = SenderStatus.WaitForRetry; SenderEnvelope envelope = _sendQueue.Peek(); var eventArgs = new SenderEventArgs(envelope, SenderEventArgs.SenderEventType.Failed); eventArgs.ErrorMessage = ex.Message; DispatchEvent(MessageFailed, eventArgs); _retryTimer.Wait(); } TryToSendFirstMessageInQueue(); }
private void TryToSendFirstMessageInQueue() { if (_sendQueue.Count > 0) { SenderEnvelope envelope = _sendQueue.Peek(); envelope.Attempts.Add(DateTime.Now); Status = SenderStatus.Sending; _client.BeginSend(envelope.Message, new AsyncCallback(HasResponse)); var eventArgs = new SenderEventArgs(envelope, SenderEventArgs.SenderEventType.Attempted); DispatchEvent(MessageAttempted, eventArgs); } else { Status = SenderStatus.Idle; } }
public AccountMemberBuilder WithStatus(SenderStatus status) { this.status = status; return this; }