private void Provisione(XSynqSession session, System.ServiceModel.Channels.Binding Binding, Uri uri) { PendingsNotifier = new Timer(XSynqSubscriberContextPendingsNotify, null, StaticConfiguration.DocumentPeridicUpdate, Timeout.Infinite); Session = session; Context = new XSynqSubscriberContext(this); Context.PropertyChanged += XSynqSubscriberContextPropertyChanged; InstanceContext = new InstanceContext(Context); Client = new XSynqPublisherClient(InstanceContext, Binding, new EndpointAddress(uri.GetComponents(UriComponents.AbsoluteUri, UriFormat.Unescaped))); }
private void Provisione(XSynqSession session, Uri uri) { PendingsNotifier = new Timer(XSynqSubscriberContextPendingsNotify, null, StaticConfiguration.DocumentPeridicUpdate, Timeout.Infinite); Session = session; Context = new XSynqSubscriberContext(this); Context.PropertyChanged += XSynqSubscriberContextPropertyChanged; InstanceContext = new InstanceContext(Context); Client = new XSynqPublisherClient(InstanceContext, "AgentEndPoint", uri.GetComponents(UriComponents.AbsoluteUri, UriFormat.Unescaped)); }
public XSynqSubscriber(XDocument xDocument, XSynqSession session, Uri uri) { ConnectionState = ConnctionStates.Init; XDocument = xDocument; Provisione(session, uri); Subscribe(); }
/// <summary> /// Crea una Suscripcion a la publicacion, y opcionalmente limita la /// suscripcion a una rama puntual del arbol. /// </summary> /// <returns>Identificador de la instancia del Subscriber.</returns> public string Subscribe(string DocumentName, string ClientName, string PublisherBranch, string SubscriberBranch, bool BranchOwner) { var Session = new XSynqSession { Identifier = OperationContext.Current.SessionId, DocumentName = DocumentName, ClientName = ClientName, PublisherBranch = PublisherBranch, SubscriberBranch = SubscriberBranch }; try { Syncro.WaitOne(); if (Subscritions.ContainsKey(Session.Identifier)) { Subscritions[Session.Identifier].Session = Session; return(Session.Identifier); } } finally { Syncro.Set(); } var xSynqDocument = XSynqDocument.GetSynqDocument(Session.DocumentName); if (xSynqDocument == null) { throw new XSynqFaultException(XSynqFaultCode.DocumentNotFound); } var si = new XSynqSessionInstance { Session = Session, XSynqDocument = xSynqDocument, PendingChangelog = new XDocument(new XElement("changeset")), CallbackSubscriber = OperationContext.Current.GetCallbackChannel <IXSynqPublisherCallback>() }; Syncro.WaitOne(); Subscritions.Add(Session.Identifier, si); Syncro.Set(); STrace.Debug(GetType().FullName, String.Format("Subscribe: client={0} SessionId={1}", CurrentSession().Session.ClientName, Session.Identifier)); return(Session.Identifier); }
public XSynqSubscriber(XDocument xDocument, XSynqSession session, Uri uri, int BufferSize) { ConnectionState = ConnctionStates.Init; XDocument = xDocument; var binding = new NetTcpBinding { Name = "NetTcpBinding_Client", SendTimeout = new TimeSpan(0, 5, 0), TransferMode = TransferMode.Buffered, MaxBufferPoolSize = BufferSize, MaxBufferSize = BufferSize, MaxReceivedMessageSize = BufferSize, ReaderQuotas = { MaxStringContentLength = BufferSize } }; Provisione(session, binding, uri); Subscribe(); }