aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/OptionalModules/Agent/InternetRelayClientView')
-rw-r--r--OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/IRCStackModule.cs41
-rw-r--r--OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs1399
-rw-r--r--OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs47
3 files changed, 1487 insertions, 0 deletions
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/IRCStackModule.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/IRCStackModule.cs
new file mode 100644
index 0000000..c182445
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/IRCStackModule.cs
@@ -0,0 +1,41 @@
1using System;
2using System.Collections.Generic;
3using System.Text;
4using Nini.Config;
5using OpenSim.Region.Framework.Interfaces;
6using OpenSim.Region.Framework.Scenes;
7
8namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView
9{
10 class IRCStackModule : IRegionModule
11 {
12 #region Implementation of IRegionModule
13
14 public void Initialise(Scene scene, IConfigSource source)
15 {
16 throw new System.NotImplementedException();
17 }
18
19 public void PostInitialise()
20 {
21 throw new System.NotImplementedException();
22 }
23
24 public void Close()
25 {
26 throw new System.NotImplementedException();
27 }
28
29 public string Name
30 {
31 get { throw new System.NotImplementedException(); }
32 }
33
34 public bool IsSharedModule
35 {
36 get { throw new System.NotImplementedException(); }
37 }
38
39 #endregion
40 }
41}
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
new file mode 100644
index 0000000..97731ee
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
@@ -0,0 +1,1399 @@
1using System;
2using System.Collections.Generic;
3using System.Net;
4using System.Net.Sockets;
5using System.Text;
6using System.Threading;
7using OpenMetaverse;
8using OpenMetaverse.Packets;
9using OpenSim.Framework;
10using OpenSim.Framework.Client;
11using OpenSim.Region.Framework.Scenes;
12
13namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
14{
15 class IRCClientView : IClientAPI, IClientCore, IClientIPEndpoint
16 {
17 private readonly TcpClient m_client;
18 private readonly Scene m_scene;
19
20 private string m_username;
21
22 private bool m_hasNick = false;
23 private bool m_hasUser = false;
24
25 public IRCClientView(TcpClient client, Scene scene)
26 {
27 m_client = client;
28 m_scene = scene;
29
30 Thread loopThread = new Thread(InternalLoop);
31 loopThread.Start();
32 }
33
34 private void SendCommand(string command)
35 {
36 lock(m_client)
37 {
38 byte[] buf = Encoding.UTF8.GetBytes(command + "\r\n");
39
40 m_client.GetStream().Write(buf, 0, buf.Length);
41 }
42 }
43
44 private string IrcRegionName
45 {
46 // I know &Channel is more technically correct, but people are used to seeing #Channel
47 // Dont shoot me!
48 get { return "#" + m_scene.RegionInfo.RegionName.Replace(" ", "-"); }
49 }
50
51 private void InternalLoop()
52 {
53 string strbuf = "";
54
55 while(true)
56 {
57 string line;
58 byte[] buf = new byte[520]; // RFC1459 defines max message size as 512.
59
60 lock (m_client)
61 {
62 int count = m_client.GetStream().Read(buf, 0, buf.Length);
63 line = Encoding.UTF8.GetString(buf, 0, count);
64 }
65
66 strbuf += line;
67
68 string message = ExtractMessage(strbuf);
69 if(message != null)
70 {
71 // Remove from buffer
72 strbuf = strbuf.Remove(0, message.Length);
73
74 // Extract command sequence
75 string command = ExtractCommand(message);
76 ProcessInMessage(message, command);
77 }
78
79 Thread.Sleep(0);
80 }
81 }
82
83 private void ProcessInMessage(string message, string command)
84 {
85 if(command != null)
86 {
87 switch(command)
88 {
89 case "ADMIN":
90 case "AWAY":
91 case "CONNECT":
92 case "DIE":
93 case "ERROR":
94 case "INFO":
95 case "INVITE":
96 case "ISON":
97 case "KICK":
98 case "KILL":
99 case "LINKS":
100 case "LUSERS":
101 case "MODE":
102 case "OPER":
103 case "PART":
104 case "REHASH":
105 case "SERVICE":
106 case "SERVLIST":
107 case "SERVER":
108 case "SQUERY":
109 case "SQUIT":
110 case "STATS":
111 case "SUMMON":
112 case "TIME":
113 case "TRACE":
114 case "USERHOST":
115 case "VERSION":
116 case "WALLOPS":
117 case "WHOIS":
118 case "WHOWAS":
119 SendCommand("421 ERR_UNKNOWNCOMMAND \"" + command + " :Command unimplemented\"");
120 break;
121
122 // Connection Commands
123 case "PASS":
124 break; // Ignore for now. I want to implement authentication later however.
125
126 case "JOIN":
127 break;
128
129 case "USER":
130 IRC_ProcessUser(message);
131 IRC_SendReplyJoin();
132
133 break;
134 case "NICK":
135 IRC_ProcessNick(message);
136 IRC_SendReplyJoin();
137
138 break;
139 case "TOPIC":
140 IRC_SendReplyTopic();
141 break;
142 case "USERS":
143 IRC_SendReplyUsers();
144 break;
145
146 case "LIST":
147 break; // TODO
148
149 case "MOTD":
150 IRC_SendMOTD();
151 break;
152
153 case "NOTICE": // TODO
154 case "WHO": // TODO
155 break;
156
157 case "PING":
158 IRC_ProcessPing(message);
159 break;
160
161 // Special case, ignore this completely.
162 case "PONG":
163 break;
164
165 case "QUIT":
166 if (OnDisconnectUser != null)
167 OnDisconnectUser();
168 break;
169
170 case "NAMES":
171 IRC_SendNamesReply();
172 break;
173 case "PRIVMSG":
174 IRC_ProcessPrivmsg(message);
175 break;
176
177 default:
178 SendCommand("421 ERR_UNKNOWNCOMMAND \"" + command + " :Unknown command\"");
179 break;
180 }
181 }
182 }
183
184 private void IRC_SendReplyJoin()
185 {
186 if (m_hasUser && m_hasNick)
187 {
188 IRC_SendReplyTopic();
189 IRC_SendNamesReply();
190 }
191 }
192
193 private void IRC_ProcessUser(string message)
194 {
195 string[] userArgs = ExtractParameters(message);
196 string username = userArgs[0];
197 string hostname = userArgs[1];
198 string servername = userArgs[2];
199 string realname = userArgs[3];
200
201 m_username = realname;
202 m_hasUser = true;
203 }
204
205 private void IRC_ProcessNick(string message)
206 {
207 string[] nickArgs = ExtractParameters(message);
208 string nickname = nickArgs[0];
209 m_hasNick = true;
210 }
211
212 private void IRC_ProcessPing(string message)
213 {
214 string[] pingArgs = ExtractParameters(message);
215 string pingHost = pingArgs[0];
216 SendCommand("PONG " + pingHost);
217 }
218
219 private void IRC_ProcessPrivmsg(string message)
220 {
221 string[] privmsgArgs = ExtractParameters(message);
222 if (privmsgArgs[0] == IrcRegionName)
223 {
224 if (OnChatFromClient != null)
225 {
226 OSChatMessage msg = new OSChatMessage();
227 msg.Sender = this;
228 msg.Channel = 0;
229 msg.From = this.Name;
230 msg.Message = privmsgArgs[1];
231 msg.Position = Vector3.Zero;
232 msg.Scene = m_scene;
233 msg.SenderObject = null;
234 msg.SenderUUID = this.AgentId;
235 msg.Type = ChatTypeEnum.Broadcast;
236
237 OnChatFromClient(this, msg);
238 }
239 }
240 else
241 {
242 // Handle as an IM, later.
243 }
244 }
245
246 private void IRC_SendNamesReply()
247 {
248 List<EntityBase> users = m_scene.Entities.GetAllByType<ScenePresence>();
249
250 foreach (EntityBase user in users)
251 {
252 SendCommand("353 RPL_NAMREPLY \"" + IrcRegionName + " :+" + user.Name.Replace(" ", ""));
253 }
254 SendCommand("366 RPL_ENDOFNAMES \"" + IrcRegionName + " :End of /NAMES list\"");
255 }
256
257 private void IRC_SendMOTD()
258 {
259 SendCommand("375 RPL_MOTDSTART \":- OpenSimulator Message of the day -");
260 SendCommand("372 RPL_MOTD \":- Hiya!");
261 SendCommand("376 RPL_ENDOFMOTD \":End of /MOTD command\"");
262 }
263
264 private void IRC_SendReplyTopic()
265 {
266 SendCommand("332 RPL_TOPIC \"" + IrcRegionName + " :OpenSimulator IRC Server\"");
267 }
268
269 private void IRC_SendReplyUsers()
270 {
271 List<EntityBase> users = m_scene.Entities.GetAllByType<ScenePresence>();
272
273 SendCommand("392 RPL_USERSSTART \":UserID Terminal Host\"");
274 foreach (EntityBase user in users)
275 {
276 char[] nom = new char[8];
277 char[] term = "terminal_".ToCharArray();
278 char[] host = "hostname".ToCharArray();
279
280 string userName = user.Name.Replace(" ","");
281 for (int i = 0; i < nom.Length; i++)
282 {
283 if (userName.Length < i)
284 nom[i] = userName[i];
285 else
286 nom[i] = ' ';
287 }
288
289 SendCommand("393 RPL_USERS \":" + nom + " " + term + " " + host + "\"");
290 }
291
292 SendCommand("394 RPL_ENDOFUSERS \":End of users\"");
293 }
294
295 private static string ExtractMessage(string buffer)
296 {
297 int pos = buffer.IndexOf("\r\n");
298
299 if (pos == -1)
300 return null;
301
302 string command = buffer.Substring(0, pos + 1);
303
304 return command;
305 }
306
307 private static string ExtractCommand(string msg)
308 {
309 string[] msgs = msg.Split(' ');
310
311 if(msgs.Length < 2)
312 return null;
313
314 if (msgs[0].StartsWith(":"))
315 return msgs[1];
316
317 return msgs[0];
318 }
319
320 private static string[] ExtractParameters(string msg)
321 {
322 string[] msgs = msg.Split(' ');
323 List<string> parms = new List<string>(msgs.Length);
324
325 bool foundCommand = false;
326 string command = ExtractCommand(msg);
327
328
329 for(int i=0;i<msgs.Length;i++)
330 {
331 if(msgs[i] == command)
332 {
333 foundCommand = true;
334 continue;
335 }
336
337 if(foundCommand != true)
338 continue;
339
340 if(i != 0 && msgs[i].StartsWith(":"))
341 {
342 List<string> tmp = new List<string>();
343 for(int j=i;j<msgs.Length;j++)
344 {
345 tmp.Add(msgs[j]);
346 }
347 parms.Add(string.Join(" ", tmp.ToArray()));
348 break;
349 }
350
351 parms.Add(msgs[i]);
352 }
353
354 return parms.ToArray();
355 }
356
357 #region Implementation of IClientAPI
358
359 public Vector3 StartPos
360 {
361 get { throw new System.NotImplementedException(); }
362 set { throw new System.NotImplementedException(); }
363 }
364
365 public bool TryGet<T>(out T iface)
366 {
367 throw new System.NotImplementedException();
368 }
369
370 public T Get<T>()
371 {
372 throw new System.NotImplementedException();
373 }
374
375 public UUID AgentId
376 {
377 get { return UUID.Zero; }
378 }
379
380 public void Disconnect(string reason)
381 {
382 throw new System.NotImplementedException();
383 }
384
385 public void Disconnect()
386 {
387 throw new System.NotImplementedException();
388 }
389
390 public UUID SessionId
391 {
392 get { throw new System.NotImplementedException(); }
393 }
394
395 public UUID SecureSessionId
396 {
397 get { throw new System.NotImplementedException(); }
398 }
399
400 public UUID ActiveGroupId
401 {
402 get { throw new System.NotImplementedException(); }
403 }
404
405 public string ActiveGroupName
406 {
407 get { throw new System.NotImplementedException(); }
408 }
409
410 public ulong ActiveGroupPowers
411 {
412 get { throw new System.NotImplementedException(); }
413 }
414
415 public ulong GetGroupPowers(UUID groupID)
416 {
417 throw new System.NotImplementedException();
418 }
419
420 public bool IsGroupMember(UUID GroupID)
421 {
422 throw new System.NotImplementedException();
423 }
424
425 public string FirstName
426 {
427 get { throw new System.NotImplementedException(); }
428 }
429
430 public string LastName
431 {
432 get { throw new System.NotImplementedException(); }
433 }
434
435 public IScene Scene
436 {
437 get { throw new System.NotImplementedException(); }
438 }
439
440 public int NextAnimationSequenceNumber
441 {
442 get { throw new System.NotImplementedException(); }
443 }
444
445 public string Name
446 {
447 get { throw new System.NotImplementedException(); }
448 }
449
450 public bool IsActive
451 {
452 get { throw new System.NotImplementedException(); }
453 set { throw new System.NotImplementedException(); }
454 }
455
456 public bool SendLogoutPacketWhenClosing
457 {
458 set { throw new System.NotImplementedException(); }
459 }
460
461 public uint CircuitCode
462 {
463 get { throw new System.NotImplementedException(); }
464 }
465
466 public event GenericMessage OnGenericMessage;
467 public event ImprovedInstantMessage OnInstantMessage;
468 public event ChatMessage OnChatFromClient;
469 public event TextureRequest OnRequestTexture;
470 public event RezObject OnRezObject;
471 public event ModifyTerrain OnModifyTerrain;
472 public event BakeTerrain OnBakeTerrain;
473 public event EstateChangeInfo OnEstateChangeInfo;
474 public event SetAppearance OnSetAppearance;
475 public event AvatarNowWearing OnAvatarNowWearing;
476 public event RezSingleAttachmentFromInv OnRezSingleAttachmentFromInv;
477 public event RezMultipleAttachmentsFromInv OnRezMultipleAttachmentsFromInv;
478 public event UUIDNameRequest OnDetachAttachmentIntoInv;
479 public event ObjectAttach OnObjectAttach;
480 public event ObjectDeselect OnObjectDetach;
481 public event ObjectDrop OnObjectDrop;
482 public event StartAnim OnStartAnim;
483 public event StopAnim OnStopAnim;
484 public event LinkObjects OnLinkObjects;
485 public event DelinkObjects OnDelinkObjects;
486 public event RequestMapBlocks OnRequestMapBlocks;
487 public event RequestMapName OnMapNameRequest;
488 public event TeleportLocationRequest OnTeleportLocationRequest;
489 public event DisconnectUser OnDisconnectUser;
490 public event RequestAvatarProperties OnRequestAvatarProperties;
491 public event SetAlwaysRun OnSetAlwaysRun;
492 public event TeleportLandmarkRequest OnTeleportLandmarkRequest;
493 public event DeRezObject OnDeRezObject;
494 public event Action<IClientAPI> OnRegionHandShakeReply;
495 public event GenericCall2 OnRequestWearables;
496 public event GenericCall2 OnCompleteMovementToRegion;
497 public event UpdateAgent OnAgentUpdate;
498 public event AgentRequestSit OnAgentRequestSit;
499 public event AgentSit OnAgentSit;
500 public event AvatarPickerRequest OnAvatarPickerRequest;
501 public event Action<IClientAPI> OnRequestAvatarsData;
502 public event AddNewPrim OnAddPrim;
503 public event FetchInventory OnAgentDataUpdateRequest;
504 public event TeleportLocationRequest OnSetStartLocationRequest;
505 public event RequestGodlikePowers OnRequestGodlikePowers;
506 public event GodKickUser OnGodKickUser;
507 public event ObjectDuplicate OnObjectDuplicate;
508 public event ObjectDuplicateOnRay OnObjectDuplicateOnRay;
509 public event GrabObject OnGrabObject;
510 public event ObjectSelect OnDeGrabObject;
511 public event MoveObject OnGrabUpdate;
512 public event SpinStart OnSpinStart;
513 public event SpinObject OnSpinUpdate;
514 public event SpinStop OnSpinStop;
515 public event UpdateShape OnUpdatePrimShape;
516 public event ObjectExtraParams OnUpdateExtraParams;
517 public event ObjectSelect OnObjectSelect;
518 public event ObjectDeselect OnObjectDeselect;
519 public event GenericCall7 OnObjectDescription;
520 public event GenericCall7 OnObjectName;
521 public event GenericCall7 OnObjectClickAction;
522 public event GenericCall7 OnObjectMaterial;
523 public event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily;
524 public event UpdatePrimFlags OnUpdatePrimFlags;
525 public event UpdatePrimTexture OnUpdatePrimTexture;
526 public event UpdateVector OnUpdatePrimGroupPosition;
527 public event UpdateVector OnUpdatePrimSinglePosition;
528 public event UpdatePrimRotation OnUpdatePrimGroupRotation;
529 public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation;
530 public event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation;
531 public event UpdateVector OnUpdatePrimScale;
532 public event UpdateVector OnUpdatePrimGroupScale;
533 public event StatusChange OnChildAgentStatus;
534 public event GenericCall2 OnStopMovement;
535 public event Action<UUID> OnRemoveAvatar;
536 public event ObjectPermissions OnObjectPermissions;
537 public event CreateNewInventoryItem OnCreateNewInventoryItem;
538 public event CreateInventoryFolder OnCreateNewInventoryFolder;
539 public event UpdateInventoryFolder OnUpdateInventoryFolder;
540 public event MoveInventoryFolder OnMoveInventoryFolder;
541 public event FetchInventoryDescendents OnFetchInventoryDescendents;
542 public event PurgeInventoryDescendents OnPurgeInventoryDescendents;
543 public event FetchInventory OnFetchInventory;
544 public event RequestTaskInventory OnRequestTaskInventory;
545 public event UpdateInventoryItem OnUpdateInventoryItem;
546 public event CopyInventoryItem OnCopyInventoryItem;
547 public event MoveInventoryItem OnMoveInventoryItem;
548 public event RemoveInventoryFolder OnRemoveInventoryFolder;
549 public event RemoveInventoryItem OnRemoveInventoryItem;
550 public event UDPAssetUploadRequest OnAssetUploadRequest;
551 public event XferReceive OnXferReceive;
552 public event RequestXfer OnRequestXfer;
553 public event ConfirmXfer OnConfirmXfer;
554 public event AbortXfer OnAbortXfer;
555 public event RezScript OnRezScript;
556 public event UpdateTaskInventory OnUpdateTaskInventory;
557 public event MoveTaskInventory OnMoveTaskItem;
558 public event RemoveTaskInventory OnRemoveTaskItem;
559 public event RequestAsset OnRequestAsset;
560 public event UUIDNameRequest OnNameFromUUIDRequest;
561 public event ParcelAccessListRequest OnParcelAccessListRequest;
562 public event ParcelAccessListUpdateRequest OnParcelAccessListUpdateRequest;
563 public event ParcelPropertiesRequest OnParcelPropertiesRequest;
564 public event ParcelDivideRequest OnParcelDivideRequest;
565 public event ParcelJoinRequest OnParcelJoinRequest;
566 public event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
567 public event ParcelSelectObjects OnParcelSelectObjects;
568 public event ParcelObjectOwnerRequest OnParcelObjectOwnerRequest;
569 public event ParcelAbandonRequest OnParcelAbandonRequest;
570 public event ParcelGodForceOwner OnParcelGodForceOwner;
571 public event ParcelReclaim OnParcelReclaim;
572 public event ParcelReturnObjectsRequest OnParcelReturnObjectsRequest;
573 public event ParcelDeedToGroup OnParcelDeedToGroup;
574 public event RegionInfoRequest OnRegionInfoRequest;
575 public event EstateCovenantRequest OnEstateCovenantRequest;
576 public event FriendActionDelegate OnApproveFriendRequest;
577 public event FriendActionDelegate OnDenyFriendRequest;
578 public event FriendshipTermination OnTerminateFriendship;
579 public event MoneyTransferRequest OnMoneyTransferRequest;
580 public event EconomyDataRequest OnEconomyDataRequest;
581 public event MoneyBalanceRequest OnMoneyBalanceRequest;
582 public event UpdateAvatarProperties OnUpdateAvatarProperties;
583 public event ParcelBuy OnParcelBuy;
584 public event RequestPayPrice OnRequestPayPrice;
585 public event ObjectSaleInfo OnObjectSaleInfo;
586 public event ObjectBuy OnObjectBuy;
587 public event BuyObjectInventory OnBuyObjectInventory;
588 public event RequestTerrain OnRequestTerrain;
589 public event RequestTerrain OnUploadTerrain;
590 public event ObjectIncludeInSearch OnObjectIncludeInSearch;
591 public event UUIDNameRequest OnTeleportHomeRequest;
592 public event ScriptAnswer OnScriptAnswer;
593 public event AgentSit OnUndo;
594 public event ForceReleaseControls OnForceReleaseControls;
595 public event GodLandStatRequest OnLandStatRequest;
596 public event DetailedEstateDataRequest OnDetailedEstateDataRequest;
597 public event SetEstateFlagsRequest OnSetEstateFlagsRequest;
598 public event SetEstateTerrainBaseTexture OnSetEstateTerrainBaseTexture;
599 public event SetEstateTerrainDetailTexture OnSetEstateTerrainDetailTexture;
600 public event SetEstateTerrainTextureHeights OnSetEstateTerrainTextureHeights;
601 public event CommitEstateTerrainTextureRequest OnCommitEstateTerrainTextureRequest;
602 public event SetRegionTerrainSettings OnSetRegionTerrainSettings;
603 public event EstateRestartSimRequest OnEstateRestartSimRequest;
604 public event EstateChangeCovenantRequest OnEstateChangeCovenantRequest;
605 public event UpdateEstateAccessDeltaRequest OnUpdateEstateAccessDeltaRequest;
606 public event SimulatorBlueBoxMessageRequest OnSimulatorBlueBoxMessageRequest;
607 public event EstateBlueBoxMessageRequest OnEstateBlueBoxMessageRequest;
608 public event EstateDebugRegionRequest OnEstateDebugRegionRequest;
609 public event EstateTeleportOneUserHomeRequest OnEstateTeleportOneUserHomeRequest;
610 public event EstateTeleportAllUsersHomeRequest OnEstateTeleportAllUsersHomeRequest;
611 public event UUIDNameRequest OnUUIDGroupNameRequest;
612 public event RegionHandleRequest OnRegionHandleRequest;
613 public event ParcelInfoRequest OnParcelInfoRequest;
614 public event RequestObjectPropertiesFamily OnObjectGroupRequest;
615 public event ScriptReset OnScriptReset;
616 public event GetScriptRunning OnGetScriptRunning;
617 public event SetScriptRunning OnSetScriptRunning;
618 public event UpdateVector OnAutoPilotGo;
619 public event TerrainUnacked OnUnackedTerrain;
620 public event ActivateGesture OnActivateGesture;
621 public event DeactivateGesture OnDeactivateGesture;
622 public event ObjectOwner OnObjectOwner;
623 public event DirPlacesQuery OnDirPlacesQuery;
624 public event DirFindQuery OnDirFindQuery;
625 public event DirLandQuery OnDirLandQuery;
626 public event DirPopularQuery OnDirPopularQuery;
627 public event DirClassifiedQuery OnDirClassifiedQuery;
628 public event EventInfoRequest OnEventInfoRequest;
629 public event ParcelSetOtherCleanTime OnParcelSetOtherCleanTime;
630 public event MapItemRequest OnMapItemRequest;
631 public event OfferCallingCard OnOfferCallingCard;
632 public event AcceptCallingCard OnAcceptCallingCard;
633 public event DeclineCallingCard OnDeclineCallingCard;
634 public event SoundTrigger OnSoundTrigger;
635 public event StartLure OnStartLure;
636 public event TeleportLureRequest OnTeleportLureRequest;
637 public event NetworkStats OnNetworkStatsUpdate;
638 public event ClassifiedInfoRequest OnClassifiedInfoRequest;
639 public event ClassifiedInfoUpdate OnClassifiedInfoUpdate;
640 public event ClassifiedDelete OnClassifiedDelete;
641 public event ClassifiedDelete OnClassifiedGodDelete;
642 public event EventNotificationAddRequest OnEventNotificationAddRequest;
643 public event EventNotificationRemoveRequest OnEventNotificationRemoveRequest;
644 public event EventGodDelete OnEventGodDelete;
645 public event ParcelDwellRequest OnParcelDwellRequest;
646 public event UserInfoRequest OnUserInfoRequest;
647 public event UpdateUserInfo OnUpdateUserInfo;
648 public event RetrieveInstantMessages OnRetrieveInstantMessages;
649 public event PickDelete OnPickDelete;
650 public event PickGodDelete OnPickGodDelete;
651 public event PickInfoUpdate OnPickInfoUpdate;
652 public event AvatarNotesUpdate OnAvatarNotesUpdate;
653 public event MuteListRequest OnMuteListRequest;
654 public event PlacesQuery OnPlacesQuery;
655 public void SetDebugPacketLevel(int newDebug)
656 {
657 throw new System.NotImplementedException();
658 }
659
660 public void InPacket(object NewPack)
661 {
662 throw new System.NotImplementedException();
663 }
664
665 public void ProcessInPacket(Packet NewPack)
666 {
667 throw new System.NotImplementedException();
668 }
669
670 public void Close(bool ShutdownCircuit)
671 {
672 throw new System.NotImplementedException();
673 }
674
675 public void Kick(string message)
676 {
677 throw new System.NotImplementedException();
678 }
679
680 public void Start()
681 {
682 throw new System.NotImplementedException();
683 }
684
685 public void Stop()
686 {
687 throw new System.NotImplementedException();
688 }
689
690 public void SendWearables(AvatarWearable[] wearables, int serial)
691 {
692 throw new System.NotImplementedException();
693 }
694
695 public void SendAppearance(UUID agentID, byte[] visualParams, byte[] textureEntry)
696 {
697 throw new System.NotImplementedException();
698 }
699
700 public void SendStartPingCheck(byte seq)
701 {
702 throw new System.NotImplementedException();
703 }
704
705 public void SendKillObject(ulong regionHandle, uint localID)
706 {
707 throw new System.NotImplementedException();
708 }
709
710 public void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs)
711 {
712 throw new System.NotImplementedException();
713 }
714
715 public void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args)
716 {
717 throw new System.NotImplementedException();
718 }
719
720 public void SendChatMessage(string message, byte type, Vector3 fromPos, string fromName, UUID fromAgentID, byte source, byte audible)
721 {
722 throw new System.NotImplementedException();
723 }
724
725 public void SendInstantMessage(GridInstantMessage im)
726 {
727 throw new System.NotImplementedException();
728 }
729
730 public void SendGenericMessage(string method, List<string> message)
731 {
732 throw new System.NotImplementedException();
733 }
734
735 public void SendLayerData(float[] map)
736 {
737 throw new System.NotImplementedException();
738 }
739
740 public void SendLayerData(int px, int py, float[] map)
741 {
742 throw new System.NotImplementedException();
743 }
744
745 public void SendWindData(Vector2[] windSpeeds)
746 {
747 throw new System.NotImplementedException();
748 }
749
750 public void SendCloudData(float[] cloudCover)
751 {
752 throw new System.NotImplementedException();
753 }
754
755 public void MoveAgentIntoRegion(RegionInfo regInfo, Vector3 pos, Vector3 look)
756 {
757 throw new System.NotImplementedException();
758 }
759
760 public void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint)
761 {
762 throw new System.NotImplementedException();
763 }
764
765 public AgentCircuitData RequestClientInfo()
766 {
767 throw new System.NotImplementedException();
768 }
769
770 public void CrossRegion(ulong newRegionHandle, Vector3 pos, Vector3 lookAt, IPEndPoint newRegionExternalEndPoint, string capsURL)
771 {
772 throw new System.NotImplementedException();
773 }
774
775 public void SendMapBlock(List<MapBlockData> mapBlocks, uint flag)
776 {
777 throw new System.NotImplementedException();
778 }
779
780 public void SendLocalTeleport(Vector3 position, Vector3 lookAt, uint flags)
781 {
782 throw new System.NotImplementedException();
783 }
784
785 public void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, uint flags, string capsURL)
786 {
787 throw new System.NotImplementedException();
788 }
789
790 public void SendTeleportFailed(string reason)
791 {
792 throw new System.NotImplementedException();
793 }
794
795 public void SendTeleportLocationStart()
796 {
797 throw new System.NotImplementedException();
798 }
799
800 public void SendMoneyBalance(UUID transaction, bool success, byte[] description, int balance)
801 {
802 throw new System.NotImplementedException();
803 }
804
805 public void SendPayPrice(UUID objectID, int[] payPrice)
806 {
807 throw new System.NotImplementedException();
808 }
809
810 public void SendAvatarData(ulong regionHandle, string firstName, string lastName, string grouptitle, UUID avatarID, uint avatarLocalID, Vector3 Pos, byte[] textureEntry, uint parentID, Quaternion rotation)
811 {
812 throw new System.NotImplementedException();
813 }
814
815 public void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, Vector3 position, Vector3 velocity, Quaternion rotation, UUID agentid)
816 {
817 throw new System.NotImplementedException();
818 }
819
820 public void SendCoarseLocationUpdate(List<UUID> users, List<Vector3> CoarseLocations)
821 {
822 throw new System.NotImplementedException();
823 }
824
825 public void AttachObject(uint localID, Quaternion rotation, byte attachPoint, UUID ownerID)
826 {
827 throw new System.NotImplementedException();
828 }
829
830 public void SetChildAgentThrottle(byte[] throttle)
831 {
832 throw new System.NotImplementedException();
833 }
834
835 public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, Vector3 pos, Vector3 vel, Vector3 acc, Quaternion rotation, Vector3 rvel, uint flags, UUID objectID, UUID ownerID, string text, byte[] color, uint parentID, byte[] particleSystem, byte clickAction, byte material, byte[] textureanim, bool attachment, uint AttachPoint, UUID AssetId, UUID SoundId, double SoundVolume, byte SoundFlags, double SoundRadius)
836 {
837 throw new System.NotImplementedException();
838 }
839
840 public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, Vector3 pos, Vector3 vel, Vector3 acc, Quaternion rotation, Vector3 rvel, uint flags, UUID objectID, UUID ownerID, string text, byte[] color, uint parentID, byte[] particleSystem, byte clickAction, byte material)
841 {
842 throw new System.NotImplementedException();
843 }
844
845 public void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, Vector3 position, Quaternion rotation, Vector3 velocity, Vector3 rotationalvelocity, byte state, UUID AssetId, UUID owner, int attachPoint)
846 {
847 throw new System.NotImplementedException();
848 }
849
850 public void SendInventoryFolderDetails(UUID ownerID, UUID folderID, List<InventoryItemBase> items, List<InventoryFolderBase> folders, bool fetchFolders, bool fetchItems)
851 {
852 throw new System.NotImplementedException();
853 }
854
855 public void FlushPrimUpdates()
856 {
857 throw new System.NotImplementedException();
858 }
859
860 public void SendInventoryItemDetails(UUID ownerID, InventoryItemBase item)
861 {
862 throw new System.NotImplementedException();
863 }
864
865 public void SendInventoryItemCreateUpdate(InventoryItemBase Item, uint callbackId)
866 {
867 throw new System.NotImplementedException();
868 }
869
870 public void SendRemoveInventoryItem(UUID itemID)
871 {
872 throw new System.NotImplementedException();
873 }
874
875 public void SendTakeControls(int controls, bool passToAgent, bool TakeControls)
876 {
877 throw new System.NotImplementedException();
878 }
879
880 public void SendTaskInventory(UUID taskID, short serial, byte[] fileName)
881 {
882 throw new System.NotImplementedException();
883 }
884
885 public void SendBulkUpdateInventory(InventoryNodeBase node)
886 {
887 throw new System.NotImplementedException();
888 }
889
890 public void SendXferPacket(ulong xferID, uint packet, byte[] data)
891 {
892 throw new System.NotImplementedException();
893 }
894
895 public void SendEconomyData(float EnergyEfficiency, int ObjectCapacity, int ObjectCount, int PriceEnergyUnit, int PriceGroupCreate, int PriceObjectClaim, float PriceObjectRent, float PriceObjectScaleFactor, int PriceParcelClaim, float PriceParcelClaimFactor, int PriceParcelRent, int PricePublicObjectDecay, int PricePublicObjectDelete, int PriceRentLight, int PriceUpload, int TeleportMinPrice, float TeleportPriceExponent)
896 {
897 throw new System.NotImplementedException();
898 }
899
900 public void SendAvatarPickerReply(AvatarPickerReplyAgentDataArgs AgentData, List<AvatarPickerReplyDataArgs> Data)
901 {
902 throw new System.NotImplementedException();
903 }
904
905 public void SendAgentDataUpdate(UUID agentid, UUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle)
906 {
907 throw new System.NotImplementedException();
908 }
909
910 public void SendPreLoadSound(UUID objectID, UUID ownerID, UUID soundID)
911 {
912 throw new System.NotImplementedException();
913 }
914
915 public void SendPlayAttachedSound(UUID soundID, UUID objectID, UUID ownerID, float gain, byte flags)
916 {
917 throw new System.NotImplementedException();
918 }
919
920 public void SendTriggeredSound(UUID soundID, UUID ownerID, UUID objectID, UUID parentID, ulong handle, Vector3 position, float gain)
921 {
922 throw new System.NotImplementedException();
923 }
924
925 public void SendAttachedSoundGainChange(UUID objectID, float gain)
926 {
927 throw new System.NotImplementedException();
928 }
929
930 public void SendNameReply(UUID profileId, string firstname, string lastname)
931 {
932 throw new System.NotImplementedException();
933 }
934
935 public void SendAlertMessage(string message)
936 {
937 throw new System.NotImplementedException();
938 }
939
940 public void SendAgentAlertMessage(string message, bool modal)
941 {
942 throw new System.NotImplementedException();
943 }
944
945 public void SendLoadURL(string objectname, UUID objectID, UUID ownerID, bool groupOwned, string message, string url)
946 {
947 throw new System.NotImplementedException();
948 }
949
950 public void SendDialog(string objectname, UUID objectID, string ownerFirstName, string ownerLastName, string msg, UUID textureID, int ch, string[] buttonlabels)
951 {
952 throw new System.NotImplementedException();
953 }
954
955 public bool AddMoney(int debit)
956 {
957 throw new System.NotImplementedException();
958 }
959
960 public void SendSunPos(Vector3 sunPos, Vector3 sunVel, ulong CurrentTime, uint SecondsPerSunCycle, uint SecondsPerYear, float OrbitalPosition)
961 {
962 throw new System.NotImplementedException();
963 }
964
965 public void SendViewerEffect(ViewerEffectPacket.EffectBlock[] effectBlocks)
966 {
967 throw new System.NotImplementedException();
968 }
969
970 public void SendViewerTime(int phase)
971 {
972 throw new System.NotImplementedException();
973 }
974
975 public UUID GetDefaultAnimation(string name)
976 {
977 throw new System.NotImplementedException();
978 }
979
980 public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, byte[] charterMember, string flAbout, uint flags, UUID flImageID, UUID imageID, string profileURL, UUID partnerID)
981 {
982 throw new System.NotImplementedException();
983 }
984
985 public void SendScriptQuestion(UUID taskID, string taskName, string ownerName, UUID itemID, int question)
986 {
987 throw new System.NotImplementedException();
988 }
989
990 public void SendHealth(float health)
991 {
992 throw new System.NotImplementedException();
993 }
994
995 public void SendEstateManagersList(UUID invoice, UUID[] EstateManagers, uint estateID)
996 {
997 throw new System.NotImplementedException();
998 }
999
1000 public void SendBannedUserList(UUID invoice, EstateBan[] banlist, uint estateID)
1001 {
1002 throw new System.NotImplementedException();
1003 }
1004
1005 public void SendRegionInfoToEstateMenu(RegionInfoForEstateMenuArgs args)
1006 {
1007 throw new System.NotImplementedException();
1008 }
1009
1010 public void SendEstateCovenantInformation(UUID covenant)
1011 {
1012 throw new System.NotImplementedException();
1013 }
1014
1015 public void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, UUID covenant, string abuseEmail, UUID estateOwner)
1016 {
1017 throw new System.NotImplementedException();
1018 }
1019
1020 public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, LandData landData, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags)
1021 {
1022 throw new System.NotImplementedException();
1023 }
1024
1025 public void SendLandAccessListData(List<UUID> avatars, uint accessFlag, int localLandID)
1026 {
1027 throw new System.NotImplementedException();
1028 }
1029
1030 public void SendForceClientSelectObjects(List<uint> objectIDs)
1031 {
1032 throw new System.NotImplementedException();
1033 }
1034
1035 public void SendLandObjectOwners(LandData land, List<UUID> groups, Dictionary<UUID, int> ownersAndCount)
1036 {
1037 throw new System.NotImplementedException();
1038 }
1039
1040 public void SendLandParcelOverlay(byte[] data, int sequence_id)
1041 {
1042 throw new System.NotImplementedException();
1043 }
1044
1045 public void SendParcelMediaCommand(uint flags, ParcelMediaCommandEnum command, float time)
1046 {
1047 throw new System.NotImplementedException();
1048 }
1049
1050 public void SendParcelMediaUpdate(string mediaUrl, UUID mediaTextureID, byte autoScale, string mediaType, string mediaDesc, int mediaWidth, int mediaHeight, byte mediaLoop)
1051 {
1052 throw new System.NotImplementedException();
1053 }
1054
1055 public void SendAssetUploadCompleteMessage(sbyte AssetType, bool Success, UUID AssetFullID)
1056 {
1057 throw new System.NotImplementedException();
1058 }
1059
1060 public void SendConfirmXfer(ulong xferID, uint PacketID)
1061 {
1062 throw new System.NotImplementedException();
1063 }
1064
1065 public void SendXferRequest(ulong XferID, short AssetType, UUID vFileID, byte FilePath, byte[] FileName)
1066 {
1067 throw new System.NotImplementedException();
1068 }
1069
1070 public void SendInitiateDownload(string simFileName, string clientFileName)
1071 {
1072 throw new System.NotImplementedException();
1073 }
1074
1075 public void SendImageFirstPart(ushort numParts, UUID ImageUUID, uint ImageSize, byte[] ImageData, byte imageCodec)
1076 {
1077 throw new System.NotImplementedException();
1078 }
1079
1080 public void SendImageNextPart(ushort partNumber, UUID imageUuid, byte[] imageData)
1081 {
1082 throw new System.NotImplementedException();
1083 }
1084
1085 public void SendImageNotFound(UUID imageid)
1086 {
1087 throw new System.NotImplementedException();
1088 }
1089
1090 public void SendShutdownConnectionNotice()
1091 {
1092 throw new System.NotImplementedException();
1093 }
1094
1095 public void SendSimStats(SimStats stats)
1096 {
1097 throw new System.NotImplementedException();
1098 }
1099
1100 public void SendObjectPropertiesFamilyData(uint RequestFlags, UUID ObjectUUID, UUID OwnerID, UUID GroupID, uint BaseMask, uint OwnerMask, uint GroupMask, uint EveryoneMask, uint NextOwnerMask, int OwnershipCost, byte SaleType, int SalePrice, uint Category, UUID LastOwnerID, string ObjectName, string Description)
1101 {
1102 throw new System.NotImplementedException();
1103 }
1104
1105 public void SendObjectPropertiesReply(UUID ItemID, ulong CreationDate, UUID CreatorUUID, UUID FolderUUID, UUID FromTaskUUID, UUID GroupUUID, short InventorySerial, UUID LastOwnerUUID, UUID ObjectUUID, UUID OwnerUUID, string TouchTitle, byte[] TextureID, string SitTitle, string ItemName, string ItemDescription, uint OwnerMask, uint NextOwnerMask, uint GroupMask, uint EveryoneMask, uint BaseMask, byte saleType, int salePrice)
1106 {
1107 throw new System.NotImplementedException();
1108 }
1109
1110 public void SendAgentOffline(UUID[] agentIDs)
1111 {
1112 throw new System.NotImplementedException();
1113 }
1114
1115 public void SendAgentOnline(UUID[] agentIDs)
1116 {
1117 throw new System.NotImplementedException();
1118 }
1119
1120 public void SendSitResponse(UUID TargetID, Vector3 OffsetPos, Quaternion SitOrientation, bool autopilot, Vector3 CameraAtOffset, Vector3 CameraEyeOffset, bool ForceMouseLook)
1121 {
1122 throw new System.NotImplementedException();
1123 }
1124
1125 public void SendAdminResponse(UUID Token, uint AdminLevel)
1126 {
1127 throw new System.NotImplementedException();
1128 }
1129
1130 public void SendGroupMembership(GroupMembershipData[] GroupMembership)
1131 {
1132 throw new System.NotImplementedException();
1133 }
1134
1135 public void SendGroupNameReply(UUID groupLLUID, string GroupName)
1136 {
1137 throw new System.NotImplementedException();
1138 }
1139
1140 public void SendJoinGroupReply(UUID groupID, bool success)
1141 {
1142 throw new System.NotImplementedException();
1143 }
1144
1145 public void SendEjectGroupMemberReply(UUID agentID, UUID groupID, bool success)
1146 {
1147 throw new System.NotImplementedException();
1148 }
1149
1150 public void SendLeaveGroupReply(UUID groupID, bool success)
1151 {
1152 throw new System.NotImplementedException();
1153 }
1154
1155 public void SendCreateGroupReply(UUID groupID, bool success, string message)
1156 {
1157 throw new System.NotImplementedException();
1158 }
1159
1160 public void SendLandStatReply(uint reportType, uint requestFlags, uint resultCount, LandStatReportItem[] lsrpia)
1161 {
1162 throw new System.NotImplementedException();
1163 }
1164
1165 public void SendScriptRunningReply(UUID objectID, UUID itemID, bool running)
1166 {
1167 throw new System.NotImplementedException();
1168 }
1169
1170 public void SendAsset(AssetRequestToClient req)
1171 {
1172 throw new System.NotImplementedException();
1173 }
1174
1175 public void SendTexture(AssetBase TextureAsset)
1176 {
1177 throw new System.NotImplementedException();
1178 }
1179
1180 public byte[] GetThrottlesPacked(float multiplier)
1181 {
1182 throw new System.NotImplementedException();
1183 }
1184
1185 public event ViewerEffectEventHandler OnViewerEffect;
1186 public event Action<IClientAPI> OnLogout;
1187 public event Action<IClientAPI> OnConnectionClosed;
1188 public void SendBlueBoxMessage(UUID FromAvatarID, string FromAvatarName, string Message)
1189 {
1190 throw new System.NotImplementedException();
1191 }
1192
1193 public void SendLogoutPacket()
1194 {
1195 throw new System.NotImplementedException();
1196 }
1197
1198 public ClientInfo GetClientInfo()
1199 {
1200 throw new System.NotImplementedException();
1201 }
1202
1203 public void SetClientInfo(ClientInfo info)
1204 {
1205 throw new System.NotImplementedException();
1206 }
1207
1208 public void SetClientOption(string option, string value)
1209 {
1210 throw new System.NotImplementedException();
1211 }
1212
1213 public string GetClientOption(string option)
1214 {
1215 throw new System.NotImplementedException();
1216 }
1217
1218 public void Terminate()
1219 {
1220 throw new System.NotImplementedException();
1221 }
1222
1223 public void SendSetFollowCamProperties(UUID objectID, SortedDictionary<int, float> parameters)
1224 {
1225 throw new System.NotImplementedException();
1226 }
1227
1228 public void SendClearFollowCamProperties(UUID objectID)
1229 {
1230 throw new System.NotImplementedException();
1231 }
1232
1233 public void SendRegionHandle(UUID regoinID, ulong handle)
1234 {
1235 throw new System.NotImplementedException();
1236 }
1237
1238 public void SendParcelInfo(RegionInfo info, LandData land, UUID parcelID, uint x, uint y)
1239 {
1240 throw new System.NotImplementedException();
1241 }
1242
1243 public void SendScriptTeleportRequest(string objName, string simName, Vector3 pos, Vector3 lookAt)
1244 {
1245 throw new System.NotImplementedException();
1246 }
1247
1248 public void SendDirPlacesReply(UUID queryID, DirPlacesReplyData[] data)
1249 {
1250 throw new System.NotImplementedException();
1251 }
1252
1253 public void SendDirPeopleReply(UUID queryID, DirPeopleReplyData[] data)
1254 {
1255 throw new System.NotImplementedException();
1256 }
1257
1258 public void SendDirEventsReply(UUID queryID, DirEventsReplyData[] data)
1259 {
1260 throw new System.NotImplementedException();
1261 }
1262
1263 public void SendDirGroupsReply(UUID queryID, DirGroupsReplyData[] data)
1264 {
1265 throw new System.NotImplementedException();
1266 }
1267
1268 public void SendDirClassifiedReply(UUID queryID, DirClassifiedReplyData[] data)
1269 {
1270 throw new System.NotImplementedException();
1271 }
1272
1273 public void SendDirLandReply(UUID queryID, DirLandReplyData[] data)
1274 {
1275 throw new System.NotImplementedException();
1276 }
1277
1278 public void SendDirPopularReply(UUID queryID, DirPopularReplyData[] data)
1279 {
1280 throw new System.NotImplementedException();
1281 }
1282
1283 public void SendEventInfoReply(EventData info)
1284 {
1285 throw new System.NotImplementedException();
1286 }
1287
1288 public void SendMapItemReply(mapItemReply[] replies, uint mapitemtype, uint flags)
1289 {
1290 throw new System.NotImplementedException();
1291 }
1292
1293 public void SendAvatarGroupsReply(UUID avatarID, GroupMembershipData[] data)
1294 {
1295 throw new System.NotImplementedException();
1296 }
1297
1298 public void SendOfferCallingCard(UUID srcID, UUID transactionID)
1299 {
1300 throw new System.NotImplementedException();
1301 }
1302
1303 public void SendAcceptCallingCard(UUID transactionID)
1304 {
1305 throw new System.NotImplementedException();
1306 }
1307
1308 public void SendDeclineCallingCard(UUID transactionID)
1309 {
1310 throw new System.NotImplementedException();
1311 }
1312
1313 public void SendTerminateFriend(UUID exFriendID)
1314 {
1315 throw new System.NotImplementedException();
1316 }
1317
1318 public void SendAvatarClassifiedReply(UUID targetID, UUID[] classifiedID, string[] name)
1319 {
1320 throw new System.NotImplementedException();
1321 }
1322
1323 public void SendClassifiedInfoReply(UUID classifiedID, UUID creatorID, uint creationDate, uint expirationDate, uint category, string name, string description, UUID parcelID, uint parentEstate, UUID snapshotID, string simName, Vector3 globalPos, string parcelName, byte classifiedFlags, int price)
1324 {
1325 throw new System.NotImplementedException();
1326 }
1327
1328 public void SendAgentDropGroup(UUID groupID)
1329 {
1330 throw new System.NotImplementedException();
1331 }
1332
1333 public void RefreshGroupMembership()
1334 {
1335 throw new System.NotImplementedException();
1336 }
1337
1338 public void SendAvatarNotesReply(UUID targetID, string text)
1339 {
1340 throw new System.NotImplementedException();
1341 }
1342
1343 public void SendAvatarPicksReply(UUID targetID, Dictionary<UUID, string> picks)
1344 {
1345 throw new System.NotImplementedException();
1346 }
1347
1348 public void SendPickInfoReply(UUID pickID, UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3 posGlobal, int sortOrder, bool enabled)
1349 {
1350 throw new System.NotImplementedException();
1351 }
1352
1353 public void SendAvatarClassifiedReply(UUID targetID, Dictionary<UUID, string> classifieds)
1354 {
1355 throw new System.NotImplementedException();
1356 }
1357
1358 public void SendParcelDwellReply(int localID, UUID parcelID, float dwell)
1359 {
1360 throw new System.NotImplementedException();
1361 }
1362
1363 public void SendUserInfoReply(bool imViaEmail, bool visible, string email)
1364 {
1365 throw new System.NotImplementedException();
1366 }
1367
1368 public void SendUseCachedMuteList()
1369 {
1370 throw new System.NotImplementedException();
1371 }
1372
1373 public void SendMuteListUpdate(string filename)
1374 {
1375 throw new System.NotImplementedException();
1376 }
1377
1378 public void KillEndDone()
1379 {
1380 throw new System.NotImplementedException();
1381 }
1382
1383 public bool AddGenericPacketHandler(string MethodName, GenericMessage handler)
1384 {
1385 throw new System.NotImplementedException();
1386 }
1387
1388 #endregion
1389
1390 #region Implementation of IClientIPEndpoint
1391
1392 public IPAddress EndPoint
1393 {
1394 get { throw new System.NotImplementedException(); }
1395 }
1396
1397 #endregion
1398 }
1399}
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs
new file mode 100644
index 0000000..4b39b92
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCServer.cs
@@ -0,0 +1,47 @@
1using System;
2using System.Collections.Generic;
3using System.Net;
4using System.Net.Sockets;
5using System.Text;
6using System.Threading;
7
8namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
9{
10 /// <summary>
11 /// Adam's completely hacked up not-probably-compliant RFC1459 server class.
12 /// </summary>
13 class IRCServer
14 {
15 private TcpListener m_listener;
16 private bool m_running = true;
17
18 public IRCServer(IPAddress listener, int port)
19 {
20 m_listener = new TcpListener(listener, port);
21
22 m_listener.Start(50);
23
24 Thread thread = new Thread(ListenLoop);
25 thread.Start();
26 }
27
28 public void Stop()
29 {
30 m_running = false;
31 m_listener.Stop();
32 }
33
34 private void ListenLoop()
35 {
36 while(m_running)
37 {
38 AcceptClient(m_listener.AcceptTcpClient());
39 }
40 }
41
42 private void AcceptClient(TcpClient client)
43 {
44
45 }
46 }
47}