new public void Dispose() { if (_disposables == null) { return; } _disposables.Dispose(); _disposables = null; _sentMessages.OnCompleted(); _sentMessages.Dispose(); _sentMessages = null; _internalReceivedMessages.OnCompleted(); _internalReceivedMessages.Dispose(); _internalReceivedMessages = null; _messages.OnCompleted(); _messages.Dispose(); _messages = null; _users.Do(u => u.Dispose()); _users.Clear(); _users = null; _channels.Do(c => c.Dispose()); _channels.Clear(); _channels = null; _networks.Do(n => n.Dispose()); _networks.Clear(); _networks = null; base.Dispose(); }
public void Dispose() { if (Name == null) { return; } Name.Dispose(); Name = null; Modes.Dispose(); Modes = null; Topic.Dispose(); Topic = null; TopicSetBy.Dispose(); TopicSetBy = null; TopicSetDate.Dispose(); TopicSetDate = null; CreatedDate.Dispose(); CreatedDate = null; _knownUsers.Do(u => u.Dispose()); _knownUsers.Clear(); _knownUsers.Dispose(); _knownUsers = null; _users.Clear(); _users.Dispose(); _users = null; }
public void Dispose() { if (Name == null) { return; } Name.Dispose(); Name = null; Away.Dispose(); Away = null; Modes.Dispose(); Modes = null; Network.Dispose(); Network = null; RealName.Dispose(); RealName = null; Identity.Dispose(); Identity = null; _knownChannels.Clear(); _knownChannels.Dispose(); _knownChannels = null; _channels.Clear(); _channels.Dispose(); _channels = null; }
ClientRuntime(string contractName, string contractNamespace, SharedRuntimeState shared) { this.contractName = contractName; this.contractNamespace = contractNamespace; this.shared = shared; OperationCollection operations = new OperationCollection(this); this.operations = operations; channelInitializers = new ProxyBehaviorCollection <IChannelInitializer>(this); messageInspectors = new ProxyBehaviorCollection <IClientMessageInspector>(this); unhandled = new ClientOperation(this, "*", MessageHeaders.WildcardAction, MessageHeaders.WildcardAction); unhandled.InternalFormatter = new MessageOperationFormatter(); maxFaultSize = TransportDefaults.MaxFaultSize; }
public Channel(IClientConnection connection, String name, SynchronizationContext context) { _context = context; _users = new SynchronizedKeyedCollection <String, IChannelUser>(_context); _knownUsers = new SynchronizedKeyedCollection <String, IChannelUser>(_context); Connection = connection; Name = new ObservableProperty <String>(name); Modes = new Mode(); Topic = new ObservableProperty <String>(String.Empty); TopicSetBy = new ObservableProperty <IUser>(null); TopicSetDate = new ObservableProperty <uint>(0); CreatedDate = new ObservableProperty <uint>(0); ReceivedMessages = connection.ReceivedMessages .Where(m => m.Receiver.Equals(this)) ; }
public Channel(IClientConnection connection, String name, SynchronizationContext context) { _context = context; _users = new SynchronizedKeyedCollection<String, IChannelUser>(_context); _knownUsers = new SynchronizedKeyedCollection<String, IChannelUser>(_context); Connection = connection; Name = new ObservableProperty<String>(name); Modes = new Mode(); Topic = new ObservableProperty<String>(String.Empty); TopicSetBy = new ObservableProperty<IUser>(null); TopicSetDate = new ObservableProperty<uint>(0); CreatedDate = new ObservableProperty<uint>(0); ReceivedMessages = connection.ReceivedMessages .Where(m => m.Receiver.Equals(this)) ; }
public User(IClientConnection connection, String name, SynchronizationContext context) { _context = context; _channels = new SynchronizedKeyedCollection <String, IChannel>(_context); _knownChannels = new SynchronizedKeyedCollection <String, IChannel>(_context); Connection = connection; Identity = new Identity(name, null, null); RealName = new ObservableProperty <String>(String.Empty); Network = new ObservableProperty <INetwork>(null); Modes = new Mode(); Away = new ObservableProperty <bool>(false); Name = new ObservableProperty <String>(name); ReceivedMessages = connection.ReceivedMessages .Where(m => m.Receiver.Equals(this)) ; SentMessages = connection.ReceivedMessages .Where(m => m.Sender.Equals(this)) ; }
public User(IClientConnection connection, String name, SynchronizationContext context) { _context = context; _channels = new SynchronizedKeyedCollection<String, IChannel>(_context); _knownChannels = new SynchronizedKeyedCollection<String, IChannel>(_context); Connection = connection; Identity = new Identity(name, null, null); RealName = new ObservableProperty<String>(String.Empty); Network = new ObservableProperty<INetwork>(null); Modes = new Mode(); Away = new ObservableProperty<bool>(false); Name = new ObservableProperty<String>(name); ReceivedMessages = connection.ReceivedMessages .Where(m => m.Receiver.Equals(this)) ; SentMessages = connection.ReceivedMessages .Where(m => m.Sender.Equals(this)) ; }
public IRCClientConnection(String address, ushort port, SynchronizationContext context, Client client) : base(address, port) { _context = context; _client = client; _networks = new SynchronizedKeyedCollection <String, INetwork>(_context); _channels = new SynchronizedKeyedCollection <String, IChannel>(_context); _users = new SynchronizedKeyedCollection <String, IUser>(_context); _me = GetUser(_initialNickname) as User; _messageSender = new MessageSender(this); _messageReceiver = new MessageReceiver(this); _disposables.Add(RawMessages .Select(r => _messageReceiver.Receive(r)) .Subscribe(_internalReceivedMessages) ); _disposables.Add(_internalReceivedMessages.Subscribe(_receivedMessages)); _disposables.Add(_receivedMessages.Subscribe(_messages)); _disposables.Add(_sentMessages.Subscribe(_messages)); _disposables.Add(_sentMessages .Where(m => m.Type == SendType.Privmsg || m.Type == SendType.Notice) .Subscribe(m => HandleMessage(m)) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.Ping) .Subscribe(HandlePing) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.Join) .Subscribe(HandleJoin) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.Part) .Subscribe(HandlePart) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.Kick) .Subscribe(HandleKick) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.Quit) .Subscribe(HandleQuit) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.NickChange) .Subscribe(HandleNickChange) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.TopicChange) .Subscribe(HandleTopicChange) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.ChannelModeChange) .Subscribe(HandleChannelModeChange) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.UserModeChange) .Subscribe(HandleUserModeChange) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.Welcome) .Subscribe(HandleWelcome) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.ChannelModeIs) .Subscribe(HandleChannelModeIsReply) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.CreatedAt) .Subscribe(HandleCreatedAtReply) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.Topic) .Subscribe(HandleTopicReply) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.TopicSetBy) .Subscribe(HandleTopicSetByReply) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.NamesReply) .Subscribe(HandleNamesReply) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.WhoReply) .Subscribe(HandleWhoReply) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.Away) .Subscribe(HandleAwayReply) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.UnAway) .Subscribe(HandleUnAwayReply) ); }
public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext) { StringBuilder sb = new StringBuilder(); string guid = Guid.NewGuid().ToString(); sb.AppendFormat("请求标识:{0},调用前日志", guid).AppendLine(); try { Uri requestUri = request.Headers.To; sb.AppendFormat("请求地址:{0}", requestUri).AppendLine(); OperationContext context = OperationContext.Current; MessageProperties prop = context.IncomingMessageProperties; RemoteEndpointMessageProperty endpoint = prop[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty; if (endpoint != null) { sb.AppendFormat("请求IP:{0}", endpoint.Address).AppendLine(); } HttpRequestMessageProperty httpReq = (HttpRequestMessageProperty)request.Properties[HttpRequestMessageProperty.Name]; sb.AppendFormat("请求方式:{0}", httpReq.Method).AppendLine(); sb.AppendLine("请求Headers:"); foreach (string header in httpReq.Headers.AllKeys) { if (string.IsNullOrEmpty(header)) { continue; } if (header.ToLower() == "cookie") { continue; } sb.AppendFormat("{0}:{1}", header, httpReq.Headers[header]).AppendLine(); } MessageHeaders incomingMessageHeaders = OperationContext.Current.IncomingMessageHeaders; string currentActionName = incomingMessageHeaders.Action; if (string.IsNullOrEmpty(currentActionName)) { currentActionName = incomingMessageHeaders.To.Segments[incomingMessageHeaders.To.Segments.Length - 1]; } SynchronizedKeyedCollection <string, DispatchOperation> operations = OperationContext.Current.EndpointDispatcher.DispatchRuntime.Operations; DispatchOperation operation = operations.FirstOrDefault(d => d.Name == currentActionName); if (operation != null) { string actionName = OperationContext.Current.IncomingMessageProperties["HttpOperationName"] as string; Type hostType = OperationContext.Current.Host.Description.ServiceType; sb.AppendFormat("请求类:{0}", hostType.FullName).AppendLine(); sb.AppendFormat("请求方法:{0}", actionName).AppendLine(); } sb.AppendLine("请求内容:"); sb.AppendLine(this.MessageToString(ref request)); Logger.Error(sb.ToString()); } catch (Exception ex) { Logger.Error("日志记录异常:{0}", ex); } return(guid); }
public IRCClientConnection(String address, ushort port, SynchronizationContext context, Client client) : base(address, port) { _context = context; _client = client; _networks = new SynchronizedKeyedCollection<String, INetwork>(_context); _channels = new SynchronizedKeyedCollection<String, IChannel>(_context); _users = new SynchronizedKeyedCollection<String, IUser>(_context); _me = GetUser(_initialNickname) as User; _messageSender = new MessageSender(this); _messageReceiver = new MessageReceiver(this); _disposables.Add(RawMessages .Select(r => _messageReceiver.Receive(r)) .Subscribe(_internalReceivedMessages) ); _disposables.Add(_internalReceivedMessages.Subscribe(_receivedMessages)); _disposables.Add(_receivedMessages.Subscribe(_messages)); _disposables.Add(_sentMessages.Subscribe(_messages)); _disposables.Add(_sentMessages .Where(m => m.Type == SendType.Privmsg || m.Type == SendType.Notice) .Subscribe(m => HandleMessage(m)) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.Ping) .Subscribe(HandlePing) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.Join) .Subscribe(HandleJoin) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.Part) .Subscribe(HandlePart) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.Kick) .Subscribe(HandleKick) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.Quit) .Subscribe(HandleQuit) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.NickChange) .Subscribe(HandleNickChange) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.TopicChange) .Subscribe(HandleTopicChange) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.ChannelModeChange) .Subscribe(HandleChannelModeChange) ); _disposables.Add(_internalReceivedMessages .Where(m => m.Type == ReceiveType.UserModeChange) .Subscribe(HandleUserModeChange) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.Welcome) .Subscribe(HandleWelcome) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.ChannelModeIs) .Subscribe(HandleChannelModeIsReply) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.CreatedAt) .Subscribe(HandleCreatedAtReply) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.Topic) .Subscribe(HandleTopicReply) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.TopicSetBy) .Subscribe(HandleTopicSetByReply) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.NamesReply) .Subscribe(HandleNamesReply) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.WhoReply) .Subscribe(HandleWhoReply) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.Away) .Subscribe(HandleAwayReply) ); _disposables.Add(_internalReceivedMessages .Where(m => m.ReplyType == ReplyType.UnAway) .Subscribe(HandleUnAwayReply) ); }
public new void Dispose() { if(_disposables == null) return; _disposables.Dispose(); _disposables = null; _sentMessages.OnCompleted(); _sentMessages.Dispose(); _sentMessages = null; _internalReceivedMessages.OnCompleted(); _internalReceivedMessages.Dispose(); _internalReceivedMessages = null; _messages.OnCompleted(); _messages.Dispose(); _messages = null; _users.Do(u => u.Dispose()); _users.Clear(); _users = null; _channels.Do(c => c.Dispose()); _channels.Clear(); _channels = null; _networks.Do(n => n.Dispose()); _networks.Clear(); _networks = null; base.Dispose(); }
public void Dispose() { if(Name == null) return; Name.Dispose(); Name = null; Away.Dispose(); Away = null; Modes.Dispose(); Modes = null; Network.Dispose(); Network = null; RealName.Dispose(); RealName = null; Identity.Dispose(); Identity = null; _knownChannels.Clear(); _knownChannels.Dispose(); _knownChannels = null; _channels.Clear(); _channels.Dispose(); _channels = null; }
public void Dispose() { if(Name == null) return; Name.Dispose(); Name = null; Modes.Dispose(); Modes = null; Topic.Dispose(); Topic = null; TopicSetBy.Dispose(); TopicSetBy = null; TopicSetDate.Dispose(); TopicSetDate = null; CreatedDate.Dispose(); CreatedDate = null; _knownUsers.Do(u => u.Dispose()); _knownUsers.Clear(); _knownUsers.Dispose(); _knownUsers = null; _users.Clear(); _users.Dispose(); _users = null; }