On 25/10/13 02:05, xor wrote:
> Hi,
> the last remaining TODO of merging the "event-notifications" branch of WOT to 
> the master branch is to ask you guys for your opinion on whether you are OK 
> with the FCP API. This mail does that.
>
> Short summary of what event-notifications provides: Before 
> event-notifications, 
> a WOT client would be implemented by periodically polling WOT for identities 
> / 
> trusts / scores. This caused a lot of database queries and made everything 
> slow and laggy.
> With event-notifications, clients of WOT subscribe to types of objects which 
> they are interested in: Identities / Trusts / Scores / and in the future 
> introduction puzzles. WOT will then send all known objects at time of 
> subscripion once, and afterwards keep the client up to date by only sending 
> single objects as they are changed (= as an event happens). This causes 
> database
> and network traffic only to happen when there is an actual need for it.
>
> I originally wanted to link you to the JavaDoc but we currently do not have a 
> proper way of auto-generating it on a webserver.
> I had a better idea though: The end of this  mail will contain a dump of the 
> FCP traffic between a client of event-notifications and WOT. So you can have
> a look at how the communication typically looks.
> Before that, there will be a copy-pasta of the JavaDoc of the "Subscribe" FCP 
> function - this is the initial function which enables event-notifications. 
> Its 
> JavaDoc will give you a rough idea of how to interpret the following FCP dump.
>
> NOTICE: Even though by this mail significant effort is being spent on making 
> FCP 
> easy to use by client authors, you should only implement an actual FCP client 
> as a last resort: I've done the job of implementing a Java class 
> "FCPClientReferenceImplementation" which serves the purpose of providing a 
> reference client to event-notifications. This took around 3 weeks, is ~1000 
> lines and very thoroughly tested. Please use it.
>
>
> FCP "Subscribe" JavaDoc (removed some uninteresting parts):
> ------------------------------------------------------------------------------
> Processes the "Subscribe" FCP message, filing a {@link Subscription} to 
> event-{@link Notification}s via {@link SubscriptionManager}.
> Required fields:
> "To" = "Identities" | "Trusts" | "Scores" - chooses among {@link 
> IdentitiesSubscription} / {@link TrustsSubscription} / 
> {@link ScoresSubscription}.
>
> Reply:
> The reply consists of two separate FCP messages:
> The first message is "Message" = "Identities" | "Trusts" | "Scores".
> It contains the full dataset of the type you have subscribed to. 
> By storing this dataset, your client is completely synchronized with WOT. 
> Upon 
> changes of anything, WOT will only have to send
> the single {@link Identity}/{@link Trust}/{@link Score} object which has 
> changed for your client to be fully synchronized again.
>
> This message is send via the synchronous FCP-API: You can signal that 
> processing it failed by returning an error in the FCP message processor. This 
> allows your client to be programmed in a transactional style: If part of the 
> transaction which
> stores the dataset fails, you can just roll it back and signal the error to 
> WOT. It will rollback the subscription then and
> send an "Error" message, indicating that subscribing failed. You must file 
> another subscription attempt then.
>
> The second message is formatted as:
> "Message" = "Subscribed"
> "SubscriptionID" = Random {@link UUID} of the Subscription.
> "To" = Same as the "To" field of your original message.
>
> Errors:
> If you are already subscribed to the selected type, you will only receive a 
> message:
> "Message" = "Error"
> "Description" = 
> "plugins.WebOfTrust.SubscriptionManager$SubscriptionExistsAlreadyException"
> "SubscriptionID" = Same as in the original "Subscribed" message
> "To" = Same as you requested
> "OriginalMessage" = "Subscribe"
>
> {@link Notification}s:
> Further  messages will be sent at any time in the future if an {@link 
> Identity} / {@link Trust} / {@link Score}
> object has changed. They will contain the version of the object before the 
> change and after the change. 
> These messages are also send with the synchronous FCP API. In opposite to the 
> initial synchronization message, by replying with failure to the synchronous 
> FCP call, you can signal that you want to receive the same notification again.
> After a typical delay of {@link 
> SubscriptionManager#PROCESS_NOTIFICATIONS_DELAY}, it will be re-sent.
> There is a maximal amount of {@link 
> SubscriptionManager#DISCONNECT_CLIENT_AFTER_FAILURE_COUNT} failures per FCP-
> Client.
> If you exceed this limit, your subscriptions will be terminated. You will 
> receive an "Unsubscribed" message then as long as your client has not 
> terminated the FCP connection. See {@link #handleUnsubscribe(SimpleFieldSet)}.
> The fact that you can request a notification to be re-sent may also be used 
> to 
> program your client in a transactional style.
> If the transaction which processes an event-notification fails, you can 
> indicate failure to the synchronous FCP sender and
> WOT will then re-send the notification, causing the transaction to be retried.
>
> If your client is shutting down or not interested in the subscription 
> anymore, 
> you should send an "Unsubscribe" message.
> See {@link #handleUnsubscribe(SimpleFieldSet)}. This will make sure that WOT 
> stops gathering data for your subscription,
> which would be expensive to do if its not even needed. But if you cannot send 
> the message anymore due to a dropped connection,
> the subscription will be terminated automatically after some time due to 
> notification-deployment failing. Nevertheless,
> please always unsubscribe when possible.
> ------------------------------------------------------------------------------
>
> FCP dump of a typical connection which subscribes to all types of objects::
> (Notice that the duplicate fields are for backwards compatibility with old 
> clients.
> They are present even in event-notifications because the functions for 
> generating
> FCP data are re-used in different areas of code.)
> ------------------------------------------------------------------------------
> ---------------- Fri Oct 25 02:14:07 CEST 2013 Connected. ---------------- 
> ---------------- Fri Oct 25 02:14:07 CEST 2013 Sent: ---------------- 
> Message=Subscribe
> To=Identities
> End
>
> ---------------- Fri Oct 25 02:14:08 CEST 2013 Received: ---------------- 
> Message=Identities
> Identities.Amount=5
> Identities.0.CurrentEditionFetchState=NotFetched
> Identities.0.ID=QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE
> Identities.0.Identity=QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE
> Identities.0.PublishesTrustList=true
> Identities.0.RequestURI=USK@QeTBVWTwBldfI-
> lrF~xf0nqFVDdQoSUghT~PvhyJ1NE,OjEywGD063La2H-
> IihD7iYtZm3rC0BP6UTvvwyF5Zh4,AQACAAE/WebOfTrust/1344
> Identities.0.Type=Identity
> Identities.0.Contexts.Amount=0
> Identities.0.Properties.Amount=0
> Identities.1.CurrentEditionFetchState=NotFetched
> Identities.1.ID=D3MrAR-AVMqKJRjXnpKW2guW9z1mw5GZ9BB15mYVkVc
> Identities.1.Identity=D3MrAR-AVMqKJRjXnpKW2guW9z1mw5GZ9BB15mYVkVc
> Identities.1.PublishesTrustList=true
> Identities.1.RequestURI=USK@D3MrAR-
> AVMqKJRjXnpKW2guW9z1mw5GZ9BB15mYVkVc,xgddjFHx2S~5U6PeFkwqO5V~1gZngFLoM-
> xaoMKSBI8,AQACAAE/WebOfTrust/4959
> Identities.1.Type=Identity
> Identities.1.Contexts.Amount=0
> Identities.1.Properties.Amount=0
> Identities.2.CurrentEditionFetchState=NotFetched
> Identities.2.ID=s88mAwLB3OW6mYlZ43XaHDM1K6QXosZ4QTt2UX-hq6s
> Identities.2.Identity=s88mAwLB3OW6mYlZ43XaHDM1K6QXosZ4QTt2UX-hq6s
> Identities.2.PublishesTrustList=true
> Identities.2.RequestURI=USK@s88mAwLB3OW6mYlZ43XaHDM1K6QXosZ4QTt2UX-
> hq6s,555tpw1TUReXUixAMDQD3RcD6gUKwOBCDQ6Dot2v6qg,AQACAAE/WebOfTrust/5
> Identities.2.Type=Identity
> Identities.2.Contexts.Amount=0
> Identities.2.Properties.Amount=0
> Identities.3.CurrentEditionFetchState=NotFetched
> Identities.3.ID=z9dv7wqsxIBCiFLW7VijMGXD9Gl-EXAqBAwzQ4aq26s
> Identities.3.Identity=z9dv7wqsxIBCiFLW7VijMGXD9Gl-EXAqBAwzQ4aq26s
> Identities.3.PublishesTrustList=true
> Identities.3.RequestURI=USK@z9dv7wqsxIBCiFLW7VijMGXD9Gl-
> EXAqBAwzQ4aq26s,4Uvc~Fjw3i9toGeQuBkDARUV5mF7OTKoAhqOA9LpNdo,AQACAAE/WebOfTrust/1270
> Identities.3.Type=Identity
> Identities.3.Contexts.Amount=0
> Identities.3.Properties.Amount=0
> Identities.4.CurrentEditionFetchState=NotFetched
> Identities.4.ID=o2~q8EMoBkCNEgzLUL97hLPdddco9ix1oAnEa~VzZtg
> Identities.4.Identity=o2~q8EMoBkCNEgzLUL97hLPdddco9ix1oAnEa~VzZtg
> Identities.4.PublishesTrustList=true
> Identities.4.RequestURI=USK@o2~q8EMoBkCNEgzLUL97hLPdddco9ix1oAnEa~VzZtg,X~vTpL2LSyKvwQoYBx~eleI2RF6QzYJpzuenfcKDKBM,AQACAAE/WebOfTrust/9379
> Identities.4.Type=Identity
> Identities.4.Contexts.Amount=0
> Identities.4.Properties.Amount=0
> End
>
> ---------------- Fri Oct 25 02:14:08 CEST 2013 Received: ---------------- 
> Message=Subscribed
> SubscriptionID=19b22c4e-b902-4e1a-8dfd-704499ce3fe2
> To=Identities
> End
>
> ---------------- Fri Oct 25 02:14:08 CEST 2013 Sent: ---------------- 
> Message=Subscribe
> To=Trusts
> End
>
> ---------------- Fri Oct 25 02:14:08 CEST 2013 Received: ---------------- 
> Message=Trusts
> Trusts.Amount=0
> End
>
> ---------------- Fri Oct 25 02:14:08 CEST 2013 Received: ---------------- 
> Message=Subscribed
> SubscriptionID=c27ef403-2550-41be-bb35-42c5886729f5
> To=Trusts
> End
>
> ---------------- Fri Oct 25 02:14:08 CEST 2013 Sent: ---------------- 
> Message=Subscribe
> To=Scores
> End
>
> ---------------- Fri Oct 25 02:14:08 CEST 2013 Received: ---------------- 
> Message=Scores
> Scores.Amount=0
> End
>
> ---------------- Fri Oct 25 02:14:08 CEST 2013 Received: ---------------- 
> Message=Subscribed
> SubscriptionID=031f7f79-3487-455b-9a91-78cec7e72d79
> To=Scores
> End
>
> ---------------- Fri Oct 25 02:15:20 CEST 2013 Received: ---------------- 
> Message=IdentityChangedNotification
> AfterChange.Context0=Introduction
> AfterChange.CurrentEditionFetchState=Fetched
> AfterChange.CurrentEditionFetchState0=Fetched
> AfterChange.ID=WNOyZsnZtpFjwmwfVBqC1PhSeg-hErXHlkrR43h0tiU
> AfterChange.ID0=WNOyZsnZtpFjwmwfVBqC1PhSeg-hErXHlkrR43h0tiU
> AfterChange.Identity=WNOyZsnZtpFjwmwfVBqC1PhSeg-hErXHlkrR43h0tiU
> AfterChange.Identity0=WNOyZsnZtpFjwmwfVBqC1PhSeg-hErXHlkrR43h0tiU
> AfterChange.InsertURI=USK@AILRi~9nfD2pesTkeDvwZxe3cRmkY7Q00CUxQyUOVW-
> H,GzEIwcFQ78J7-RCzxgvY4Pfq0T8Lm4v0BazjMtkqT~8,AQECAAE/WebOfTrust/0
> AfterChange.InsertURI0=USK@AILRi~9nfD2pesTkeDvwZxe3cRmkY7Q00CUxQyUOVW-
> H,GzEIwcFQ78J7-RCzxgvY4Pfq0T8Lm4v0BazjMtkqT~8,AQECAAE/WebOfTrust/0
> AfterChange.Nickname=Alexandre_Umpleby
> AfterChange.Nickname0=Alexandre_Umpleby
> AfterChange.PublishesTrustList=true
> AfterChange.PublishesTrustList0=true
> AfterChange.RequestURI=USK@WNOyZsnZtpFjwmwfVBqC1PhSeg-
> hErXHlkrR43h0tiU,GzEIwcFQ78J7-
> RCzxgvY4Pfq0T8Lm4v0BazjMtkqT~8,AQACAAE/WebOfTrust/0
> AfterChange.RequestURI0=USK@WNOyZsnZtpFjwmwfVBqC1PhSeg-
> hErXHlkrR43h0tiU,GzEIwcFQ78J7-
> RCzxgvY4Pfq0T8Lm4v0BazjMtkqT~8,AQACAAE/WebOfTrust/0
> AfterChange.Type=OwnIdentity
> AfterChange.Type0=OwnIdentity
> AfterChange.Contexts.Amount=1
> AfterChange.Contexts.0.Name=Introduction
> AfterChange.Contexts0.Amount=1
> AfterChange.Contexts0.Context0=Introduction
> AfterChange.Identities.Amount=1
> AfterChange.Identities.0.Context0=Introduction
> AfterChange.Identities.0.CurrentEditionFetchState=Fetched
> AfterChange.Identities.0.ID=WNOyZsnZtpFjwmwfVBqC1PhSeg-hErXHlkrR43h0tiU
> AfterChange.Identities.0.Identity=WNOyZsnZtpFjwmwfVBqC1PhSeg-hErXHlkrR43h0tiU
> AfterChange.Identities.0.InsertURI=USK@AILRi~9nfD2pesTkeDvwZxe3cRmkY7Q00CUxQyUOVW-
> H,GzEIwcFQ78J7-RCzxgvY4Pfq0T8Lm4v0BazjMtkqT~8,AQECAAE/WebOfTrust/0
> AfterChange.Identities.0.Nickname=Alexandre_Umpleby
> AfterChange.Identities.0.PublishesTrustList=true
> AfterChange.Identities.0.RequestURI=USK@WNOyZsnZtpFjwmwfVBqC1PhSeg-
> hErXHlkrR43h0tiU,GzEIwcFQ78J7-
> RCzxgvY4Pfq0T8Lm4v0BazjMtkqT~8,AQACAAE/WebOfTrust/0
> AfterChange.Identities.0.Type=OwnIdentity
> AfterChange.Identities.0.Contexts.Amount=1
> AfterChange.Identities.0.Contexts.0.Name=Introduction
> AfterChange.Identities.0.Properties.Amount=1
> AfterChange.Identities.0.Properties.0.Name=IntroductionPuzzleCount
> AfterChange.Identities.0.Properties.0.Value=10
> AfterChange.Identities.0.Property0.Name=IntroductionPuzzleCount
> AfterChange.Identities.0.Property0.Value=10
> AfterChange.Properties.Amount=1
> AfterChange.Properties.0.Name=IntroductionPuzzleCount
> AfterChange.Properties.0.Value=10
> AfterChange.Properties0.Amount=1
> AfterChange.Properties0.Property0.Name=IntroductionPuzzleCount
> AfterChange.Properties0.Property0.Value=10
> AfterChange.Property0.Name=IntroductionPuzzleCount
> AfterChange.Property0.Value=10
> BeforeChange.Type=Inexistent
> BeforeChange.Type0=Inexistent
> BeforeChange.Identities.0.Type=Inexistent
> End
>
> ---------------- Fri Oct 25 02:15:21 CEST 2013 Received: ---------------- 
> Message=ScoreChangedNotification
> AfterChange.Scores.Amount=1
> AfterChange.Scores.0.Capacity=100
> AfterChange.Scores.0.Rank=0
> AfterChange.Scores.0.Trustee=WNOyZsnZtpFjwmwfVBqC1PhSeg-hErXHlkrR43h0tiU
> AfterChange.Scores.0.Truster=WNOyZsnZtpFjwmwfVBqC1PhSeg-hErXHlkrR43h0tiU
> AfterChange.Scores.0.Value=2147483647
> BeforeChange.Scores.0.Value=Inexistent
> End
>
> ---------------- Fri Oct 25 02:15:21 CEST 2013 Received: ---------------- 
> Message=TrustChangedNotification
> AfterChange.Trusts.Amount=1
> AfterChange.Trusts.0.Comment=Automatically assigned trust to a seed identity.
> AfterChange.Trusts.0.Trustee=QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE
> AfterChange.Trusts.0.Truster=WNOyZsnZtpFjwmwfVBqC1PhSeg-hErXHlkrR43h0tiU
> AfterChange.Trusts.0.TrusterEdition=0
> AfterChange.Trusts.0.Value=100
> BeforeChange.Trusts.0.Value=Inexistent
> End
>
> ---------------- Fri Oct 25 02:15:21 CEST 2013 Received: ---------------- 
> Message=TrustChangedNotification
> AfterChange.Trusts.Amount=1
> AfterChange.Trusts.0.Comment=Automatically assigned trust to a seed identity.
> AfterChange.Trusts.0.Trustee=z9dv7wqsxIBCiFLW7VijMGXD9Gl-EXAqBAwzQ4aq26s
> AfterChange.Trusts.0.Truster=WNOyZsnZtpFjwmwfVBqC1PhSeg-hErXHlkrR43h0tiU
> AfterChange.Trusts.0.TrusterEdition=0
> AfterChange.Trusts.0.Value=100
> BeforeChange.Trusts.0.Value=Inexistent
> End
>
> ---------------- Fri Oct 25 02:15:21 CEST 2013 Received: ---------------- 
> Message=TrustChangedNotification
> AfterChange.Trusts.Amount=1
> AfterChange.Trusts.0.Comment=Automatically assigned trust to a seed identity.
> AfterChange.Trusts.0.Trustee=o2~q8EMoBkCNEgzLUL97hLPdddco9ix1oAnEa~VzZtg
> AfterChange.Trusts.0.Truster=WNOyZsnZtpFjwmwfVBqC1PhSeg-hErXHlkrR43h0tiU
> AfterChange.Trusts.0.TrusterEdition=0
> AfterChange.Trusts.0.Value=100
> BeforeChange.Trusts.0.Value=Inexistent
> End
>
> ---------------- Fri Oct 25 02:15:21 CEST 2013 Received: ---------------- 
> Message=TrustChangedNotification
> AfterChange.Trusts.Amount=1
> AfterChange.Trusts.0.Comment=Automatically assigned trust to a seed identity.
> AfterChange.Trusts.0.Trustee=D3MrAR-AVMqKJRjXnpKW2guW9z1mw5GZ9BB15mYVkVc
> AfterChange.Trusts.0.Truster=WNOyZsnZtpFjwmwfVBqC1PhSeg-hErXHlkrR43h0tiU
> AfterChange.Trusts.0.TrusterEdition=0
> AfterChange.Trusts.0.Value=100
> BeforeChange.Trusts.0.Value=Inexistent
> End
>
> ---------------- Fri Oct 25 02:15:21 CEST 2013 Received: ---------------- 
> Message=TrustChangedNotification
> AfterChange.Trusts.Amount=1
> AfterChange.Trusts.0.Comment=Automatically assigned trust to a seed identity.
> AfterChange.Trusts.0.Trustee=s88mAwLB3OW6mYlZ43XaHDM1K6QXosZ4QTt2UX-hq6s
> AfterChange.Trusts.0.Truster=WNOyZsnZtpFjwmwfVBqC1PhSeg-hErXHlkrR43h0tiU
> AfterChange.Trusts.0.TrusterEdition=0
> AfterChange.Trusts.0.Value=100
> BeforeChange.Trusts.0.Value=Inexistent
> End
>
> ---------------- Fri Oct 25 02:15:21 CEST 2013 Received: ---------------- 
> Message=ScoreChangedNotification
> AfterChange.Scores.Amount=1
> AfterChange.Scores.0.Capacity=40
> AfterChange.Scores.0.Rank=1
> AfterChange.Scores.0.Trustee=QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE
> AfterChange.Scores.0.Truster=WNOyZsnZtpFjwmwfVBqC1PhSeg-hErXHlkrR43h0tiU
> AfterChange.Scores.0.Value=100
> BeforeChange.Scores.0.Value=Inexistent
> End
>
> ---------------- Fri Oct 25 02:15:21 CEST 2013 Received: ---------------- 
> Message=IdentityChangedNotification
> AfterChange.CurrentEditionFetchState=NotFetched
> AfterChange.CurrentEditionFetchState0=NotFetched
> AfterChange.ID=QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE
> AfterChange.ID0=QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE
> AfterChange.Identity=QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE
> AfterChange.Identity0=QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE
> AfterChange.PublishesTrustList=true
> AfterChange.PublishesTrustList0=true
> AfterChange.RequestURI=USK@QeTBVWTwBldfI-
> lrF~xf0nqFVDdQoSUghT~PvhyJ1NE,OjEywGD063La2H-
> IihD7iYtZm3rC0BP6UTvvwyF5Zh4,AQACAAE/WebOfTrust/1343
> AfterChange.RequestURI0=USK@QeTBVWTwBldfI-
> lrF~xf0nqFVDdQoSUghT~PvhyJ1NE,OjEywGD063La2H-
> IihD7iYtZm3rC0BP6UTvvwyF5Zh4,AQACAAE/WebOfTrust/1343
> AfterChange.Type=Identity
> AfterChange.Type0=Identity
> AfterChange.Contexts.Amount=0
> AfterChange.Contexts0.Amount=0
> AfterChange.Identities.Amount=1
> AfterChange.Identities.0.CurrentEditionFetchState=NotFetched
> AfterChange.Identities.0.ID=QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE
> AfterChange.Identities.0.Identity=QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE
> AfterChange.Identities.0.PublishesTrustList=true
> AfterChange.Identities.0.RequestURI=USK@QeTBVWTwBldfI-
> lrF~xf0nqFVDdQoSUghT~PvhyJ1NE,OjEywGD063La2H-
> IihD7iYtZm3rC0BP6UTvvwyF5Zh4,AQACAAE/WebOfTrust/1343
> AfterChange.Identities.0.Type=Identity
> AfterChange.Identities.0.Contexts.Amount=0
> AfterChange.Identities.0.Properties.Amount=0
> AfterChange.Properties.Amount=0
> AfterChange.Properties0.Amount=0
> BeforeChange.CurrentEditionFetchState=NotFetched
> BeforeChange.CurrentEditionFetchState0=NotFetched
> BeforeChange.ID=QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE
> BeforeChange.ID0=QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE
> BeforeChange.Identity=QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE
> BeforeChange.Identity0=QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE
> BeforeChange.PublishesTrustList=true
> BeforeChange.PublishesTrustList0=true
> BeforeChange.RequestURI=USK@QeTBVWTwBldfI-
> lrF~xf0nqFVDdQoSUghT~PvhyJ1NE,OjEywGD063La2H-
> IihD7iYtZm3rC0BP6UTvvwyF5Zh4,AQACAAE/WebOfTrust/1344
> BeforeChange.RequestURI0=USK@QeTBVWTwBldfI-
> lrF~xf0nqFVDdQoSUghT~PvhyJ1NE,OjEywGD063La2H-
> IihD7iYtZm3rC0BP6UTvvwyF5Zh4,AQACAAE/WebOfTrust/1344
> BeforeChange.Type=Identity
> BeforeChange.Type0=Identity
> BeforeChange.Contexts.Amount=0
> BeforeChange.Contexts0.Amount=0
> BeforeChange.Identities.Amount=1
> BeforeChange.Identities.0.CurrentEditionFetchState=NotFetched
> BeforeChange.Identities.0.ID=QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE
> BeforeChange.Identities.0.Identity=QeTBVWTwBldfI-lrF~xf0nqFVDdQoSUghT~PvhyJ1NE
> BeforeChange.Identities.0.PublishesTrustList=true
> BeforeChange.Identities.0.RequestURI=USK@QeTBVWTwBldfI-
> lrF~xf0nqFVDdQoSUghT~PvhyJ1NE,OjEywGD063La2H-
> IihD7iYtZm3rC0BP6UTvvwyF5Zh4,AQACAAE/WebOfTrust/1344
> BeforeChange.Identities.0.Type=Identity
> BeforeChange.Identities.0.Contexts.Amount=0
> BeforeChange.Identities.0.Properties.Amount=0
> BeforeChange.Properties.Amount=0
> BeforeChange.Properties0.Amount=0
> End
>
> ---------------- Fri Oct 25 02:15:21 CEST 2013 Received: ---------------- 
> Message=ScoreChangedNotification
> AfterChange.Scores.Amount=1
> AfterChange.Scores.0.Capacity=40
> AfterChange.Scores.0.Rank=1
> AfterChange.Scores.0.Trustee=D3MrAR-AVMqKJRjXnpKW2guW9z1mw5GZ9BB15mYVkVc
> AfterChange.Scores.0.Truster=WNOyZsnZtpFjwmwfVBqC1PhSeg-hErXHlkrR43h0tiU
> AfterChange.Scores.0.Value=100
> BeforeChange.Scores.0.Value=Inexistent
> End
>
> ---------------- Fri Oct 25 02:43:57 CEST 2013 Sent: ---------------- 
> Message=Unsubscribe
> SubscriptionID=19b22c4e-b902-4e1a-8dfd-704499ce3fe2
> End
>
> ---------------- Fri Oct 25 02:43:57 CEST 2013 Sent: ---------------- 
> Message=Unsubscribe
> SubscriptionID=c27ef403-2550-41be-bb35-42c5886729f5
> End
>
> ---------------- Fri Oct 25 02:43:57 CEST 2013 Sent: ---------------- 
> Message=Unsubscribe
> SubscriptionID=031f7f79-3487-455b-9a91-78cec7e72d79
> End
>
> ---------------- Fri Oct 25 02:43:57 CEST 2013 Received: ---------------- 
> From=Identities
> Message=Unsubscribed
> SubscriptionID=19b22c4e-b902-4e1a-8dfd-704499ce3fe2
> End
>
> ---------------- Fri Oct 25 02:43:57 CEST 2013 Received: ---------------- 
> From=Scores
> Message=Unsubscribed
> SubscriptionID=031f7f79-3487-455b-9a91-78cec7e72d79
> End
>
> ---------------- Fri Oct 25 02:43:57 CEST 2013 Received: ---------------- 
> From=Trusts
> Message=Unsubscribed
> SubscriptionID=c27ef403-2550-41be-bb35-42c5886729f5
> End
>
> ---------------- Fri Oct 25 02:44:00 CEST 2013 Disconnected. ---------------- 
> ------------------------------------------------------------------------------
>
The initial state could be huge. Please don't send it as part of the FCP
message's SimpleFieldSet. Either split it up into multiple messages
(e.g. one per identity; but then make sure there is some way of telling
that you got all of them), or (probably better) put it in a Bucket i.e.
a data field.

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Devl mailing list
Devl@freenetproject.org
https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to