<div dir="ltr">I'd love to see a simple IClientAPI that totally abstracted all of the client implementation dependancies and made it easy to use alternate viewers besides the Linden one. What I really want is something simple I can plug in and get R/W access to Scene and notification of Scene updates.<br>
<br><div class="gmail_quote">On Sat, Sep 13, 2008 at 8:03 PM, Frisby, Adam <span dir="ltr"><<a href="mailto:adam@deepthink.com.au">adam@deepthink.com.au</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
My thoughts for that was along the lines of:<br>
<br>
[SERVER] Client connecting at WW.XX.YY.ZZ, supports <InstantMessaging, Chat, Primitives>.<br>
<font color="#888888"><br>
Adam<br>
</font><div class="Ih2E3d"><br>
> -----Original Message-----<br>
> From: <a href="mailto:opensim-dev-bounces@lists.berlios.de">opensim-dev-bounces@lists.berlios.de</a> [mailto:<a href="mailto:opensim-dev-">opensim-dev-</a><br>
</div><div class="Ih2E3d">> <a href="mailto:bounces@lists.berlios.de">bounces@lists.berlios.de</a>] On Behalf Of Melanie<br>
> Sent: Saturday, 13 September 2008 8:10 PM<br>
> To: <a href="mailto:opensim-dev@lists.berlios.de">opensim-dev@lists.berlios.de</a><br>
</div><div><div></div><div class="Wj3C7c">> Subject: Re: [Opensim-dev] Restructuring IClientAPI - thoughts wanted<br>
><br>
> Is there even a need to enumerate?<br>
><br>
> Basically, each class is either an event consumer or a message<br>
> sender. IN either case, they would know the interface they're<br>
> looking for. So, enumeration seems unnecessary.<br>
> If we do need to do it, it would be infrequent, so the performance<br>
> hit of reflection seems very much acceptable.<br>
><br>
> if (client is IInstantMessageService)<br>
>         ((IInstantMessageService)client).OnInstantMessage +=<br>
> OnInstantMessage;<br>
><br>
> Looks like a winner!<br>
><br>
> +1<br>
><br>
> Melanie<br>
><br>
> Frisby, Adam wrote:<br>
> > Slight correction suggestion, IClientAPI actually is redundant in<br>
> that situation - there's no reason why we need to keep HasInterface as<br>
> long as we can do "Client is <type/interface>". GetInterfaces() could<br>
> be replaced with a quick search via reflection (GetTypes)<br>
> ><br>
> > Adam<br>
> ><br>
> > From: <a href="mailto:opensim-dev-bounces@lists.berlios.de">opensim-dev-bounces@lists.berlios.de</a> [mailto:<a href="mailto:opensim-dev-">opensim-dev-</a><br>
> <a href="mailto:bounces@lists.berlios.de">bounces@lists.berlios.de</a>] On Behalf Of Frisby, Adam<br>
> > Sent: Saturday, 13 September 2008 7:41 PM<br>
> > To: <a href="mailto:opensim-dev@lists.berlios.de">opensim-dev@lists.berlios.de</a><br>
> > Subject: [Opensim-dev] Restructuring IClientAPI - thoughts wanted<br>
> ><br>
> > I'm in the process of adding support for some alternate clients to<br>
> OpenSim, and one of the things I'm noticing is that there is one one<br>
> chunk of OpenSim in particular that is highly "LL-Specific" in how it<br>
> treats things - it's also comparatively a very small chunk of OpenSim<br>
> that might actually be fixable quite easily.<br>
> ><br>
> > That is to say, IClientAPI - I'm thinking of replacing IClientAPI<br>
> with a very small interface:<br>
> ><br>
> > bool                       IClientAPI.HasInterface<T>();<br>
> > type[]                   IClientAPI.GetInterfaces();<br>
> ><br>
> > Then replacing the current web of .Xyz with smaller more discrete<br>
> interfaces such as:<br>
> ><br>
> ><br>
> > IClientInstantMessage {<br>
> ><br>
> > SendMessage(...);<br>
> ><br>
> > event OnNewMessage;<br>
> ><br>
> > }<br>
> ><br>
> > We can do checks on them in our modules, where once we did:<br>
> ><br>
> > OnNewClient(IClientAPI client) {<br>
> >      client.OnNewMessage += messageHandler;<br>
> > }<br>
> ><br>
> > We replace with<br>
> ><br>
> ><br>
> > OnNewClient(IClientAPI client) {<br>
> ><br>
> >      If(client.HasInterface<IClientInstantMessage>()) {<br>
> ><br>
> >           ((IClientInstantMessage)client).OnNewMessage +=<br>
> messageHandler;<br>
> ><br>
> > }<br>
> ><br>
> > }<br>
> ><br>
> > The resulting code is then more friendly for third party clients, and<br>
> clients don't need to support the full set of functionality to register<br>
> as valid Clients inside of OpenSim.<br>
> ><br>
> > What's everyone's thoughts here?<br>
> ><br>
> > Good idea / bad / anyone got any better?<br>
> ><br>
> > Adam<br>
> ><br>
> ><br>
> ><br>
> > ---------------------------------------------------------------------<br>
> ---<br>
> ><br>
> > _______________________________________________<br>
> > Opensim-dev mailing list<br>
> > <a href="mailto:Opensim-dev@lists.berlios.de">Opensim-dev@lists.berlios.de</a><br>
> > <a href="https://lists.berlios.de/mailman/listinfo/opensim-dev" target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><br>
> _______________________________________________<br>
> Opensim-dev mailing list<br>
> <a href="mailto:Opensim-dev@lists.berlios.de">Opensim-dev@lists.berlios.de</a><br>
> <a href="https://lists.berlios.de/mailman/listinfo/opensim-dev" target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><br>
_______________________________________________<br>
Opensim-dev mailing list<br>
<a href="mailto:Opensim-dev@lists.berlios.de">Opensim-dev@lists.berlios.de</a><br>
<a href="https://lists.berlios.de/mailman/listinfo/opensim-dev" target="_blank">https://lists.berlios.de/mailman/listinfo/opensim-dev</a><br>
</div></div></blockquote></div><br></div>