Compare commits

..

431 Commits

Author SHA1 Message Date
Melanie
6a3e1734e6 Merge branch 'master' into careminster-presence-refactor 2010-05-09 18:03:57 +01:00
Melanie
4e0d62547d Merge branch 'master' into careminster-presence-refactor 2010-05-09 17:04:23 +01:00
Melanie
420dd78fb7 Merge branch 'careminster' into careminster-presence-refactor 2010-05-08 14:17:43 +01:00
Melanie
14fcc2510e Merge branch 'master' into careminster-presence-refactor 2010-05-08 13:31:36 +01:00
Kitto Flora
bc7d84b75c Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2010-05-07 15:16:59 -04:00
Kitto Flora
add7abc1de Fix Mouse+WASD makes Av rise; Fix PREJUMP. 2010-05-07 14:12:07 -04:00
Melanie
b309781f2d Merge branch 'master' into careminster-presence-refactor 2010-05-07 01:00:58 +01:00
Melanie
69d0201d4c Revert "Patch from mcortez: Update groups, add ALPHA Siman grid connector for groups"
Causes an exception within HttpServer, headers have already been sent.

This reverts commit 8187fccd25.
2010-05-06 16:38:23 +01:00
Melanie
11971fb302 Merge branch 'master' into careminster-presence-refactor 2010-05-06 16:09:36 +01:00
Melanie Thielker
02dea4ce58 Remove the m_Viewer variable and make the property a shortcut to the
proper field in AgentCircuitData instead
2010-05-06 02:02:12 +02:00
Melanie
7e0d5b8665 Merge branch 'master' into careminster-presence-refactor 2010-05-05 22:50:11 +01:00
Melanie Thielker
2d9a20529d Plumb Viewer version into ScenePresence for initial login. It's still not
carried along
2010-05-06 00:54:21 +02:00
Melanie Thielker
733a07e061 Plumb the viewer version string through into AgentCircuitData. Now all that
is left os to figure out what black magic turns AgentCircuitData into
AgentData and then copy that into the ScenePresence, where m_Viewer is
already added with this commit and waits for the data.
2010-05-06 00:34:49 +02:00
Melanie Thielker
65775b87e5 Add a XMLRPC method to remotely set the login level for the LLLoginService.
This requires a special XMLRPC call, which has to supply the credentials of
a god user (User level >= 200). Disabled by default. Also Adds a configuration
option to set the initial permitted login level.
2010-05-05 23:06:36 +02:00
Melanie Thielker
e0f9b1a699 Removed a test for a "can't happen" case. ParentGroup is never null anymore. 2010-05-05 21:12:02 +02:00
Melanie Thielker
efc3241541 Add perms check to the teleport home client command handlers. 2010-05-05 01:32:55 +02:00
Melanie Thielker
49efec2ef1 Strip estate message sending out from the estate management module and
the dialog module. Convert it to an event on the estate module interface.
The old implementation did the same as message to region, a button that
is right next to it on the UI. This implementation prevented people from
adding a more sane one in a module.
2010-05-04 23:45:59 +02:00
Melanie Thielker
07e0732a10 make the events more useful by providing the source region 2010-05-04 21:16:20 +02:00
Melanie
9ca79df802 Merge branch 'careminster' into careminster-presence-refactor 2010-05-04 18:41:20 +01:00
Melanie
585259ef08 Merge branch 'master' into careminster-presence-refactor 2010-05-04 18:39:04 +01:00
Melanie Thielker
97bbce92a8 Add events to the estate interface to let interested modules know of
changes to estate settings
2010-05-04 20:57:31 +02:00
Melanie Thielker
ce86d39c70 Add "reload estate" command to sims 2010-05-04 18:31:52 +02:00
Melanie Thielker
4f93d30790 Allow reloading of estate settings into a running region. Move sun update
helper into Scene, since that is less evil than exposing m_storageManager
to the public.
2010-05-04 18:10:13 +02:00
Melanie Thielker
da849aea78 Allow regions to get the list of the other regions in the estate 2010-05-04 17:56:30 +02:00
Melanie Thielker
dbce360566 Fix full circle sensors 2010-05-04 02:43:22 +02:00
Melanie Thielker
c86259c671 Fix scripted give and interactive give to offline avatars. Both folder and
single items are now supported. Magic Boxes, yeah!
2010-05-04 00:44:05 +02:00
Melanie Thielker
deaa79ca9e Refix the fix 2010-05-03 23:53:49 +02:00
Melanie Thielker
87e0c17707 Merge branch 'careminster-presence-refactor' of ssh://3dhosting.de/var/git/careminster into careminster-presence-refactor 2010-05-03 23:47:50 +02:00
Melanie Thielker
80bf3934af Add folder version incrementing to XInventoryService. Fixes offline give
for avatar->avatar
2010-05-03 23:47:32 +02:00
Melanie Thielker
8ec6e42e34 Add folder version uncrementing to XInventoryService. Fixes offline give
for avatar->avatar
2010-05-03 23:45:05 +02:00
Melanie Thielker
4df87631ed Store given items in correct parent folder. Fixes items given to offline avatars
not getting lost.
2010-05-03 23:44:23 +02:00
Melanie Thielker
9c8d7d34b3 Fix a bug in owner change notification 2010-05-03 04:55:41 +02:00
Melanie Thielker
8766401777 Adapt CM to the new CHANGED_OWNER handling 2010-05-03 04:28:30 +02:00
Melanie
9f8acbfe3e Merge branch 'master' into careminster-presence-refactor 2010-05-03 01:40:24 +01:00
Melanie Thielker
175f3f992a Make the IUserAccountData properly unpack the god mode data, so grid gods
work again
2010-05-03 01:50:32 +02:00
Melanie Thielker
0fa57cac3f Fix sensor cone for sensing avatars 2010-05-03 00:54:24 +02:00
sacha
5f6e9e6ab9 Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2010-05-02 08:18:33 -04:00
sacha
7ad36d3d75 Adding DebugEvent Trap
Adding XMREEvent Trap

 trapDebug("Modulename" ,"My data here ",  scene);
 trapXMRE(int data, string Message, Scene scene);
2010-05-02 08:15:12 -04:00
Melanie Thielker
881fcb7def Allow retrieval if admin users in scope mode 2010-04-30 23:32:58 +02:00
Melanie Thielker
7ae55f6248 Fix linking issue introduced in my earlier commit 2010-04-30 20:18:29 +01:00
Melanie
9bc5098dd8 Merge branch 'master' into careminster-presence-refactor 2010-04-30 20:15:19 +01:00
Melanie Thielker
3e30de7430 Fix linking issue introduced in my earlier commit 2010-04-30 22:35:07 +02:00
Melanie
486ab82c02 Fix some symbol errors 2010-04-30 12:08:37 +01:00
Melanie
9500ba2ff5 Fix some symbol errors 2010-04-30 12:06:58 +01:00
Melanie
13960b3b86 Merge branch 'master' into careminster-presence-refactor 2010-04-30 11:49:24 +01:00
Melanie
7dc5ebc929 Merge branch 'careminster' into careminster-presence-refactor 2010-04-30 11:49:16 +01:00
Melanie
8b70477556 Merge branch '0.6.9-post-fixes' into careminster 2010-04-30 11:48:57 +01:00
Melanie
04845c1898 Fix link security issue 2010-04-30 11:48:09 +01:00
Melanie
9c79fd6308 Treat a UserLevel of -1 as an unverified account and refer them to their
activation email.
2010-04-30 05:33:45 +01:00
Kitto Flora
f3c21524be Fix Av jump motion S/W 2010-04-29 19:41:08 -04:00
Melanie
08ebcdb0b8 Merge branch 'master' into careminster-presence-refactor 2010-04-29 23:33:26 +01:00
Melanie
f06772a088 Merge branch 'careminster' into careminster-presence-refactor 2010-04-29 23:33:20 +01:00
Kitto Flora
5c23b4aa56 Fix vertical attractor 2010-04-29 13:50:11 -04:00
Melanie
8a32ee7dd2 Merge branch 'careminster' into careminster-presence-refactor 2010-04-27 03:58:43 +01:00
Melanie
89a003c6fc Merge branch 'master' into careminster-presence-refactor 2010-04-27 03:57:36 +01:00
Melanie
bbffe16f13 Merge branch 'master' into careminster-presence-refactor 2010-04-27 00:27:05 +01:00
Melanie Thielker
06661708b4 Add a parameter to prim inventory update to prevent event firing 2010-04-27 02:40:30 +02:00
Melanie Thielker
81ff5eaba0 Make scripted attachment states work. Finally. Also replace two monitor locks
with RWLocks, hunting the 10^3 bug. Not successful, but needed to be done anyway
2010-04-25 22:03:35 +02:00
Melanie Thielker
899d521ab4 Use the saved script states 2010-04-24 18:59:34 +02:00
Melanie Thielker
27b3f23ff3 Remove some usings that stopped compilation 2010-04-24 16:53:47 +02:00
Melanie Thielker
71f42f185a Plumb a data path to initialize an attachment from an alternate source 2010-04-24 16:45:25 +02:00
Melanie Thielker
56f60a04d9 Add an additional serialization call do the detach procedure. This call is
executed only for it's side effects, which are to block until attach(NULL_KEY)
completes, before commencing detachment.
2010-04-23 20:18:34 +02:00
sacha
85646b157c Adding some more SNMP events and some refactoring
Signed : The Masqued Foxi
2010-04-23 12:40:27 -04:00
Melanie Thielker
31e0704c8d Remove debug output, the culprit has been identified 2010-04-23 17:48:50 +02:00
sacha
7eda9364fd Adding LinkUp/LinkDown when a region is started or stoped.
Those two events could be used to compute the region availibility
2010-04-23 10:51:27 -04:00
Melanie Thielker
780630d7c0 Fix a nullref in attachment handling. Add some debug to find the attachment
state issue
2010-04-23 14:41:20 +02:00
Melanie
af778f09d5 Merge branch 'master' into careminster-presence-refactor 2010-04-21 19:51:17 +01:00
Melanie Thielker
de63b60748 Avoid duplicate script resumes. Move resume calls to more logical places 2010-04-19 19:27:45 +02:00
Melanie Thielker
80024c023a Remove the event trigger for the attach event from the attachment module.
The script engine already triggers this internally.
2010-04-19 18:44:21 +02:00
Melanie
d2e4f2d376 Merge branch 'master' into careminster-presence-refactor 2010-04-19 15:33:20 +01:00
Melanie Thielker
1667a29c88 And some more rez modes that weren't covered before 2010-04-19 12:54:33 +02:00
Melanie
efa7873ae1 Merge branch 'master' into careminster-presence-refactor 2010-04-19 10:44:01 +01:00
Melanie
65079b1106 Merge branch 'careminster' into careminster-presence-refactor 2010-04-19 07:00:51 +01:00
Melanie
98cb4f74b2 Merge branch 'master' into careminster-presence-refactor 2010-04-19 07:00:40 +01:00
Melanie
f8d49e0a30 Merge branch '0.6.9-post-fixes' into careminster 2010-04-19 06:32:29 +01:00
Melanie Thielker
72d380acf0 Merge branch 'master' into careminster-presence-refactor 2010-04-19 06:10:23 +02:00
Mike Rieker
68a4f897b4 This GetScriptErrors() change allows initial XEngine to run in background
thread.  It should block only for the case of being called by
CapsUpdateTaskInventoryScriptAsset().
2010-04-18 19:19:16 -04:00
Justin Clark-Casey (justincc)
43acd99bb3 Slightly tweak README to account for the fact that first-time standalone users may effectively set up their avatar as 'master avatar' in the region configuration stage. 2010-04-18 19:19:50 +01:00
Justin Clark-Casey (justincc)
b7457a0a5d Update OpenMetaverse libraries to those used in master as of commit 9a781e7
This removes Mono.Security.dll which might help with Mono 2.6.3 compatability issues (notwithstanding the sqlite problem)
2010-04-18 19:16:41 +01:00
Justin Clark-Casey (justincc)
c77444a821 Fix http://opensimulator.org/mantis/view.php?id=4657 where OpenSim.Grid.UserServer.exe fails on startup if no previous config
probably appears to occur because mono 2.4.2.3 (and possibly later) erroneously returns a value of 0 for BufferWidth and BufferHeight in some circumstances
2010-04-16 20:40:01 +01:00
Melanie Thielker
ccc56e6dd4 Merge branch 'master' into careminster-presence-refactor 2010-04-16 05:20:25 +02:00
Melanie
1636f535ba Committing sacha's partial work (from orpheus). The GridBrat needs to learn
a bit of git
2010-04-14 10:42:14 +01:00
Melanie
fac55bc78b Change ISnmpModule to use scene references 2010-04-14 01:17:27 +01:00
Melanie
4433f53f72 Drop unused Alert() method from ISnmpModule 2010-04-13 20:14:56 +01:00
Melanie
9920e219dd Merge branch 'careminster' into careminster-presence-refactor 2010-04-13 04:36:08 +01:00
Melanie
a1c4585a39 Merge branch '0.6.9-post-fixes' into careminster 2010-04-13 04:13:26 +01:00
Kitto Flora
9b6e89457c Fixed LINEAR_MOTOR Z drive, Mantis #30 2010-04-11 14:12:01 -04:00
lcc
7ecd9b3f1a Merge branch 'master' of ssh://3dhosting.de/var/git/careminster
resolved
Conflicts:
	OpenSim/Region/Framework/Interfaces/ISnmpModule.cs
2010-04-10 23:52:10 +02:00
lcc
c6ba50b7e2 Adding ColdStart event 2010-04-10 23:39:06 +02:00
Mike Rieker
0b2b2daf23 guarantee that a script engine's GetScriptErrors() will not be called
until after its OnRezScript() returns so that script compile error
messages can be retrieved
2010-04-10 14:43:26 -04:00
lcc
58dac970af re-fixing this darn file 2010-04-10 18:05:08 +02:00
lcc
c4eaf195b5 dding this deleted file... 2010-04-10 17:59:08 +02:00
lcc
d975bd8e5c Fixing Trap 2010-04-10 17:51:51 +02:00
Melanie
7701ea2798 Add Scene.SnmpService, which is of type ISnmpModule and, if nun-null, can
be used to send snmp alerts
2010-04-09 06:49:14 +01:00
John Hurliman
54cedfe432 Changed the GetTextureModule backport to work with the 0.6.9 codebase 2010-04-08 15:57:57 -07:00
John Hurliman
94a46867ed Added a missing reference to prebuild.xml 2010-04-08 15:38:58 -07:00
John Hurliman
c4c4c3696e Backported WebUtil.cs from master to 0.6.9-postfixes to fix the build break 2010-04-08 15:26:51 -07:00
John Hurliman
0f3314c04c Backported GetTextureModule and IAssetService.GetCached() 2010-04-08 15:00:01 -07:00
Thomas Grimshaw
d834a2c3da Implement cmGetAvatarList(). This returns a strided list of all avatars in the region, including their UUID, position and name. The radar is often the most taxing scripts on a sim, this function can help radars reduce their impact by 66% by eliminating the need for sensors. 2010-04-07 23:53:08 +02:00
Thomas Grimshaw
e80e04c5fd Increase the amount of time we wait for a teleport to complete. This allows teleportation to a remote region without a local connection to the asset server without timing out. 2010-04-07 22:59:13 +02:00
Thomas Grimshaw
309f440fc0 Fix llDialog responses so that they can be heard throughout the region. This now conforms to the behaviour in SL. ( http://bugs.meta7.com/view.php?id=13 ) 2010-04-07 10:13:47 +02:00
Thomas Grimshaw
db5ea850f6 Fix llLookAt so that it doesn't "roll" the object and more closely imitates the behaviour in SL. ( http://bugs.meta7.com/view.php?id=28 ) 2010-04-07 09:49:11 +02:00
Thomas Grimshaw
20e3de1f0a Add CHANGED_REGION_START (alias for CHANGED_REGION_RESTART as per LL Jira SVC-3773) 2010-04-07 08:28:57 +02:00
Thomas Grimshaw
335c1b4420 Implement PSYS_SRC_INNERANGLE and PSYS_SRC_OUTERANGLE 2010-04-07 07:48:26 +02:00
Kitto Flora
a97a887ea4 Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2010-04-05 23:25:46 -04:00
Melanie Thielker
e40acda6c8 Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2010-04-05 23:22:14 +02:00
Melanie Thielker
e7be131b89 Add the ISnmpModule interface definition to Careminster release 2010-04-05 23:20:56 +02:00
Thomas Grimshaw
fd4a059e9b Merge branch 'master' of ssh://TOR/var/git/careminster 2010-04-05 23:17:31 +02:00
Thomas Grimshaw
2f454843d8 Fix up my own shoddy code! Fixes prim rez break. Whups! 2010-04-05 23:17:06 +02:00
Melanie Thielker
a573b5767b Test commit 2010-04-05 22:31:30 +02:00
Melanie Thielker
5c04d768a6 Bump version number 2010-04-05 22:26:18 +02:00
Kitto Flora
4bf1598930 Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2010-04-05 16:15:23 -04:00
Thomas Grimshaw
07b4889eab Merge branch 'master' of ssh://TOR/var/git/careminster 2010-04-05 22:11:11 +02:00
Thomas Grimshaw
7a3bb266eb This commit adds some randomness to object persistence. It's a Work In Progress, I am working on improving this to a tiered approach. 2010-04-05 22:11:05 +02:00
Thomas Grimshaw
f34cc6b469 Add a much cheaper agent count retrieval method. This is obsoleted by 0.7 so it can be reverted then. 2010-04-05 22:08:34 +02:00
Kitto Flora
9b9e2a8c71 Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2010-04-05 15:27:13 -04:00
Melanie
2fbbc13c71 Fix some overlooked merge conflicts that got committed 2010-04-05 19:42:15 +01:00
Kitto Flora
35bf75a77a Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2010-04-05 14:08:57 -04:00
Melanie
ba31b31ed0 Merge branch 'careminster' into careminster-presence-refactor 2010-04-05 18:22:15 +01:00
Melanie
fe034dc3e4 Merge branch 'master' into careminster-presence-refactor 2010-04-05 18:12:29 +01:00
Melanie
f505c1d0a4 Merge branch 'master' of ssh://melanie@3dhosting.de/var/git/careminster into careminster 2010-04-05 18:10:49 +01:00
Melanie
04a68db195 Merge branch '0.6.9-post-fixes' into careminster 2010-04-05 18:10:36 +01:00
kitto
e2a521742a ChODE Only: Corrected Heightmap load to iliminate crack at 255M. Added 'fence' option to prevent physical objects crossing region border. 2010-04-04 22:57:32 -04:00
lcc
956225f0e1 Fixed Ban and parcel exclusion. Need to fix the parcel chat too 2010-04-04 18:29:18 +02:00
Melanie
4fefd05839 Merge branch 'master' into careminster-presence-refactor
Remerge the LightShare bits that were pushed to core
2010-03-31 04:38:19 +01:00
Melanie
7d917e7c5c Rename Meta7Windlight to LightShare 2010-03-30 23:29:03 +01:00
Melanie
5693870fe2 Merge branch 'master' into careminster-presence-refactor 2010-03-30 21:34:27 +01:00
Justin Clark-Casey (justincc)
18ed68cd31 add nant distbin target
this will delete all extraneous source code files and copy OpenSim.ini.example to OpenSim.ini
2010-03-26 20:47:26 +00:00
Justin Clark-Casey (justincc)
4d712ddaae comment out very probably unused dist and distdir nant targets 2010-03-26 19:36:21 +00:00
Justin Clark-Casey (justincc)
dd544f811a switch flavor to RC1 2010-03-26 19:09:09 +00:00
Melanie Thielker
e0b287961f Change land overlay to send group owned status properly 2010-03-23 17:04:37 +01:00
Kitto Flora
0f5fb6f190 Merge branch 'careminster-presence-refactor' of ssh://3dhosting.de/var/git/careminster into careminster-presence-refactor 2010-03-19 19:14:09 -04:00
Kitto Flora
add47befac Update acceleration to 0 on no tphysical. 2010-03-19 18:53:16 -04:00
Kitto Flora
0e36994fe7 Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2010-03-19 13:27:12 -04:00
Kitto Flora
3ea72eeabb Fix sit with autopilot. 2010-03-19 13:26:34 -04:00
Melanie
4c2a51b1b5 Merge branch 'master' into careminster-presence-refactor 2010-03-18 20:09:04 +00:00
Melanie
46d990419b Merge branch 'careminster' into careminster-presence-refactor 2010-03-18 20:00:58 +00:00
Melanie
69b5ddceda Unify a previous refactor of object return with the older solution. We
really don't need two methods doing the same thing, but differently.
2010-03-18 18:58:56 +00:00
Melanie
1a2cbbc8c1 Merge branch 'master' of ssh://melanie@3dhosting.de/var/git/careminster into careminster 2010-03-18 18:58:44 +00:00
Melanie
f35eb8819c Unify a previous refactor of object return with the older solution. We
really don't need two methods doing the same thing, but differently.
2010-03-18 18:58:37 +00:00
Kitto Flora
6df969894c Fix AbsolutePosition for autopilot/sit. 2010-03-17 13:30:48 -04:00
Thomas Grimshaw
e442c2a3f9 Prevent llTeleportAgentHome from affecting gods 2010-03-17 17:42:33 +01:00
Thomas Grimshaw
37815f3402 Debugger tags for VS2010 2010-03-16 18:13:00 +01:00
Melanie
a1cd3b5b88 Change GodLevel to UserLevel so gods can teleport freely without having
to enter god mode first
2010-03-15 17:54:39 +00:00
Melanie
d3f33acc1a Merge branch 'master' into careminster-presence-refactor 2010-03-15 17:23:35 +00:00
Melanie
898fa637c3 Merge branch 'careminster' into careminster-presence-refactor 2010-03-15 17:12:08 +00:00
Kitto Flora
8cbd0d3b5f Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2010-03-14 16:23:12 -04:00
Kitto Flora
8198062610 RotLookAt repaired; debug msg cleanup. 2010-03-14 16:22:13 -04:00
CasperW
80e4068b3e Fix the delay in llGiveInventory so that it only takes effect when giving inventory to an avatar (this now replicates SL behaviour) 2010-03-13 15:13:19 +01:00
Kitto Flora
1379ae4310 Fix Rotation Lock. NOTE: This version had poor border crossing control 2010-03-12 16:13:52 -05:00
Kitto Flora
7bd48d383d Resolved merge 2010-03-12 13:48:31 -05:00
Kitto Flora
f6f6ef1532 Dynamics Integration Part 1 2010-03-11 19:12:38 -05:00
Melanie
689514a40a Cache UserLevel in ScenePresence on SP creation. Change IsAdministrator
to use that stored value.
2010-03-09 23:12:10 +00:00
Melanie
40873504dc Merge branch 'master' into careminster-presence-refactor 2010-03-09 22:46:17 +00:00
unknown
fce9e499e4 - parcel blocking, region crossing blocking, teleport blocking 2010-03-09 22:38:58 +00:00
Melanie
80b5a95bb8 Revert "Adds Land Banning."
This reverts commit a87d7a1296.
2010-03-09 22:29:02 +00:00
Melanie
06e351f1ef Revert "Adds land ejection and freezing. Adds more checks to land banning."
This reverts commit 44d523518a.
2010-03-09 22:28:52 +00:00
Justin Clark-Casey (justincc)
4423630f1e remove milliseconds from console log again 2010-03-09 18:56:32 +00:00
Justin Clark-Casey (justincc)
5caae0293a Fix bug where approximately half the time, attachments would rez only their root prim until right clicked (or otherwise updated).
The root cause of this problem was that multiple ObjectUpdates were being sent on attachment which differed enough to confuse the client.
Sometimes these would eliminate each other and sometimes not, depending on whether the scheduler looked at the queued updates.
The solution here is to only schedule the ObjectUpdate once the attachment code has done all it needs to do.

Backport from head.
2010-03-09 18:53:04 +00:00
Melanie
49baf090cd Small consistency change 2010-03-07 16:08:00 +00:00
Melanie
c8c608acc8 Small consistency change 2010-03-07 16:07:40 +00:00
Melanie
3d053b194a Small consistency change 2010-03-07 16:06:52 +00:00
Melanie
8180c72cbc Merge branch 'master' into careminster-presence-refactor 2010-03-06 12:37:24 +00:00
Melanie
2fdd535302 Merge branch 'master' of ssh://melanie@3dhosting.de/var/git/careminster into careminster 2010-03-06 12:24:26 +00:00
Melanie
1f7a0cf892 Merge branch '0.6.9-post-fixes' into careminster 2010-03-06 12:24:09 +00:00
unknown
83929c69e3 - implementing server 1.38 functions
Signed-off-by: Melanie <melanie@t-data.com>
2010-03-06 11:59:16 +00:00
Kitto Flora
87590491b5 Fix Physics angular reference frame. 2010-03-04 16:33:26 -05:00
Melanie
107a0a4905 Merge branch 'master' into careminster-presence-refactor 2010-03-04 11:02:01 +00:00
Melanie
62dd83f473 Remove a superfluous array creation 2010-03-04 10:47:16 +00:00
Melanie
84b0a23e19 Remove a superfluous array creation 2010-03-04 10:45:46 +00:00
Melanie
7ec1a3fcad Merge branch 'master' into careminster-presence-refactor 2010-03-03 03:18:19 +00:00
Melanie
028a87fe37 Merge branch 'master' into careminster-presence-refactor
This brings careminster on the level of master. To be tested
2010-03-03 02:07:03 +00:00
Melanie
01c4bb4a5e Revert "test"
This reverts commit 2f0011c605.
2010-03-03 01:29:42 +00:00
Melanie
2f0011c605 test 2010-03-03 01:26:19 +00:00
CasperW
393a782858 Fix the crashed session notification from the userserver. 2010-02-25 18:05:30 +01:00
CasperW
7f61de8f57 Allow particles and texture anims to be persisted to XML. This behaviour is expected. 2010-02-25 14:14:53 +01:00
CasperW
e99341d7df llDie() should not work on attachments (results in an incosistent attachment state) 2010-02-25 12:07:56 +01:00
CasperW
efd4810851 Disable blocking teleports within the same parcel for now; it's not implemented correctly. Will review soon. 2010-02-25 12:04:51 +01:00
Melanie
92a8d7ce6c Merge branch 'master' of ssh://melanie@3dhosting.de/var/git/careminster into careminster 2010-02-16 23:15:59 +00:00
Melanie
d6eff8ebcf Change a condition to actually make linden land reclaim work 2010-02-16 23:14:57 +00:00
CasperW
af2d20c5fa Fix an inconsistency in llSetPayPrice between SL and OS behaviour 2010-02-15 22:22:36 +01:00
CasperW
47a9e48f46 Merge branch 'master' of ssh://TOR/var/git/careminster 2010-02-15 06:15:14 +01:00
CasperW
94c417c90c Implement missing llGetPrimitiveParams parameters 2010-02-15 06:10:04 +01:00
Melanie
ce3e265575 Plug a small hole 2010-02-15 00:06:03 +00:00
Melanie
b2fefe3e3f Merge branch 'master' of ssh://melanie@3dhosting.de/var/git/careminster into careminster 2010-02-14 22:27:59 +00:00
Melanie
2084e08ad7 Merge branch 'master' into careminster 2010-02-14 22:27:39 +00:00
Kitto Flora
9568718add Angular motor adjustments 2010-02-12 15:56:21 -05:00
Kitto Flora
6a70349512 Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2010-02-12 14:08:32 -05:00
Melanie
0ad8046582 Resolve a merge issue 2010-02-08 22:44:17 +00:00
Melanie
ad38450f9c Merge branch 'master' of ssh://melanie@3dhosting.de/var/git/careminster into careminster 2010-02-08 22:43:53 +00:00
Melanie
c8f3bb56ff Merge branch 'master' into careminster 2010-02-08 22:11:38 +00:00
Kitto Flora
59851ceee6 Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2010-02-08 14:29:06 -05:00
CasperW
044979066c Fix two inconsistencies with LightShare 2010-02-05 00:53:32 +01:00
Melanie
776d62b9c6 Merge branch 'master' into careminster 2010-02-04 17:29:33 +00:00
Melanie
ae9362636e Line endings cleanup 2010-02-04 17:00:16 +00:00
Kitto Flora
48134af616 Motor angular decay fix. 2010-02-03 16:20:13 -05:00
Kitto Flora
fc1ac25935 Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2010-02-03 14:32:29 -05:00
Melanie
0f1a3f8ed2 Merge branch 'master' into careminster 2010-02-03 00:16:02 +00:00
Kitto Flora
8c20610293 AngMotor update 1 2010-02-02 13:28:42 -05:00
Melanie
d5ed92cf38 Merge branch 'master' into careminster 2010-02-02 03:56:29 +00:00
Melanie
6478617c93 Revert "improve locking of m_items in SceneObjectPartInventory"
This reverts commit 968b9e160d.
2010-02-02 03:49:00 +00:00
Melanie
0c5850237e Small fix for a spurious exception 2010-01-29 16:50:00 +00:00
Melanie
9e37d24624 Prevent empty ObjectProperties packets being sent 2010-01-29 11:47:45 +00:00
Melanie
44c86cedcf Resolve one more conflict I overlooked 2010-01-29 07:47:50 +00:00
Melanie
cfca9e1e81 Revert "Updates all IRegionModules to the new style region modules."
This reverts commit ec3c31e61e.
2010-01-29 07:20:13 +00:00
Melanie
5b9ca6e35f Merge branch 'master' into careminster 2010-01-28 14:38:46 +00:00
Revolution
862caa72a8 Fixes terrain editing. Changes ThrottleOutPacketType to task instead of land. 2010-01-28 03:04:38 +00:00
Melanie
2d9b69c186 Merge branch 'master' into careminster 2010-01-28 02:07:18 +00:00
Melanie
e9c9a74e0a Some merge fixups 2010-01-26 15:12:41 +00:00
Melanie
b80ea00265 Merge branch 'master' into careminster 2010-01-26 14:53:14 +00:00
Melanie
d2e17f4ffb Merge branch 'master' of ssh://melanie@3dhosting.de/var/git/careminster into careminster 2010-01-21 23:48:11 +00:00
Kitto Flora
1abb70cc73 Add glue for llSetVehicleFlags(), llRemoveVehicleFlags(). ChODE: Add associated methods. 2010-01-21 19:31:02 -05:00
Melanie
946e06eb58 Merge branch 'master' into careminster 2010-01-21 23:47:40 +00:00
Kitto Flora
66692f90e3 ChODE Object Linear Motion update 2010-01-21 14:39:11 -05:00
CasperW
a964431c21 Merge branch 'master' into casper 2010-01-20 22:19:14 +01:00
CasperW
496a8a4f7c Fixed an issue with PayPrice sometimes being shared between multiple objects 2010-01-20 22:14:43 +01:00
Careminster Staff
24056dc98b Adds example to OpenSim.ini.example for Admin Default Parcel settings 2010-01-19 01:46:50 +00:00
Melanie
6772c9d2b6 Comment the asset deletion handler. It can be abused and is not currently
needed.
2010-01-18 17:35:49 +00:00
Melanie
e3dbd79543 Merge branch 'master' into careminster 2010-01-18 17:24:21 +00:00
CasperW
d9c48e70a9 Fix a major security problem with osSetDynamicTexture which allowed the deletion of /any/ asset. 2010-01-18 17:56:27 +01:00
Melanie
51bb311565 Add chat banning. Staff patch 2010-01-18 02:53:31 +00:00
Melanie
f4e30664e6 Fix a typo 2010-01-18 01:55:54 +00:00
Careminster Staff
44d523518a Adds land ejection and freezing. Adds more checks to land banning. 2010-01-18 01:27:01 +00:00
Melanie
8c39392eaa Merge branch 'master' into careminster 2010-01-16 00:15:26 +00:00
Melanie
884410501e Allow renaming of items that contain no-mod items 2010-01-15 20:19:06 +00:00
Careminster Staff
a87d7a1296 Adds Land Banning. 2010-01-14 04:11:17 +00:00
Melanie
f0152790cf Merge branch 'master' into careminster 2010-01-14 01:20:07 +00:00
Melanie
8452c0869d Merge branch 'master' into careminster 2010-01-11 08:00:03 +00:00
Melanie
20e748205e Merge branch 'master' into careminster 2010-01-11 03:50:24 +00:00
Melanie
649d45a2d4 Merge branch 'master' into careminster 2010-01-11 02:04:58 +00:00
Melanie
0ae861d7d7 Merge branch 'master' into careminster 2010-01-11 02:01:23 +00:00
Melanie
511481e8d9 Merge branch 'master' into careminster 2010-01-10 19:59:49 +00:00
Melanie
1676e70dfe Merge branch 'master' into careminster 2010-01-10 04:16:06 +00:00
Melanie
46b5fe5acd Merge branch 'master' into careminster 2010-01-09 20:54:59 +00:00
Melanie
089f5403a7 Merge branch 'master' into careminster 2010-01-09 16:35:32 +00:00
Melanie
1597e33549 Merge branch 'master' into careminster 2010-01-09 15:59:33 +00:00
Melanie
121c6b4835 Merge branch 'master' into careminster 2010-01-09 15:34:58 +00:00
Melanie
a764eb5dc7 Merge branch 'master' into careminster 2010-01-09 14:21:50 +00:00
Melanie
d22bdb5095 Merge branch 'master' into careminster 2010-01-09 12:02:48 +00:00
Kitto Flora
a2aadb78a9 Maintain control() event stream 2010-01-08 23:12:11 -05:00
Kitto Flora
71adb37fa8 Fix llRotBetween 2010-01-07 23:58:19 -05:00
Kitto Flora
6591f8a592 Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2010-01-07 23:04:28 -05:00
Melanie
3724a38ab4 Allow estate managers (if estate_owner_is_god is set) to actually enter
god mode. Allow god modification of objects if the object owner is the
same god that wants to modify, this allows you to regain perms on your
own objects after IAR import messed them up.
2010-01-05 15:39:53 +00:00
Melanie
54e6c26def Merge branch 'master' into careminster 2010-01-04 22:29:43 +00:00
Melanie
0907d5d69e Finish conversion if XInventoryService 2010-01-04 20:52:44 +00:00
Melanie
53d3f46add First stage port of the XInventoryService 2010-01-04 18:47:47 +00:00
Melanie
d657b76dba Merge branch 'master' into careminster 2010-01-04 06:17:38 +00:00
Kitto Flora
253e2ed699 Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2010-01-03 23:10:01 -05:00
Melanie
1121919b57 Solve conflict 2010-01-03 22:02:36 +00:00
Melanie
61ce884336 Merge branch 'master' into careminster 2010-01-03 21:43:39 +00:00
Melanie
71fdc24f5c Add virtual method StateChange to ScriptBaseClass 2010-01-02 21:21:31 +01:00
Melanie
aa51b83fdc Merge branch 'master' into careminster 2009-12-31 23:31:45 +00:00
Melanie
b321c0a932 Merge branch 'master' into careminster 2009-12-31 21:53:39 +00:00
Kitto Flora
3f901d313b Vehicle Linear parameter adjustments 2009-12-31 16:07:36 -05:00
Melanie
67cfe34e67 Merge branch 'master' into careminster 2009-12-31 06:42:33 +00:00
Melanie
643cc7a0ee Merge branch 'master' into careminster 2009-12-31 04:53:05 +00:00
Melanie
b3cb99036c Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2009-12-31 06:21:03 +01:00
Melanie
9602227eb6 Add a small delay in NewAgentConnection to fix an issue with Hippo
(and possibly other cleints) getting their data mixed up.
2009-12-31 06:20:35 +01:00
Melanie
5e103f2b2e Revert "Merge branch 'master' into careminster"
This reverts commit d49d44923d.
2009-12-30 20:26:22 +00:00
Melanie
d49d44923d Merge branch 'master' into careminster
Conflicts:
	OpenSim/Region/Framework/Scenes/ScenePresence.cs
2009-12-30 20:25:57 +00:00
Melanie
cbe0841bc9 Revert "Merge branch 'master' into careminster"
This reverts commit 596af3f600.
2009-12-30 20:13:18 +00:00
Melanie
596af3f600 Merge branch 'master' into careminster
Conflicts:
	OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs
	OpenSim/Region/Framework/Scenes/ScenePresence.cs
2009-12-30 20:12:21 +00:00
Melanie
8f0d6d6b5c Fix an omission in LSL that causes a viewer crash 2009-12-30 00:37:28 +00:00
Melanie
a08360e3cd Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2009-12-30 00:27:34 +01:00
Melanie
06f639b8f3 Fix a timer list locking issue causing XMREngine deadlocks 2009-12-30 00:27:01 +01:00
Melanie
ba3dfe4121 Merge branch 'master' of ssh://melanie@3dhosting.de/var/git/careminster into careminster 2009-12-29 18:42:30 +00:00
Melanie
67cfac0cf1 Merge branch 'master' into careminster 2009-12-29 18:41:45 +00:00
Melanie
8ad8bd6282 Fix up the new Sirikata cient view 2009-12-27 17:52:27 +01:00
Melanie
045a44b1af One should not copy/paste so much :) 2009-12-27 16:07:59 +00:00
Melanie
d321d23afe Fix the spelling :/ 2009-12-27 16:03:00 +00:00
Melanie
e3f60ce06f Merge branch 'master' into careminster 2009-12-27 15:48:43 +00:00
CasperW
4b96a78039 Merge branch 'master' into casper 2009-12-27 07:11:21 +01:00
CasperW
19a5e606b3 Convert some remaining legacy lock()s for m_parts in SceneObjectGroup to ReaderWriteLockSlim, hopefully fixes a native crash 2009-12-27 07:08:16 +01:00
root
a18f4964cf Correct some issues with the last commit 2009-12-27 01:32:23 +01:00
Melanie
f5c310d9d4 Merge branch 'master' into careminster 2009-12-26 23:39:02 +00:00
CasperW
a6c93ce875 Make sure that we're not bounds checking attachments. 'Cos otherwise your hair will end up on your bum. Seen that before? 2009-12-26 22:55:18 +01:00
CasperW
1b8f91a0db Merge branch 'master' into casper 2009-12-26 18:17:55 +01:00
CasperW
7371c7662a Fix for landing points. Only one scenario is not fully covered by this change, and that is people who teleport from neighbouring regions, who won't get affected by the landing point. 2009-12-26 18:14:12 +01:00
Melanie
f3a4860635 Merge branch 'master' into careminster 2009-12-26 04:13:27 +00:00
root
43c303e27a Make the GenericTableHandler work as intended 2009-12-26 03:24:46 +01:00
Melanie
e51be5f4a7 Merge branch 'master' into careminster 2009-12-26 00:21:03 +00:00
Melanie
59f683066a Set version back to core version (base) and suffix CM. Please DO NOT CHANGE THIS
in the repo. This is the Caremninster repo and the number follows CORE. Always.
2009-12-25 23:23:49 +00:00
Melanie
b19e564317 Restore version suffix. 2009-12-25 23:20:30 +00:00
Melanie
e881f35fbb Merge branch 'master' of ssh://melanie@3dhosting.de/var/git/careminster into careminster 2009-12-25 23:20:08 +00:00
Melanie
59a841d69c Merge branch 'master' into careminster 2009-12-25 23:17:08 +00:00
Kitto Flora
e7439efc74 Recover out-of-region objects during db load. 2009-12-24 19:19:44 -05:00
Melanie
0054afd39b Merge branch 'master' into careminster 2009-12-24 16:45:27 +00:00
Melanie
7f699fca9a Add the body to the LSL List Size property 2009-12-24 18:18:14 +01:00
Melanie
e5e951d92c Merge branch 'master' into careminster 2009-12-24 00:45:53 +00:00
Melanie
5a653ef96f Merge branch 'master' into careminster 2009-12-23 23:10:34 +00:00
Melanie
165f193f78 Merge branch 'master' of ssh://melanie@3dhosting.de/var/git/careminster into careminster 2009-12-23 21:25:08 +00:00
Melanie
6eecbc95e4 Merge branch 'master' into careminster 2009-12-23 21:22:19 +00:00
CasperW
a9f4d7a29c Add a debugger tag to stop Visual Studio from breaking 2009-12-23 17:34:08 +01:00
CasperW
c54e0953d0 Merge branch 'master' of ssh://TOR/var/git/careminster 2009-12-23 14:15:27 +01:00
CasperW
b575bf2524 Added some null reference and deleted group checks to certain functions to fix region crash scenarios. 2009-12-23 14:14:20 +01:00
Melanie
30f59370d3 Merge branch 'master' into careminster 2009-12-22 15:48:41 +00:00
Melanie
73491cceed Merge branch 'master' into careminster 2009-12-22 15:37:24 +00:00
Melanie
28c7bb99bf Merge branch 'master' into careminster 2009-12-22 09:30:50 +00:00
Melanie
551727cd19 Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2009-12-22 06:43:31 +01:00
Melanie
bde26a8282 Add missing file 2009-12-22 06:43:03 +01:00
Kitto Flora
11c4a2cfd0 Merge branch 'master' of ssh://3dhosting.de/var/git/careminster 2009-12-22 00:34:06 -05:00
Kitto Flora
93b930b937 Fix conflicts 2009-12-22 00:33:31 -05:00
root
b53b871669 Add a data path for error messages 2009-12-22 06:25:32 +01:00
Kitto Flora
0a29842caf Include ChOdePlugin 2009-12-22 00:20:04 -05:00
root
49fbe0ddb4 Should not commit without compiling 2009-12-22 03:26:47 +01:00
root
46fea74726 Jumped the gun... 2009-12-22 03:25:09 +01:00
root
69b551c516 Allow 100ms for scripts to run attach(NULL_KEY) on detach 2009-12-22 03:22:33 +01:00
Melanie
fa0621b486 Merge branch 'master' into careminster 2009-12-22 00:41:56 +00:00
Melanie
84a1a0a729 Merge branch 'master' into careminster 2009-12-21 22:07:22 +00:00
Melanie
b891291135 Merge branch 'master' into careminster 2009-12-21 15:02:57 +00:00
CasperW
d8d6e8a304 Merge branch 'master' into casper 2009-12-21 13:29:48 +01:00
CasperW
e3c1466047 Fixed a nasty crash in StandUp() that occurred when the part got killed with an avatar sitting on it. 2009-12-21 13:22:52 +01:00
Melanie
df30b1c832 Merge branch 'master' into careminster 2009-12-21 10:28:50 +00:00
Melanie
3d3e0ea4f3 Merge branch 'master' into careminster 2009-12-20 16:45:28 +00:00
CasperW
c7a457f9ee Merge branch 'casper' 2009-12-20 16:20:48 +01:00
CasperW
31bf25d05e Reverted my changes to jhurliman's packet stack since it currently causes more problems than it resolves. The stack DOES need a rework particularly with regards to priorities, but this is not it. 2009-12-20 16:18:43 +01:00
Kitto Flora
eecaa3d9dd Merge branch 'tests' 2009-12-19 20:00:00 -05:00
Kitto Flora
e38e8ae987 Fix mantis #10 & #14 2009-12-19 19:54:44 -05:00
CasperW
6dbe25360e Add cmSetWindlightSceneTargeted. Add restrictions on windlight script use. 2009-12-17 18:40:34 +01:00
Kitto Flora
6483470ec5 Fix GetWorldRotation(), and a host of related Sit fixes. 2009-12-17 02:54:02 -05:00
Kitto Flora
83fad75e22 Merge branch 'tests' 2009-12-16 18:59:46 -05:00
Kitto Flora
7cd44c1a81 Fix prim linking bug, Manis #14 2009-12-15 20:04:53 -05:00
Melanie
f8b6bc8d11 Merge branch 'master' into careminster 2009-12-15 15:46:18 +00:00
Kitto Flora
0020afaf67 Merge branch 'master' into tests 2009-12-15 06:01:59 -05:00
Kitto Flora
b8b4517211 Removed excessive call to UpdateMovementAnimations which prevented GroundSit; Corrected cause of 'sit on roof'. 2009-12-15 01:49:23 -05:00
Melanie
824d7190c2 Merge branch 'master' into careminster 2009-12-14 00:40:56 +00:00
Melanie
30d64444a0 And reverse 2009-12-12 16:01:53 +00:00
Melanie
9904700dfd Another whitespace test commit 2009-12-12 16:00:44 +00:00
Kitto Flora
49dbae65c9 Merge branch 'master' into tests 2009-12-12 10:14:06 -05:00
Kitto Flora
b056c243e4 Commit partial work because of repo change 2009-12-12 10:12:59 -05:00
Melanie
c00158b238 Reverse test commit (again) 2009-12-12 14:35:12 +00:00
Melanie
794419852b Another test 2009-12-12 14:23:20 +00:00
Melanie
fbafd22124 Reverse text commit whitespace change 2009-12-12 13:43:49 +00:00
Melanie
b9cd66d510 test commit 2009-12-12 13:33:45 +00:00
Melanie
b310efc50f Merge branch 'master' into careminster 2009-12-12 12:54:43 +00:00
Melanie
0fdf883cbd Merge branch 'master' into careminster 2009-12-12 04:56:28 +00:00
Melanie
1382dc976c Merge branch 'master' into careminster 2009-12-12 04:14:47 +00:00
Melanie
54e4dcf454 Merge branch 'master' into careminster 2009-12-11 02:49:41 +00:00
Melanie
f6b1344722 Refix the fix 2009-12-11 02:40:33 +00:00
grid
5ffd59e7b8 Kill a NRE caused by an error message trying to print unavailable data 2009-12-10 22:09:16 -05:00
Melanie
0889b5aef1 Fix version number 2009-12-10 18:20:40 +00:00
Melanie
59ca92b10b Merge branch 'tests' of kitto@tor.k-grid.com:/home/kitto/opensim into careminster 2009-12-10 18:17:29 +00:00
Melanie
956f337046 Merge branch 'careminster' of kitto@tor.k-grid.com:/home/kitto/opensim into careminster 2009-12-09 22:07:03 +00:00
CasperW
a6a6bf007a Move osFunctions into a new Careminster script interface 2009-12-09 23:28:00 +01:00
Melanie
2e9890bbe6 Merge branch 'careminster' of kitto@tor.k-grid.com:/home/kitto/opensim into careminster 2009-12-09 16:57:35 +00:00
Melanie
f2427a7320 Merge branch 'master' into careminster 2009-12-09 16:57:26 +00:00
CasperW
2a6dbd068e Last bits and bobs to clean up the Meta7WindlightModule 2009-12-09 03:58:56 +01:00
unknown
d092977f4a Windlight configuration option in ini, and migration 2009-12-09 01:53:41 +01:00
unknown
e3f229225c Enable scripting interface for windlight 2009-12-09 01:34:26 +01:00
KittoFlora
ee9d46c825 Correct AbsolutePosition calculation 2009-12-08 05:49:05 +01:00
unknown
dbd8c400ce Merge branch 'careminster' into windlight 2009-12-07 18:14:02 +01:00
unknown
29a740ec8c Initial windlight codebase commit 2009-12-07 18:05:40 +01:00
Melanie
c2d3afdeee Same for the remote auth connector 2009-12-07 14:31:20 +00:00
Melanie
9155c9ee37 Merge branch 'master' into careminster 2009-12-07 14:14:00 +00:00
KittoFlora
0d1d437bd3 Fix linked physical daughter prim position update. 2009-12-06 21:11:59 +01:00
CasperW
b15f20520f Merge branch 'careminster' of ssh://TOR/home/kitto/opensim/ into careminster 2009-12-06 17:23:22 +01:00
CasperW
172e2f4e76 Fix to existing ReaderWriterLockSlim implementations 2009-12-06 17:23:07 +01:00
Melanie
23cd1b1954 Revert "Make ObjectSelect packet processing not use FireAndForget"
This reverts commit cade14c58c.
2009-12-06 05:24:43 +00:00
Melanie
cade14c58c Make ObjectSelect packet processing not use FireAndForget 2009-12-06 05:14:17 +00:00
Melanie
1e222d52e6 Change EntityManager to use RWlocks 2009-12-06 03:56:15 +00:00
Melanie
f9ae9afaac Fix build break from conflicted merge 2009-12-06 03:10:34 +00:00
Melanie
09bbfc1d56 Merge branch 'master' into careminster 2009-12-06 03:01:58 +00:00
Melanie
79511ecce2 Experimental: Remove explicit property sends 2009-12-06 02:15:52 +00:00
Melanie
2fe75a62be Skip single prims in unlink selections 2009-12-06 02:00:32 +00:00
Melanie
da414fd509 Change locking to not mix explicit Monitor.* calls with lock() 2009-12-06 01:20:39 +00:00
Melanie
f2891e7738 Remove extra forced updates. They're not needed for each prim. Really. 2009-12-06 00:50:28 +00:00
Melanie
fbefa8273b Lock updates out while linking and unlinking 2009-12-06 00:25:04 +00:00
Melanie
ceccfe02d0 Eliminate multiple updates on link/unlink 2009-12-06 00:02:24 +00:00
Melanie
129de26032 Cause better packing of ObjectProperties 2009-12-05 23:25:30 +00:00
Melanie
43a6fa1d01 Merge branch 'master' into careminster 2009-12-05 19:53:54 +00:00
KittoFlora
cc8246206d Secnond revision of Sit and Stand for unscripted prims; Comment out
spammy debug messages in Interregion....
2009-12-05 09:03:02 +01:00
Melanie
551696bb45 Merge branch 'master' into careminster 2009-12-02 10:22:21 +00:00
Melanie
ded16d3529 Merge branch 'master' into careminster 2009-12-02 00:36:53 +00:00
CasperW
2e6dce434f Enforce physical prim max size on single prims.
Also convert a lock() to ReaderWriterLockSlim that i missed in the last commit
2009-11-30 21:52:55 +01:00
CasperW
9888f95068 Convert multiple lock()s which directly hinder script performance in linksets to ReaderWriterLockSlim. 2009-11-30 21:17:15 +01:00
Melanie
8bbb88ea4e Merge branch 'master' into careminster 2009-11-30 14:16:42 +00:00
Melanie
69d83e1548 Merge branch 'master' into careminster 2009-11-30 08:25:40 +00:00
Melanie
d3e7a52933 Merge branch 'master' into careminster 2009-11-28 09:26:00 +00:00
Melanie
aa695e92f7 Reset update flag when a SOG is deleted. This fixes llDie(); 2009-11-27 08:58:26 +00:00
Melanie
0ddd1ce0b7 Merge branch 'master' into careminster 2009-11-27 08:18:16 +00:00
Melanie
cc18ab12f8 Merge branch 'master' into careminster 2009-11-27 00:40:56 +00:00
root
2c3f6aaa87 Merge branch 'careminster' into tests 2009-11-26 20:41:38 +01:00
KittoFlora
5dedacca3c First attempt at mult-sit on large single prims. 2009-11-26 20:37:08 +01:00
Melanie
ad2f0a1290 Remove OS version crap from about dialog 2009-11-26 18:04:58 +00:00
Melanie
bd3b9f79c2 Update CM version 2009-11-26 17:59:28 +00:00
Melanie
ed148eba32 Merge branch 'master' into careminster 2009-11-26 17:45:09 +00:00
Melanie
06f41bb017 Merge branch 'master' into careminster 2009-11-26 17:27:03 +00:00
Melanie
a27d33cb63 Remove the old remoting-type interregion code for prim/script crossing 2009-11-26 13:13:56 +00:00
Melanie
22c325aa5a Remove GetAssemblyName and friends from the SE interface. It's now handled
internally
2009-11-26 13:13:48 +00:00
CasperW
ac2fcbe224 Improvements to rAdmin admin_shutdown and admin_restart. Both methods can now accept a parameter of noticetype = dialog in order to display a blue persistant dropdown instead of a short notice. Added an optional and configurable delay to the restart method, defaulting at 30 seconds as before. Both methods can also accept a noticetype = none dialog in order to act silently. 2009-11-26 15:17:44 +01:00
CasperW
63b6b9cdce Added animation support for my last commit 2009-11-26 02:35:27 +01:00
CasperW
de55110247 Merge branch 'careminster' into casper 2009-11-26 02:01:51 +01:00
CasperW
b9d22aa821 Add nudge right and left to avatar movement (faster reaction times when stepping left or right.) 2009-11-26 01:59:08 +01:00
Melanie
de927adf27 Add the dummy "Size" property to the list type 2009-11-25 20:01:21 +00:00
Melanie
79395bc7db Merge branch 'master' into careminster 2009-11-25 17:04:05 +00:00
Melanie
c81f37cf82 Change osTeleportAgent parameters from long to int. That numerical range is
not even supported by the underlying type, so there is no need to ask
for a type the script can not even supply.
2009-11-25 17:01:41 +00:00
Melanie
25b4160434 Merge branch 'master' into careminster 2009-11-25 08:45:41 +00:00
KittoFlora
32c464ad1f Fixed animation sequencing: SitHere, Falling, Stand/Walk etc. Login Init
Av Animation at Stand.
2009-11-25 08:03:09 +01:00
CasperW
d5aceb6d95 Append a prefix to the god avatar names appearing in chat whilst in god mode (disabled by default, config entry admin_prefix) 2009-11-24 23:33:12 +01:00
Melanie
81f7e9b462 Merge branch 'careminster' of kitto@tor.k-grid.com:/home/kitto/opensim into careminster 2009-11-24 16:00:45 +00:00
CasperW
8383bde768 Removed some extra debug chatter 2009-11-24 18:18:19 +01:00
CasperW
d114713694 Drop all locking of part.TaskInventory in favour of a ReaderWriterLockSlim lock handler. This gives us:
- Faster prim inventory actions. Multiple threads can read at once.
 - Fixes the known prim inventory thread locks
 - In the event of a thread lock occurring, it will usually self heal after sixty seconds with an error message in the console
2009-11-24 18:02:12 +01:00
Melanie
cad2bf5b08 Merge branch 'master' into careminster 2009-11-24 16:00:35 +00:00
CasperW
247c66b3fe Swap the locking of m_EventQueue and m_Script to ease locks on script inventory operations 2009-11-23 20:25:53 +01:00
CasperW
73c2162ff6 Fixed nullrefs 2009-11-23 19:51:40 +01:00
CasperW
889ce36afa Added some [DebuggerNonUserCode] modifiers to functions that throw EventAbortException() to ease debugging on Visual Studio 2009-11-23 17:59:24 +01:00
Melanie
c3d4b66953 Revert "testing checkout"
This reverts commit 234b29cf66.
2009-11-23 12:52:52 +00:00
unknown
234b29cf66 testing checkout 2009-11-23 14:59:39 +01:00
Melanie
31827b0286 Merge branch 'tests' of kitto@tor.k-grid.com:/home/kitto/opensim into careminster 2009-11-23 04:26:42 +00:00
Melanie
df121a7cd0 Merge branch 'master' into careminster 2009-11-23 04:24:58 +00:00
Melanie
03df03b269 Merge branch 'master' into careminster 2009-11-22 08:37:07 +00:00
KittoFlora
f1522e6204 Add non-scripted sit, fix scripted sit. 2009-11-22 08:31:35 +01:00
Melanie
87bce90086 Merge branch 'master' into careminster 2009-11-22 03:14:21 +00:00
CasperW
4a29a7f92c Minor packet ordering fix 2009-11-21 16:51:08 +00:00
CasperW
0149265ee8 Improved avatar responsiveness. 2009-11-21 16:50:33 +00:00
Melanie
0844e5951c Merge branch 'master' into careminster 2009-11-21 16:00:18 +00:00
KittoFlora
251d1b8fbb Merge branch 'careminster' into tests 2009-11-19 20:20:03 +01:00
KittoFlora
7f0f5060ec Clean up messages in ODE 2009-11-19 20:13:26 +01:00
Melanie
d179f2cce9 Merge branch 'master' into careminster 2009-11-19 17:53:34 +00:00
Melanie
5d0778014d Merge branch 'master' into careminster 2009-11-18 06:20:21 +00:00
KittoFlora
4c10826caa Fix merge conflicts 2009-11-16 02:12:56 +01:00
KittoFlora
873c9098d8 Merge branch 'careminster' into tests 2009-11-16 01:40:15 +01:00
Melanie
6ce5080049 Merge branch 'master' into careminster 2009-11-15 22:38:22 +00:00
Melanie
b9546d12f2 Change land packet sending back to what the careminster release used
to use, remove the silly spiral stuff. Revert to double packets for
improved user experience
2009-11-15 21:20:42 +00:00
Melanie
a49c524c9e Add the ability to send messages to users ir regions via remote admin 2009-11-15 20:22:15 +00:00
Melanie
b7f1fc116e Prevent a nullref if a recipient of a group message gas left the scene 2009-11-15 20:21:46 +00:00
unknown
28aa8010b2 - Lower TIME_MS_TOLERANCE to 200ms - Allow m_updateFlag to be reset to 0 in the event of a terse update being rejected - Re-add a synchronous SendTo for certain types of packets 2009-11-15 19:40:58 +00:00
KittoFlora
c09eb00031 Merge branch 'vehicles' into tests 2009-10-27 23:32:39 +01:00
KittoFlora
1113b3b6eb Merge branch 'vehicles' into tests
Conflicts:

	OpenSim/Region/Physics/Manager/PhysicsActor.cs
	OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
2009-10-27 22:42:55 +01:00
KittoFlora
a81a16f22f llRotLookAt Pt 2 2009-10-27 19:56:39 +01:00
KittoFlora
8428b25939 Add llRotLookat pt1. 2009-10-26 00:10:23 +01:00
1674 changed files with 161370 additions and 168954 deletions

25
.gitignore vendored
View File

@@ -26,14 +26,9 @@
bin/Debug/*.dll
bin/*.dll.mdb
bin/*.db
bin/*.db-journal
bin/addin-db-*
bin/*.dll
bin/OpenSim.vshost.exe.config
bin/OpenSim.32BitLaunch.vshost.exe.config
bin/OpenSim.32BitLaunch.log
UpgradeLog.XML
_UpgradeReport_Files/
bin/ScriptEngines/*-*-*-*-*
bin/ScriptEngines/*.dll
bin/ScriptEngines/*/*.dll
@@ -46,8 +41,6 @@ bin/Physics*
bin/Terrain*
bin/Regions/*
bin/UserAssets
bin/assetcache
bin/maptiles
bin/estate_settings.xml
bin/config-include/CenomeCache.ini
bin/config-include/FlotsamCache.ini
@@ -77,20 +70,4 @@ TAGS
Makefile.local
bin/.version
compile.bat
addon-modules
OpenSim/Data/Tests/test-results/
OpenSim/Framework/Serialization/Tests/test-results/
OpenSim/Framework/Servers/Tests/test-results/
OpenSim/Framework/Tests/test-results/
OpenSim/Region/ClientStack/Linden/Caps/test-results/
OpenSim/Region/ClientStack/Linden/UDP/Tests/test-results/
OpenSim/Region/CoreModules/test-results/
OpenSim/Region/Framework/test-results/
OpenSim/Region/OptionalModules/test-results/
OpenSim/Region/Physics/BulletDotNETPlugin/
OpenSim/Region/Physics/Manager/test-results/
OpenSim/Region/Physics/OdePlugin/Tests/test-results/
OpenSim/Region/ScriptEngine/test-results/
OpenSim/Tests/Common/test-results/
OpenSim/Tests/test-results/
test-results/

View File

@@ -2,37 +2,12 @@
<!-- please leave the top comment for us emacs folks -->
<property name="nunitcmd" value="nunit-console" />
<!-- This target produces a source distribution of OpenSimulator -->
<!-- TODO: A few parameters still need to be tweaked after running this - need to do this automatically with sed or similar -->
<target name="distsrc">
<copy file="bin/OpenSim.ini.example" tofile="bin/OpenSim.ini"/>
<copy file="bin/config-include/StandaloneCommon.ini.example" tofile="bin/config-include/StandaloneCommon.ini"/>
<copy file="bin/config-include/FlotsamCache.ini.example" tofile="bin/config-include/FlotsamCache.ini"/>
<!-- delete files generated by runprebuild.sh which had to be run in order to generate the build file for this target-->
<delete>
<fileset basedir="OpenSim">
<include name="**/*.build"/>
<include name="**/*.csproj*"/>
<include name="**/*.dll.build"/>
<include name="**/*.pidb"/>
<exclude name="Tools/OpenSim.32BitLaunch/**"/>
<exclude name="Tools/Robust.32BitLaunch/**"/>
<exclude name="Tools/LaunchSLClient/**"/>
</fileset>
</delete>
<delete>
<fileset>
<include name="OpenSim.build"/>
<include name="OpenSim.sln"/>
</fileset>
</delete>
</target>
<property name="distbindir" value="distbin" />
<!-- This target produces a binary directory called distbin/ in OpenSim/bin which contains everything needed for binary distribution -->
<!-- For safety/laziness sake, we're going to take the approach of deleting known extraneous files here rather than
trying to copy across only the essential ones -->
<property name="distbindir" value="distbin" />
<target name="distbin">
<copy file="bin/OpenSim.ini.example" tofile="bin/OpenSim.ini"/>
<copy file="bin/config-include/StandaloneCommon.ini.example" tofile="bin/config-include/StandaloneCommon.ini"/>
<delete dir="${distbindir}"/>
<copy todir="${distbindir}">
<fileset>
@@ -45,8 +20,6 @@
<delete dir="${distbindir}/.nant"/>
<delete>
<fileset basedir="${distbindir}">
<include name="compile.bat"/>
<include name="BUILDING.txt"/>
<include name="Makefile"/>
<include name="nant-color"/>
<include name="OpenSim.*"/>
@@ -55,15 +28,59 @@
<include name="TESTING.txt"/>
<include name="TestResult.xml"/>
<include name="bin/OpenSim.Server.ini"/>
<include name="bin/Regions/Regions.ini"/>
<include name="bin/Regions/*"/>
<include name="bin/*.db"/>
<include name="**/.git/**"/>
<include name=".gitignore"/>
<include name=".hgignore"/>
</fileset>
</delete>
</target>
<!-- I don't think these targets are being actively used. But just in case, we'll just comment them out for now - justincc -->
<!--
<property name="projectdir" value="opensim-0.6.9" />
<target name="dist" depends="distdir">
<zip zipfile="${projectdir}.zip">
<fileset basedir=".">
<include name="${projectdir}/**" />
</fileset>
</zip>
<tar destfile="${projectdir}.tar.gz" compression="GZip">
<fileset basedir=".">
<include name="${projectdir}/**" />
</fileset>
</tar>
</target>
<target name="distdir">
<delete dir="${projectdir}" />
<copy todir="${projectdir}">
<fileset basedir=".">
<include name="ThirdPartyLicenses/**" />
<include name="CONTRIBUTORS.txt" />
<include name="README" />
<include name="OpenSim/**/*.cs" />
<include name="**/*.build" />
<include name="**/*.csproj" />
<include name="**/*.csproj.user" />
<include name="**/*.sln" />
<include name="bin/*.dll" />
<include name="bin/*.so" />
<include name="bin/*.config" />
<include name="bin/assets/**" />
<include name="bin/data/**" />
<include name="bin/OpenSim*xml" />
<include name="bin/OpenSim.ini" />
<include name="bin/defaultstripe.png" />
<exclude name="bin/OpenSim.*dll" />
</fileset>
</copy>
<touch file="${projectdir}/bin/startup_commands.txt" />
</target>
-->
<target name="test" depends="build, find-nunit">
<setenv name="MONO_THREADS_PER_CPU" value="100" />
@@ -72,11 +89,6 @@
the assembly here as an exec, and you add the fail clause later.
This lets all the unit tests run and tells you if they fail at the
end, instead of stopping short -->
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.tests">
<arg value="./bin/OpenSim.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.framework.tests">
<arg value="./bin/OpenSim.Framework.Tests.dll" />
</exec>
@@ -92,15 +104,12 @@
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.serialization.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.region.clientstack.lindencaps.tests">
<arg value="./bin/OpenSim.Region.ClientStack.LindenCaps.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.clientstack.lindencaps.tests)==0}" />
<!--
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.region.clientstack.lindenudp.tests">
<arg value="./bin/OpenSim.Region.ClientStack.LindenUDP.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.clientstack.lindenudp.tests)==0}" />
-->
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.region.scriptengine.tests">
<arg value="./bin/OpenSim.Region.ScriptEngine.Tests.dll" />
@@ -112,49 +121,121 @@
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.coremodules.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.region.optionalmodules.tests">
<arg value="./bin/OpenSim.Region.OptionalModules.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.optionalmodules.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.region.framework.tests">
<arg value="./bin/OpenSim.Region.Framework.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.framework.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.data.tests">
<arg value="./bin/OpenSim.Data.Tests.dll" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.data.sqlite.tests">
<arg value="./bin/OpenSim.Data.SQLite.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.data.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.data.sqlite.tests)==0}" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.capabilities.handlers.tests">
<arg value="./bin/OpenSim.Capabilities.Handlers.Tests.dll" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.data.mysql.tests">
<arg value="./bin/OpenSim.Data.MySQL.Tests.dll" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.capabilities.handlers.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.data.mysql.tests)==0}" />
<delete dir="%temp%"/>
</target>
<target name="test-stress" depends="build, find-nunit">
<setenv name="MONO_THREADS_PER_CPU" value="100" />
<target name="test-cov" depends="build">
<!-- Code Coverage Test. Prototype, only works with mono 1.2. Instructions in http://opensimulator.org/wiki/Automated_Testing -->
<mkdir dir="cov" failonerror="false" />
<exec program="mono">
<arg value="--debug" />
<arg value="--profile=monocov:outfile=./cov/OpenSim.Framework.Servers.cov,+[OpenSim.Framework.Servers]" />
<arg value="/usr/lib/nunit/nunit-console.exe" />
<arg value="./bin/OpenSim.Framework.Servers.Tests.dll" />
</exec>
<delete dir="./cov/OpenSim.Framework.Servers" />
<exec program="monocov">
<arg value="--export-html=./cov/OpenSim.Framework.Servers ./cov/OpenSim.Framework.Servers.cov" />
</exec>
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.tests.stress">
<arg value="./bin/OpenSim.Tests.Stress.dll" />
</exec>
<!--
<exec program="mono">
<arg value="&#45;&#45;debug" />
<arg value="&#45;&#45;profile=monocov:outfile=./cov/OpenSim.Region.ClientStack.LindenUDP.cov,+[OpenSim.Region.ClientStack.LindenUDP]" />
<arg value="/usr/lib/nunit/nunit-console.exe" />
<arg value="./bin/OpenSim.Region.ClientStack.LindenUDP.Tests.dll" />
</exec>
<delete dir="./cov/OpenSim.Region.ClientStack.LindenUDP" />
<exec program="monocov">
<arg value="&#45;&#45;export-html=./cov/OpenSim.Region.ClientStack.LindenUDP ./cov/OpenSim.Region.ClientStack.LindenUDP.cov" />
</exec>
-->
<exec program="mono">
<arg value="--debug" />
<arg value="--profile=monocov:outfile=./cov/OpenSim.Region.ScriptEngine.Shared.cov,+[OpenSim.Region.ScriptEngine.Shared]" />
<arg value="/usr/lib/nunit/nunit-console.exe" />
<arg value="./bin/OpenSim.Region.ScriptEngine.Shared.Tests.dll" />
</exec>
<delete dir="./cov/OpenSim.Region.ScriptEngine.Shared" />
<exec program="monocov">
<arg value="--export-html=./cov/OpenSim.Region.ScriptEngine.Shared ./cov/OpenSim.Region.ScriptEngine.Shared.cov" />
</exec>
<exec program="mono">
<arg value="--debug" />
<arg value="--profile=monocov:outfile=./cov/OpenSim.Region.ScriptEngine.Shared.CodeTools.cov,+[OpenSim.Region.ScriptEngine.Shared.CodeTools]" />
<arg value="/usr/lib/nunit/nunit-console.exe" />
<arg value="./bin/OpenSim.Region.ScriptEngine.Shared.CodeTools.Tests.dll" />
</exec>
<delete dir="./cov/OpenSim.Region.ScriptEngine.Shared.CodeTools" />
<exec program="monocov">
<arg value="--export-html=./cov/OpenSim.Region.ScriptEngine.Shared.CodeTools ./cov/OpenSim.Region.ScriptEngine.Shared.CodeTools.cov" />
</exec>
<exec program="mono">
<arg value="--debug" />
<arg value="--profile=monocov:outfile=./cov/OpenSim.Region.CoreModules.cov,+[OpenSim.Region.CoreModules]" />
<arg value="/usr/lib/nunit/nunit-console.exe" />
<arg value="./bin/OpenSim.Region.CoreModules.Tests.dll" />
</exec>
<delete dir="./cov/OpenSim.Region.CoreModules" />
<exec program="monocov">
<arg value="--export-html=./cov/OpenSim.Region.CoreModules ./cov/OpenSim.Region.CoreModules.cov" />
</exec>
<fail message="Failures reported in stress tests." unless="${int::parse(testresult.opensim.tests.stress)==0}" />
<delete dir="%temp%"/>
</target>
<exec program="mono">
<arg value="--debug" />
<arg value="--profile=monocov:outfile=./cov/OpenSim.Region.Framework.cov,+[OpenSim.Region.Framework]" />
<arg value="/usr/lib/nunit/nunit-console.exe" />
<arg value="./bin/OpenSim.Region.Framework.Tests.dll" />
</exec>
<delete dir="./cov/OpenSim.Region.Framework" />
<exec program="monocov">
<arg value="--export-html=./cov/OpenSim.Region.Framework ./cov/OpenSim.Region.Framework.cov" />
</exec>
<exec program="mono">
<arg value="--debug" />
<arg value="--profile=monocov:outfile=./cov/OpenSim.Data.SQLite.cov,+[OpenSim.Data.SQLite]" />
<arg value="/usr/lib/nunit/nunit-console.exe" />
<arg value="./bin/OpenSim.Data.SQLite.Tests.dll" />
</exec>
<delete dir="./cov/OpenSim.Data.SQLite" />
<exec program="monocov">
<arg value="--export-html=./cov/OpenSim.Data.SQLite ./cov/OpenSim.Data.SQLite.cov" />
</exec>
<exec program="mono">
<arg value="--debug" />
<arg value="--profile=monocov:outfile=./cov/OpenSim.Data.MySQL.cov,+[OpenSim.Data.MySQL.Tests]" />
<arg value="/usr/lib/nunit/nunit-console.exe" />
<arg value="./bin/OpenSim.Data.MySQL.Tests.dll" />
</exec>
<delete dir="./cov/OpenSim.Data.MySQL" />
<exec program="monocov">
<arg value="--export-html=./cov/OpenSim.Data.MySQL ./cov/OpenSim.Data.MySQL.cov" />
</exec>
<target name="test-perf" depends="build, find-nunit">
<setenv name="MONO_THREADS_PER_CPU" value="100" />
<delete file="C:\NUnitPrimaryTrace.txt" failonerror="false" />
<delete file="TestResult.xml" failonerror="false" />
<exec program="${nunitcmd}" failonerror="true" resultproperty="testresult.opensim.tests.performance">
<arg value="./bin/OpenSim.Tests.Performance.dll" />
</exec>
<fail message="Failures reported in performance tests." unless="${int::parse(testresult.opensim.tests.performance)==0}" />
<delete dir="%temp%"/>
</target>
<target name="find-nunit">
@@ -167,19 +248,17 @@
if="${int::parse(hasnunit2)==0}" />
<property name="nunitcmd" value="nunit-console"
if="${int::parse(hasnunit2)==1}" />
</target>
<!-- this is used for panda test execution -->
<!-- work in progress -->
<target name="test-xml" depends="build, find-nunit">
<mkdir dir="test-results" failonerror="false" />
<!-- Unit Test Assembly -->
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.tests">
<arg value="./bin/OpenSim.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.framework.tests">
<arg value="./bin/OpenSim.Framework.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Framework.Tests.dll-Results.xml" />
@@ -195,15 +274,12 @@
<arg value="-xml=test-results/OpenSim.Framework.Servers.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.clientstack.lindencaps.tests">
<arg value="./bin/OpenSim.Region.ClientStack.LindenCaps.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Region.ClientStack.LindenCaps.Tests.dll-Results.xml" />
</exec>
<!--
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.clientstack.lindenudp.tests">
<arg value="./bin/OpenSim.Region.ClientStack.LindenUDP.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Region.ClientStack.LindenUDP.Tests.dll-Results.xml" />
</exec>
-->
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.scriptengine.tests">
<arg value="./bin/OpenSim.Region.ScriptEngine.Tests.dll" />
@@ -215,37 +291,58 @@
<arg value="-xml=test-results/OpenSim.Region.CoreModules.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.optionalmodules.tests">
<arg value="./bin/OpenSim.Region.OptionalModules.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Region.OptionalModules.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.framework.tests">
<arg value="./bin/OpenSim.Region.Framework.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Region.Framework.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.data.tests">
<arg value="./bin/OpenSim.Data.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Data.Tests.dll-Results.xml" />
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.data.sqlite.tests">
<arg value="./bin/OpenSim.Data.SQLite.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Data.SQLite.Tests.dll-Results.xml" />
</exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.capabilities.handlers.tests">
<arg value="./bin/OpenSim.Capabilities.Handlers.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Capabilities.Handlers.Tests.dll-Results.xml" />
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.data.mysql.tests">
<arg value="./bin/OpenSim.Data.MySQL.Tests.dll" />
<arg value="-xml=test-results/OpenSim.Data.MySQL.Tests.dll-Results.xml" />
</exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.servers.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.clientstack.lindenudp.tests)==0}" />
<!-- <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.clientstack.lindenudp.tests)==0}" /> -->
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.scriptengine.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.coremodules.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.optionalmodules.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.framework.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.data.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.capabilities.handlers.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.data.sqlite.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.data.mysql.tests)==0}" />
</target>
<!-- <exec program="nunit-console.exe" failonerror="false" resultproperty="testresult.acceptancetestassembly"> -->
<!-- <arg value="AcceptanceTestAssembly.dll" /> -->
<!-- <arg value="/xml=AcceptanceTestAssembly-Results.xml" /> -->
<!-- </exec> -->
<!-- <fail message="Failures reported in unit tests." unless="${int::parse(testresult.unittestassembly)==0}" /> -->
<!-- <fail message="Failures reported in acceptance tests." unless="${int::parse(testresult.acceptancetestassembly)==0}" /> -->
<!-- </target> -->
<!-- <nunit2 failonerror="true" verbose="true"> -->
<!-- <formatter type="Xml" usefile="true" extension=".xml" outputdir="./test-results" /> -->
<!-- <test> -->
<!-- <assemblies> -->
<!-- <include name="./bin/OpenSim.Framework.Tests.dll" /> -->
<!-- <include name="./bin/OpenSim.Framework.Servers.Tests.dll" /> -->
<!-- <include name="./bin/OpenSim.Region.ClientStack.LindenUDP.Tests.dll" /> -->
<!-- <include name="./bin/OpenSim.Region.ScriptEngine.Tests.dll" /> -->
<!-- <include name="./bin/OpenSim.Region.CoreModules.Tests.dll" /> -->
<!-- <include name="./bin/OpenSim.Region.Framework.Tests.dll" /> -->
<!-- <include name="./bin/OpenSim.Data.SQLite.Tests.dll" /> -->
<!-- <include name="./bin/OpenSim.Data.MySQL.Tests.dll" /> -->
<!-- </assemblies> -->
<!-- </test> -->
<!-- </nunit2> -->
<!-- </target> -->
<target name="doxygen">
<exec program="doxygen" workingdir="doc" commandline="doxygen.conf" />

View File

@@ -1,4 +1,4 @@
==== Building OpenSim ====
=== Building OpenSim ===
=== Building on Windows ===
@@ -12,27 +12,18 @@ Steps:
=== Building on Linux ===
Prereqs:
* Mono >= 2.4.3
* Mono >= 2.4.2
* Nant >= 0.85
* On some Linux distributions you may need to install additional packages.
See http://opensimulator.org/wiki/Dependencies for more information.
* May also use xbuild (included in mono distributions)
* May use Monodevelop, a cross-platform IDE
From the distribution type:
* ./runprebuild.sh
* nant (or xbuild)
* nant
* cd bin
* copy OpenSim.ini.example to OpenSim.ini and other appropriate files in bin/config-include
* run mono OpenSim.exe
=== Using Monodevelop ===
From the distribution type:
* ./runprebuild.sh
* type monodevelop OpenSim.sln
=== References ===
Helpful resources:

View File

@@ -1,39 +1,34 @@
<<<>>>>The following people have contributed to OpenSim (Thank you
The following people have contributed to OpenSim (Thank you
for your effort!)
Add your name in here if you have committed to OpenSim
= Current OpenSim Developers (in very rough order of appearance) =
These folks represent the current core team for OpenSim, and are the
people that make the day to day of OpenSim happen.
* justincc (OSVW Consulting, justincc.org)
* chi11ken (Genkii)
* dahlia
* Melanie Thielker
* Diva (Crista Lopes, University of California, Irvine)
* Dan Lake (Intel)
* Marck
* Mic Bowman (Intel)
* BlueWall (James Hughes)
* Nebadon Izumi (Michael Cerquoni, OSgrid)
* Snoopy Pfeffer
* Richard Adams (Intel)
= Core Developers Following the White Rabbit =
Core developers who have temporarily (we hope) gone chasing the white rabbit.
They are in all similar to the active core developers, except that they haven't
been that active lately, so their voting rights are awaiting their come back.
* MW (Tribal Media AB)
* Adam Frisby (DeepThink Pty Ltd)
* MingChen (DeepThink Pty Ltd)
* lbsa71 (Tribal Media AB)
* Sean Dague / sdague (IBM)
* Tedd
* justincc
* Teravus (w3z)
* Johan Berntsson (3Di)
* Ckrinke (Charles Krinke)
* chi11ken (Genkii)
* adjohn (Genkii)
* Dr Scofield aka Dirk Husemann (IBM Research - Zurich)
* dahlia
* mikem (3Di)
* Melanie Thielker
* Homer_Horwitz
* idb (Ian Brown)
* Diva (Crista Lopes, University of California, Irvine)
* nlin (3Di)
* Arthur Rodrigo S Valadares (IBM)
* John Hurliman
= Past Open Sim Developers =
These folks are alumns of the OpenSim core group, but are now
@@ -49,12 +44,6 @@ where we are today.
* Dalien
* Darok
* Alondria
* Sean Dague / sdague (IBM)
* Tedd
* MingChen (DeepThink Pty Ltd)
* adjohn (Genkii)
* idb (Ian Brown)
* Johan Berntsson (3Di)
= Additional OpenSim Contributors =
@@ -71,7 +60,6 @@ what it is today.
* CharlieO
* ChrisDown
* Chris Yeoh (IBM)
* controlbreak
* coyled
* Daedius
* Dong Jun Lan (IBM)
@@ -81,18 +69,12 @@ what it is today.
* dmiles (Daxtron Labs)
* dslake (Intel)
* FredoChaplin
* Garmin Kawaguichi
* Gerhard
* Godfrey
* Grumly57
* GuduleLapointe
* Ewe Loon
* Fernando Oliveira
* Fly-Man
* Flyte Xevious
* Garmin Kawaguichi
* Gryc Ueusp
* Hiro Lecker
* Imaze Rhiano
* Intimidated
* Jeremy Bongio (IBM)
@@ -110,27 +92,19 @@ what it is today.
* lulurun
* M.Igarashi
* maimedleech
* Mana Janus
* MarcelEdward
* Mic Bowman
* Michelle Argus
* Michael Cortez (The Flotsam Project, http://osflotsam.org/)
* Micheil Merlin
* Mike Osias (IBM)
* Mike Pitman (IBM)
* mikkopa/_someone - RealXtend
* Misterblue (Intel)
* Mircea Kitsune
* mpallari
* MrMonkE
* Nebadon Izumi (Michael Cerquoni - http://OSgrid.org)
* Neil Canham
* nornalbion
* Omar Vera Ustariz (IBM)
* openlifegrid.com
* Oren Hurvitz (Kitely)
* otakup0pe
* Pixel Tomsen
* ralphos
* RemedyTomm
* Revolution
@@ -141,15 +115,9 @@ what it is today.
* Ruud Lathorp
* SachaMagne
* Salahzar Stenvaag
* satguru p srivastava
* sempuki
* SignpostMarv
* SpotOn3D
* Stefan_Boom / stoehr
* Snoopy
* Strawberry Fride
* Talun
* TechplexEngineer (Blake Bourque)
* TBG Renfold
* tglion
* tlaukkan/Tommil (Tommi S. E. Laukkanen, Bubble Cloud)
* tyre
@@ -198,7 +166,6 @@ This software uses components from the following developers:
* GlynnTucker.Cache (http://gtcache.sourceforge.net/)
* NDesk.Options 0.2.1 (http://www.ndesk.org/Options)
* Json.NET 3.5 Release 6. The binary used is actually Newtonsoft.Json.Net20.dll for Mono 2.4 compatability (http://james.newtonking.com/projects/json-net.aspx)
* zlib.net for C# 1.0.4 (http://www.componentace.com/zlib_.NET.htm)
Some plugins are based on Cable Beach
Cable Beach is Copyright (c) 2008 Intel Corporation
@@ -208,4 +175,3 @@ In addition, we would like to thank:
* The Mono Project
* The NANT Developers
* Microsoft (.NET, MSSQL-Adapters)
*x

View File

@@ -30,7 +30,6 @@ using System.Collections.Generic;
using System.Reflection;
using System.Threading;
using log4net;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Framework.RegionLoader.Filesystem;
using OpenSim.Framework.RegionLoader.Web;
@@ -69,7 +68,7 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
public void Initialise()
{
m_log.Error("[LOAD REGIONS PLUGIN]: " + Name + " cannot be default-initialized!");
m_log.Error("[LOADREGIONS]: " + Name + " cannot be default-initialized!");
throw new PluginNotInitialisedException(Name);
}
@@ -86,47 +85,44 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
IRegionLoader regionLoader;
if (m_openSim.ConfigSource.Source.Configs["Startup"].GetString("region_info_source", "filesystem") == "filesystem")
{
m_log.Info("[LOAD REGIONS PLUGIN]: Loading region configurations from filesystem");
m_log.Info("[LOADREGIONS]: Loading region configurations from filesystem");
regionLoader = new RegionLoaderFileSystem();
}
else
{
m_log.Info("[LOAD REGIONS PLUGIN]: Loading region configurations from web");
m_log.Info("[LOADREGIONSPLUGIN]: Loading region configurations from web");
regionLoader = new RegionLoaderWebServer();
}
m_log.Info("[LOADREGIONSPLUGIN]: Loading region configurations...");
regionLoader.SetIniConfigSource(m_openSim.ConfigSource.Source);
RegionInfo[] regionsToLoad = regionLoader.LoadRegions();
m_log.Info("[LOAD REGIONS PLUGIN]: Loading specific shared modules...");
m_log.Info("[LOAD REGIONS PLUGIN]: DynamicTextureModule...");
m_log.Info("[LOADREGIONSPLUGIN]: Loading specific shared modules...");
m_log.Info("[LOADREGIONSPLUGIN]: DynamicTextureModule...");
m_openSim.ModuleLoader.LoadDefaultSharedModule(new DynamicTextureModule());
m_log.Info("[LOAD REGIONS PLUGIN]: LoadImageURLModule...");
m_log.Info("[LOADREGIONSPLUGIN]: LoadImageURLModule...");
m_openSim.ModuleLoader.LoadDefaultSharedModule(new LoadImageURLModule());
m_log.Info("[LOAD REGIONS PLUGIN]: XMLRPCModule...");
m_log.Info("[LOADREGIONSPLUGIN]: XMLRPCModule...");
m_openSim.ModuleLoader.LoadDefaultSharedModule(new XMLRPCModule());
// m_log.Info("[LOADREGIONSPLUGIN]: AssetTransactionModule...");
// m_openSim.ModuleLoader.LoadDefaultSharedModule(new AssetTransactionModule());
m_log.Info("[LOAD REGIONS PLUGIN]: Done.");
m_log.Info("[LOADREGIONSPLUGIN]: AssetTransactionModule...");
m_openSim.ModuleLoader.LoadDefaultSharedModule(new AssetTransactionModule());
m_log.Info("[LOADREGIONSPLUGIN]: Done.");
if (!CheckRegionsForSanity(regionsToLoad))
{
m_log.Error("[LOAD REGIONS PLUGIN]: Halting startup due to conflicts in region configurations");
m_log.Error("[LOADREGIONS]: Halting startup due to conflicts in region configurations");
Environment.Exit(1);
}
for (int i = 0; i < regionsToLoad.Length; i++)
{
IScene scene;
m_log.Debug("[LOAD REGIONS PLUGIN]: Creating Region: " + regionsToLoad[i].RegionName + " (ThreadID: " +
m_log.Debug("[LOADREGIONS]: Creating Region: " + regionsToLoad[i].RegionName + " (ThreadID: " +
Thread.CurrentThread.ManagedThreadId.ToString() +
")");
bool changed = m_openSim.PopulateRegionEstateInfo(regionsToLoad[i]);
m_openSim.CreateRegion(regionsToLoad[i], true, out scene);
if (changed)
regionsToLoad[i].EstateSettings.Save();
if (scene != null)
{
m_newRegionCreatedHandler = OnNewRegionCreated;
@@ -154,20 +150,9 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
/// <returns>True if we're sane, false if we're insane</returns>
private bool CheckRegionsForSanity(RegionInfo[] regions)
{
if (regions.Length == 0)
if (regions.Length <= 1)
return true;
foreach (RegionInfo region in regions)
{
if (region.RegionID == UUID.Zero)
{
m_log.ErrorFormat(
"[LOAD REGIONS PLUGIN]: Region {0} has invalid UUID {1}",
region.RegionName, region.RegionID);
return false;
}
}
for (int i = 0; i < regions.Length - 1; i++)
{
for (int j = i + 1; j < regions.Length; j++)
@@ -175,7 +160,7 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
if (regions[i].RegionID == regions[j].RegionID)
{
m_log.ErrorFormat(
"[LOAD REGIONS PLUGIN]: Regions {0} and {1} have the same UUID {2}",
"[LOADREGIONS]: Regions {0} and {1} have the same UUID {2}",
regions[i].RegionName, regions[j].RegionName, regions[i].RegionID);
return false;
}
@@ -183,14 +168,14 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
regions[i].RegionLocX == regions[j].RegionLocX && regions[i].RegionLocY == regions[j].RegionLocY)
{
m_log.ErrorFormat(
"[LOAD REGIONS PLUGIN]: Regions {0} and {1} have the same grid location ({2}, {3})",
"[LOADREGIONS]: Regions {0} and {1} have the same grid location ({2}, {3})",
regions[i].RegionName, regions[j].RegionName, regions[i].RegionLocX, regions[i].RegionLocY);
return false;
}
else if (regions[i].InternalEndPoint.Port == regions[j].InternalEndPoint.Port)
{
m_log.ErrorFormat(
"[LOAD REGIONS PLUGIN]: Regions {0} and {1} have the same internal IP port {2}",
"[LOADREGIONS]: Regions {0} and {1} have the same internal IP port {2}",
regions[i].RegionName, regions[j].RegionName, regions[i].InternalEndPoint.Port);
return false;
}
@@ -199,5 +184,35 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
return true;
}
public void LoadRegionFromConfig(OpenSimBase openSim, ulong regionhandle)
{
m_log.Info("[LOADREGIONS]: Load Regions addin being initialised");
IRegionLoader regionLoader;
if (openSim.ConfigSource.Source.Configs["Startup"].GetString("region_info_source", "filesystem") == "filesystem")
{
m_log.Info("[LOADREGIONS]: Loading Region Info from filesystem");
regionLoader = new RegionLoaderFileSystem();
}
else
{
m_log.Info("[LOADREGIONS]: Loading Region Info from web");
regionLoader = new RegionLoaderWebServer();
}
regionLoader.SetIniConfigSource(openSim.ConfigSource.Source);
RegionInfo[] regionsToLoad = regionLoader.LoadRegions();
for (int i = 0; i < regionsToLoad.Length; i++)
{
if (regionhandle == regionsToLoad[i].RegionHandle)
{
IScene scene;
m_log.Debug("[LOADREGIONS]: Creating Region: " + regionsToLoad[i].RegionName + " (ThreadID: " +
Thread.CurrentThread.ManagedThreadId.ToString() + ")");
openSim.CreateRegion(regionsToLoad[i], true, out scene);
}
}
}
}
}

View File

@@ -62,7 +62,7 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
new List<ISharedRegionModule>();
#region IApplicationPlugin implementation
public void Initialise (OpenSimBase openSim)
{
m_openSim = openSim;
@@ -91,24 +91,66 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
{
if (node.Type.GetInterface(typeof(ISharedRegionModule).ToString()) != null)
{
if (CheckModuleEnabled(node, modulesConfig))
// Get the config string
string moduleString =
modulesConfig.GetString("Setup_" + node.Id, String.Empty);
// We have a selector
if (moduleString != String.Empty)
{
m_log.DebugFormat("[REGIONMODULES]: Found shared region module {0}, class {1}", node.Id, node.Type);
m_sharedModules.Add(node);
// Allow disabling modules even if they don't have
// support for it
if (moduleString == "disabled")
continue;
// Split off port, if present
string[] moduleParts = moduleString.Split(new char[] { '/' }, 2);
// Format is [port/][class]
string className = moduleParts[0];
if (moduleParts.Length > 1)
className = moduleParts[1];
// Match the class name if given
if (className != String.Empty &&
node.Type.ToString() != className)
continue;
}
m_log.DebugFormat("[REGIONMODULES]: Found shared region module {0}, class {1}", node.Id, node.Type);
m_sharedModules.Add(node);
}
else if (node.Type.GetInterface(typeof(INonSharedRegionModule).ToString()) != null)
{
if (CheckModuleEnabled(node, modulesConfig))
// Get the config string
string moduleString =
modulesConfig.GetString("Setup_" + node.Id, String.Empty);
// We have a selector
if (moduleString != String.Empty)
{
m_log.DebugFormat("[REGIONMODULES]: Found non-shared region module {0}, class {1}", node.Id, node.Type);
m_nonSharedModules.Add(node);
// Allow disabling modules even if they don't have
// support for it
if (moduleString == "disabled")
continue;
// Split off port, if present
string[] moduleParts = moduleString.Split(new char[] { '/' }, 2);
// Format is [port/][class]
string className = moduleParts[0];
if (moduleParts.Length > 1)
className = moduleParts[1];
// Match the class name if given
if (className != String.Empty &&
node.Type.ToString() != className)
continue;
}
m_log.DebugFormat("[REGIONMODULES]: Found non-shared region module {0}, class {1}", node.Id, node.Type);
m_nonSharedModules.Add(node);
}
else
{
m_log.DebugFormat("[REGIONMODULES]: Found unknown type of module {0}, class {1}", node.Id, node.Type);
}
}
// Load and init the module. We try a constructor with a port
@@ -155,6 +197,8 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
m_sharedInstances.Add(module);
module.Initialise(m_openSim.ConfigSource.Source);
}
}
public void PostInitialise ()
@@ -166,6 +210,7 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
{
module.PostInitialise();
}
}
#endregion
@@ -199,6 +244,7 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
#endregion
public string Version
{
get
@@ -216,42 +262,6 @@ namespace OpenSim.ApplicationPlugins.RegionModulesController
}
#region IRegionModulesController implementation
/// <summary>
/// Check that the given module is no disabled in the [Modules] section of the config files.
/// </summary>
/// <param name="node"></param>
/// <param name="modulesConfig">The config section</param>
/// <returns>true if the module is enabled, false if it is disabled</returns>
protected bool CheckModuleEnabled(TypeExtensionNode node, IConfig modulesConfig)
{
// Get the config string
string moduleString =
modulesConfig.GetString("Setup_" + node.Id, String.Empty);
// We have a selector
if (moduleString != String.Empty)
{
// Allow disabling modules even if they don't have
// support for it
if (moduleString == "disabled")
return false;
// Split off port, if present
string[] moduleParts = moduleString.Split(new char[] { '/' }, 2);
// Format is [port/][class]
string className = moduleParts[0];
if (moduleParts.Length > 1)
className = moduleParts[1];
// Match the class name if given
if (className != String.Empty &&
node.Type.ToString() != className)
return false;
}
return true;
}
// The root of all evil.
// This is where we handle adding the modules to scenes when they

View File

@@ -27,7 +27,6 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using OpenMetaverse;
using OpenSim.Framework;
@@ -40,11 +39,12 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
public class RestAppearanceServices : IRest
{
// private static readonly int PARM_USERID = 0;
private static readonly int PARM_USERID = 0;
// private static readonly int PARM_PATH = 1;
// private bool enabled = false;
private bool enabled = false;
private string qPrefix = "appearance";
/// <summary>
@@ -64,7 +64,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
{
Rest.Log.InfoFormat("{0} Domain is relative, adding absolute prefix", MsgId);
qPrefix = String.Format("{0}{1}{2}", Rest.Prefix, Rest.UrlPathSeparator, qPrefix);
qPrefix = String.Format("{0}{1}{2}", Rest.Prefix, Rest.UrlPathSeparator, qPrefix);
Rest.Log.InfoFormat("{0} Domain is now <{1}>", MsgId, qPrefix);
}
@@ -74,7 +73,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
// Activate if everything went OK
// enabled = true;
enabled = true;
Rest.Log.InfoFormat("{0} User appearance services initialization complete", MsgId);
}
@@ -95,7 +94,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
public void Close()
{
// enabled = false;
enabled = false;
Rest.Log.InfoFormat("{0} User appearance services closing down", MsgId);
}
@@ -295,31 +294,31 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
/// </summary>
/// <param name=rdata>HTTP service request work area</param>
// private void DoGet(AppearanceRequestData rdata)
// {
// AvatarData adata = Rest.AvatarServices.GetAvatar(rdata.userProfile.ID);
//
// if (adata == null)
// {
// rdata.Fail(Rest.HttpStatusCodeNoContent,
// String.Format("appearance data not found for user {0} {1}",
// rdata.userProfile.FirstName, rdata.userProfile.SurName));
// }
// rdata.userAppearance = adata.ToAvatarAppearance(rdata.userProfile.ID);
//
// rdata.initXmlWriter();
//
// FormatUserAppearance(rdata);
//
// // Indicate a successful request
//
// rdata.Complete();
//
// // Send the response to the user. The body will be implicitly
// // constructed from the result of the XML writer.
//
// rdata.Respond(String.Format("Appearance {0} Normal completion", rdata.method));
// }
private void DoGet(AppearanceRequestData rdata)
{
AvatarData adata = Rest.AvatarServices.GetAvatar(rdata.userProfile.ID);
if (adata == null)
{
rdata.Fail(Rest.HttpStatusCodeNoContent,
String.Format("appearance data not found for user {0} {1}",
rdata.userProfile.FirstName, rdata.userProfile.SurName));
}
rdata.userAppearance = adata.ToAvatarAppearance(rdata.userProfile.ID);
rdata.initXmlWriter();
FormatUserAppearance(rdata);
// Indicate a successful request
rdata.Complete();
// Send the response to the user. The body will be implicitly
// constructed from the result of the XML writer.
rdata.Respond(String.Format("Appearance {0} Normal completion", rdata.method));
}
/// <summary>
/// POST adds NEW information to the user profile database.
@@ -327,112 +326,112 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
/// characteristics supplied in the request.
/// </summary>
// private void DoExtend(AppearanceRequestData rdata)
// {
//
// bool created = false;
// bool modified = false;
// string newnode = String.Empty;
//
// Rest.Log.DebugFormat("{0} POST ENTRY", MsgId);
//
// //AvatarAppearance old = Rest.AvatarServices.GetUserAppearance(rdata.userProfile.ID);
//
// rdata.userAppearance = new AvatarAppearance();
//
// // Although the following behavior is admitted by HTTP I am becoming
// // increasingly doubtful that it is appropriate for REST. If I attempt to
// // add a new record, and it already exists, then it seems to me that the
// // attempt should fail, rather than update the existing record.
// AvatarData adata = null;
// if (GetUserAppearance(rdata))
// {
// modified = rdata.userAppearance != null;
// created = !modified;
// adata = new AvatarData(rdata.userAppearance);
// Rest.AvatarServices.SetAvatar(rdata.userProfile.ID, adata);
// // Rest.UserServices.UpdateUserProfile(rdata.userProfile);
// }
// else
// {
// created = true;
// adata = new AvatarData(rdata.userAppearance);
// Rest.AvatarServices.SetAvatar(rdata.userProfile.ID, adata);
// // Rest.UserServices.UpdateUserProfile(rdata.userProfile);
// }
//
// if (created)
// {
// newnode = String.Format("{0} {1}", rdata.userProfile.FirstName,
// rdata.userProfile.SurName);
// // Must include a location header with a URI that identifies the new resource.
//
// rdata.AddHeader(Rest.HttpHeaderLocation,String.Format("http://{0}{1}:{2}{3}{4}",
// rdata.hostname,rdata.port,rdata.path,Rest.UrlPathSeparator, newnode));
// rdata.Complete(Rest.HttpStatusCodeCreated);
//
// }
// else
// {
// if (modified)
// {
// rdata.Complete(Rest.HttpStatusCodeOK);
// }
// else
// {
// rdata.Complete(Rest.HttpStatusCodeNoContent);
// }
// }
//
// rdata.Respond(String.Format("Appearance {0} : Normal completion", rdata.method));
//
// }
private void DoExtend(AppearanceRequestData rdata)
{
bool created = false;
bool modified = false;
string newnode = String.Empty;
Rest.Log.DebugFormat("{0} POST ENTRY", MsgId);
//AvatarAppearance old = Rest.AvatarServices.GetUserAppearance(rdata.userProfile.ID);
rdata.userAppearance = new AvatarAppearance();
// Although the following behavior is admitted by HTTP I am becoming
// increasingly doubtful that it is appropriate for REST. If I attempt to
// add a new record, and it already exists, then it seems to me that the
// attempt should fail, rather than update the existing record.
AvatarData adata = null;
if (GetUserAppearance(rdata))
{
modified = rdata.userAppearance != null;
created = !modified;
adata = new AvatarData(rdata.userAppearance);
Rest.AvatarServices.SetAvatar(rdata.userProfile.ID, adata);
// Rest.UserServices.UpdateUserProfile(rdata.userProfile);
}
else
{
created = true;
adata = new AvatarData(rdata.userAppearance);
Rest.AvatarServices.SetAvatar(rdata.userProfile.ID, adata);
// Rest.UserServices.UpdateUserProfile(rdata.userProfile);
}
if (created)
{
newnode = String.Format("{0} {1}", rdata.userProfile.FirstName,
rdata.userProfile.SurName);
// Must include a location header with a URI that identifies the new resource.
rdata.AddHeader(Rest.HttpHeaderLocation,String.Format("http://{0}{1}:{2}{3}{4}",
rdata.hostname,rdata.port,rdata.path,Rest.UrlPathSeparator, newnode));
rdata.Complete(Rest.HttpStatusCodeCreated);
}
else
{
if (modified)
{
rdata.Complete(Rest.HttpStatusCodeOK);
}
else
{
rdata.Complete(Rest.HttpStatusCodeNoContent);
}
}
rdata.Respond(String.Format("Appearance {0} : Normal completion", rdata.method));
}
/// <summary>
/// This updates the user's appearance. not all aspects need to be provided,
/// only those supplied will be changed.
/// </summary>
// private void DoUpdate(AppearanceRequestData rdata)
// {
//
// // REFACTORING PROBLEM This was commented out. It doesn't work for 0.7
//
// //bool created = false;
// //bool modified = false;
//
//
// //rdata.userAppearance = Rest.AvatarServices.GetUserAppearance(rdata.userProfile.ID);
//
// //// If the user exists then this is considered a modification regardless
// //// of what may, or may not be, specified in the payload.
//
// //if (rdata.userAppearance != null)
// //{
// // modified = true;
// // Rest.AvatarServices.UpdateUserAppearance(rdata.userProfile.ID, rdata.userAppearance);
// // Rest.UserServices.UpdateUserProfile(rdata.userProfile);
// //}
//
// //if (created)
// //{
// // rdata.Complete(Rest.HttpStatusCodeCreated);
// //}
// //else
// //{
// // if (modified)
// // {
// // rdata.Complete(Rest.HttpStatusCodeOK);
// // }
// // else
// // {
// // rdata.Complete(Rest.HttpStatusCodeNoContent);
// // }
// //}
//
// rdata.Respond(String.Format("Appearance {0} : Normal completion", rdata.method));
//
// }
private void DoUpdate(AppearanceRequestData rdata)
{
// REFACTORING PROBLEM This was commented out. It doesn't work for 0.7
//bool created = false;
//bool modified = false;
//rdata.userAppearance = Rest.AvatarServices.GetUserAppearance(rdata.userProfile.ID);
//// If the user exists then this is considered a modification regardless
//// of what may, or may not be, specified in the payload.
//if (rdata.userAppearance != null)
//{
// modified = true;
// Rest.AvatarServices.UpdateUserAppearance(rdata.userProfile.ID, rdata.userAppearance);
// Rest.UserServices.UpdateUserProfile(rdata.userProfile);
//}
//if (created)
//{
// rdata.Complete(Rest.HttpStatusCodeCreated);
//}
//else
//{
// if (modified)
// {
// rdata.Complete(Rest.HttpStatusCodeOK);
// }
// else
// {
// rdata.Complete(Rest.HttpStatusCodeNoContent);
// }
//}
rdata.Respond(String.Format("Appearance {0} : Normal completion", rdata.method));
}
/// <summary>
/// Delete the specified user's appearance. This actually performs a reset
@@ -440,29 +439,31 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
/// Existing ownership is preserved. All prior updates are lost and can not
/// be recovered.
/// </summary>
// private void DoDelete(AppearanceRequestData rdata)
// {
// AvatarData adata = Rest.AvatarServices.GetAvatar(rdata.userProfile.ID);
//
// if (adata != null)
// {
// AvatarAppearance old = adata.ToAvatarAppearance(rdata.userProfile.ID);
// rdata.userAppearance = new AvatarAppearance();
// rdata.userAppearance.Owner = old.Owner;
// adata = new AvatarData(rdata.userAppearance);
//
// Rest.AvatarServices.SetAvatar(rdata.userProfile.ID, adata);
//
// rdata.Complete();
// }
// else
// {
//
// rdata.Complete(Rest.HttpStatusCodeNoContent);
// }
//
// rdata.Respond(String.Format("Appearance {0} : Normal completion", rdata.method));
// }
private void DoDelete(AppearanceRequestData rdata)
{
AvatarData adata = Rest.AvatarServices.GetAvatar(rdata.userProfile.ID);
if (adata != null)
{
AvatarAppearance old = adata.ToAvatarAppearance(rdata.userProfile.ID);
rdata.userAppearance = new AvatarAppearance();
rdata.userAppearance.Owner = old.Owner;
adata = new AvatarData(rdata.userAppearance);
Rest.AvatarServices.SetAvatar(rdata.userProfile.ID, adata);
rdata.Complete();
}
else
{
rdata.Complete(Rest.HttpStatusCodeNoContent);
}
rdata.Respond(String.Format("Appearance {0} : Normal completion", rdata.method));
}
#endregion method-specific processing
@@ -488,18 +489,17 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
rdata.userAppearance.AvatarHeight = (float) Convert.ToDouble(xml.Value);
indata = true;
}
// if (xml.MoveToAttribute("Owner"))
// {
// rdata.userAppearance.Owner = (UUID)xml.Value;
// indata = true;
// }
if (xml.MoveToAttribute("Owner"))
{
rdata.userAppearance.Owner = (UUID)xml.Value;
indata = true;
}
if (xml.MoveToAttribute("Serial"))
{
rdata.userAppearance.Serial = Convert.ToInt32(xml.Value);
indata = true;
}
break;
/*
case "Body" :
if (xml.MoveToAttribute("Item"))
{
@@ -656,7 +656,6 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
indata = true;
}
break;
*/
case "Attachment" :
{
@@ -747,11 +746,10 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
rdata.writer.WriteStartElement("Appearance");
rdata.writer.WriteAttributeString("Height", rdata.userAppearance.AvatarHeight.ToString());
// if (rdata.userAppearance.Owner != UUID.Zero)
// rdata.writer.WriteAttributeString("Owner", rdata.userAppearance.Owner.ToString());
if (rdata.userAppearance.Owner != UUID.Zero)
rdata.writer.WriteAttributeString("Owner", rdata.userAppearance.Owner.ToString());
rdata.writer.WriteAttributeString("Serial", rdata.userAppearance.Serial.ToString());
/*
FormatPart(rdata, "Body", rdata.userAppearance.BodyItem, rdata.userAppearance.BodyAsset);
FormatPart(rdata, "Skin", rdata.userAppearance.SkinItem, rdata.userAppearance.SkinAsset);
FormatPart(rdata, "Hair", rdata.userAppearance.HairItem, rdata.userAppearance.HairAsset);
@@ -768,20 +766,26 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
FormatPart(rdata, "UnderShirt", rdata.userAppearance.UnderShirtItem, rdata.userAppearance.UnderShirtAsset);
FormatPart(rdata, "UnderPants", rdata.userAppearance.UnderPantsItem, rdata.userAppearance.UnderPantsAsset);
*/
Rest.Log.DebugFormat("{0} FormatUserAppearance: Formatting attachments", MsgId);
rdata.writer.WriteStartElement("Attachments");
List<AvatarAttachment> attachments = rdata.userAppearance.GetAttachments();
foreach (AvatarAttachment attach in attachments)
Hashtable attachments = rdata.userAppearance.GetAttachments();
if (attachments != null)
{
rdata.writer.WriteStartElement("Attachment");
rdata.writer.WriteAttributeString("AtPoint", attach.AttachPoint.ToString());
rdata.writer.WriteAttributeString("Item", attach.ItemID.ToString());
rdata.writer.WriteAttributeString("Asset", attach.AssetID.ToString());
Rest.Log.DebugFormat("{0} FormatUserAppearance: Formatting attachments", MsgId);
rdata.writer.WriteStartElement("Attachments");
for (int i = 0; i < attachments.Count; i++)
{
Hashtable attachment = attachments[i] as Hashtable;
rdata.writer.WriteStartElement("Attachment");
rdata.writer.WriteAttributeString("AtPoint", i.ToString());
rdata.writer.WriteAttributeString("Item", (string) attachment["item"]);
rdata.writer.WriteAttributeString("Asset", (string) attachment["asset"]);
rdata.writer.WriteEndElement();
}
rdata.writer.WriteEndElement();
}
rdata.writer.WriteEndElement();
Primitive.TextureEntry texture = rdata.userAppearance.Texture;

View File

@@ -539,6 +539,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory
/// path has not already been registered, the method is added to the active
/// handler table.
/// </summary>
public void AddStreamHandler(string httpMethod, string path, RestMethod method)
{
if (!IsEnabled)

View File

@@ -148,7 +148,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory.Tests
Rest.main.SceneManager.ForEachScene(delegate(Scene s)
{
s.ForEachRootScenePresence(delegate(ScenePresence sp)
s.ForEachScenePresence(delegate(ScenePresence sp)
{
if (sp.Firstname == names[0] && sp.Lastname == names[1])
{
@@ -168,8 +168,8 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory.Tests
float x = Convert.ToSingle(rdata.Parameters[PARM_MOVE_X]);
float y = Convert.ToSingle(rdata.Parameters[PARM_MOVE_Y]);
float z = Convert.ToSingle(rdata.Parameters[PARM_MOVE_Z]);
Vector3 vector = new Vector3(x, y, z);
presence.MoveToTarget(vector, false, false);
Vector3 vector = new Vector3(x,y,z);
presence.DoAutoPilot(0,vector,presence.ControllingClient);
}
catch (Exception e)
{

View File

@@ -41,7 +41,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
{
#region GET methods
public string GetHandler(string request, string path, string param,
IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
OSHttpRequest httpRequest, OSHttpResponse httpResponse)
{
// foreach (string h in httpRequest.Headers.AllKeys)
// foreach (string v in httpRequest.Headers.GetValues(h))
@@ -64,7 +64,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
}
}
public string GetHandlerRegions(IOSHttpResponse httpResponse)
public string GetHandlerRegions(OSHttpResponse httpResponse)
{
RestXmlWriter rxw = new RestXmlWriter(new StringWriter());
@@ -95,7 +95,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
return rxw.ToString();
}
public string GetHandlerRegion(IOSHttpResponse httpResponse, string param)
public string GetHandlerRegion(OSHttpResponse httpResponse, string param)
{
// be resilient and don't get confused by a terminating '/'
param = param.TrimEnd(new char[]{'/'});
@@ -180,7 +180,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
}
#endregion GET methods
protected string RegionTerrain(IOSHttpResponse httpResponse, Scene scene)
protected string RegionTerrain(OSHttpResponse httpResponse, Scene scene)
{
httpResponse.SendChunked = true;
httpResponse.ContentType = "text/xml";
@@ -190,7 +190,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
// "GET", "terrain not implemented");
}
protected string RegionStats(IOSHttpResponse httpResponse, Scene scene)
protected string RegionStats(OSHttpResponse httpResponse, Scene scene)
{
int users = scene.GetRootAgentCount();
int objects = scene.Entities.Count - users;
@@ -213,7 +213,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
return rxw.ToString();
}
protected string RegionPrims(IOSHttpResponse httpResponse, Scene scene, Vector3 min, Vector3 max)
protected string RegionPrims(OSHttpResponse httpResponse, Scene scene, Vector3 min, Vector3 max)
{
httpResponse.SendChunked = true;
httpResponse.ContentType = "text/xml";

View File

@@ -40,7 +40,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
{
#region GET methods
public string GetRegionInfoHandler(string request, string path, string param,
IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
OSHttpRequest httpRequest, OSHttpResponse httpResponse)
{
// foreach (string h in httpRequest.Headers.AllKeys)
// foreach (string v in httpRequest.Headers.GetValues(h))
@@ -64,7 +64,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
}
}
public string GetRegionInfoHandlerRegions(IOSHttpResponse httpResponse)
public string GetRegionInfoHandlerRegions(OSHttpResponse httpResponse)
{
RestXmlWriter rxw = new RestXmlWriter(new StringWriter());

View File

@@ -40,7 +40,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
#region POST methods
public string PostHandler(string request, string path, string param,
IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
OSHttpRequest httpRequest, OSHttpResponse httpResponse)
{
// foreach (string h in httpRequest.Headers.AllKeys)
// foreach (string v in httpRequest.Headers.GetValues(h))
@@ -92,7 +92,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
}
}
public string CreateRegion(IOSHttpRequest request, IOSHttpResponse response)
public string CreateRegion(OSHttpRequest request, OSHttpResponse response)
{
RestXmlWriter rxw = new RestXmlWriter(new StringWriter());
@@ -108,7 +108,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Regions
return rxw.ToString();
}
public string LoadPrims(string requestBody, IOSHttpRequest request, IOSHttpResponse response, Scene scene)
public string LoadPrims(string requestBody, OSHttpRequest request, OSHttpResponse response, Scene scene)
{
IRegionSerialiserModule serialiser = scene.RequestModuleInterface<IRegionSerialiserModule>();
if (serialiser != null)

View File

@@ -328,7 +328,7 @@ namespace OpenSim.ApplicationPlugins.Rest
/// </summary>
/// <param name="request">HTTP request header</param>
/// <returns>true when the HTTP request came from god.</returns>
protected bool IsGod(IOSHttpRequest request)
protected bool IsGod(OSHttpRequest request)
{
string[] keys = request.Headers.GetValues("X-OpenSim-Godkey");
if (null == keys) return false;
@@ -342,7 +342,7 @@ namespace OpenSim.ApplicationPlugins.Rest
/// HTTP header is indeed the password on file for the avatar
/// specified by the UUID
/// </summary>
protected bool IsVerifiedUser(IOSHttpRequest request, UUID uuid)
protected bool IsVerifiedUser(OSHttpRequest request, UUID uuid)
{
// XXX under construction
return false;
@@ -377,7 +377,7 @@ namespace OpenSim.ApplicationPlugins.Rest
/// <param name="message">failure message</param>
/// <remarks>This should probably set a return code as
/// well. (?)</remarks>
protected string Failure(IOSHttpResponse response, OSHttpStatusCode status,
protected string Failure(OSHttpResponse response, OSHttpStatusCode status,
string method, string format, params string[] msg)
{
string m = String.Format(format, msg);
@@ -396,7 +396,7 @@ namespace OpenSim.ApplicationPlugins.Rest
/// <param name="e">exception causing the failure message</param>
/// <remarks>This should probably set a return code as
/// well. (?)</remarks>
public string Failure(IOSHttpResponse response, OSHttpStatusCode status,
public string Failure(OSHttpResponse response, OSHttpStatusCode status,
string method, Exception e)
{
string m = String.Format("exception occurred: {0}", e.Message);

View File

@@ -1,175 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Services.Interfaces;
// using OpenSim.Region.Framework.Interfaces;
namespace OpenSim.Framework.Capabilities
{
/// <summary>
/// XXX Probably not a particularly nice way of allow us to get the scene presence from the scene (chiefly so that
/// we can popup a message on the user's client if the inventory service has permanently failed). But I didn't want
/// to just pass the whole Scene into CAPS.
/// </summary>
public delegate IClientAPI GetClientDelegate(UUID agentID);
public class Caps
{
// private static readonly ILog m_log =
// LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private string m_httpListenerHostName;
private uint m_httpListenPort;
/// <summary>
/// This is the uuid portion of every CAPS path. It is used to make capability urls private to the requester.
/// </summary>
private string m_capsObjectPath;
public string CapsObjectPath { get { return m_capsObjectPath; } }
private CapsHandlers m_capsHandlers;
private Dictionary<string, string> m_externalCapsHandlers;
private IHttpServer m_httpListener;
private UUID m_agentID;
private string m_regionName;
public UUID AgentID
{
get { return m_agentID; }
}
public string RegionName
{
get { return m_regionName; }
}
public string HostName
{
get { return m_httpListenerHostName; }
}
public uint Port
{
get { return m_httpListenPort; }
}
public IHttpServer HttpListener
{
get { return m_httpListener; }
}
public bool SSLCaps
{
get { return m_httpListener.UseSSL; }
}
public string SSLCommonName
{
get { return m_httpListener.SSLCommonName; }
}
public CapsHandlers CapsHandlers
{
get { return m_capsHandlers; }
}
public Dictionary<string, string> ExternalCapsHandlers
{
get { return m_externalCapsHandlers; }
}
public Caps(IHttpServer httpServer, string httpListen, uint httpPort, string capsPath,
UUID agent, string regionName)
{
m_capsObjectPath = capsPath;
m_httpListener = httpServer;
m_httpListenerHostName = httpListen;
m_httpListenPort = httpPort;
if (httpServer != null && httpServer.UseSSL)
{
m_httpListenPort = httpServer.SSLPort;
httpListen = httpServer.SSLCommonName;
httpPort = httpServer.SSLPort;
}
m_agentID = agent;
m_capsHandlers = new CapsHandlers(httpServer, httpListen, httpPort, (httpServer == null) ? false : httpServer.UseSSL);
m_externalCapsHandlers = new Dictionary<string, string>();
m_regionName = regionName;
}
/// <summary>
/// Register a handler. This allows modules to register handlers.
/// </summary>
/// <param name="capName"></param>
/// <param name="handler"></param>
public void RegisterHandler(string capName, IRequestHandler handler)
{
m_capsHandlers[capName] = handler;
//m_log.DebugFormat("[CAPS]: Registering handler for \"{0}\": path {1}", capName, handler.Path);
}
/// <summary>
/// Register an external handler. The service for this capability is somewhere else
/// given by the URL.
/// </summary>
/// <param name="capsName"></param>
/// <param name="url"></param>
public void RegisterHandler(string capsName, string url)
{
m_externalCapsHandlers.Add(capsName, url);
}
/// <summary>
/// Remove all CAPS service handlers.
/// </summary>
public void DeregisterHandlers()
{
if (m_capsHandlers != null)
{
foreach (string capsName in m_capsHandlers.Caps)
{
m_capsHandlers.Remove(capsName);
}
}
}
}
}

View File

@@ -1,124 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenSim.Framework;
using OpenSim.Framework.Capabilities;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Services.Interfaces;
using Caps = OpenSim.Framework.Capabilities.Caps;
using OSDArray = OpenMetaverse.StructuredData.OSDArray;
using OSDMap = OpenMetaverse.StructuredData.OSDMap;
namespace OpenSim.Capabilities.Handlers
{
public class FetchInventory2Handler
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IInventoryService m_inventoryService;
public FetchInventory2Handler(IInventoryService invService)
{
m_inventoryService = invService;
}
public string FetchInventoryRequest(string request, string path, string param, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
// m_log.DebugFormat("[FETCH INVENTORY HANDLER]: Received FetchInventory capabilty request");
OSDMap requestmap = (OSDMap)OSDParser.DeserializeLLSDXml(Utils.StringToBytes(request));
OSDArray itemsRequested = (OSDArray)requestmap["items"];
string reply;
LLSDFetchInventory llsdReply = new LLSDFetchInventory();
foreach (OSDMap osdItemId in itemsRequested)
{
UUID itemId = osdItemId["item_id"].AsUUID();
InventoryItemBase item = m_inventoryService.GetItem(new InventoryItemBase(itemId));
if (item != null)
{
// We don't know the agent that this request belongs to so we'll use the agent id of the item
// which will be the same for all items.
llsdReply.agent_id = item.Owner;
llsdReply.items.Array.Add(ConvertInventoryItem(item));
}
}
reply = LLSDHelpers.SerialiseLLSDReply(llsdReply);
return reply;
}
/// <summary>
/// Convert an internal inventory item object into an LLSD object.
/// </summary>
/// <param name="invItem"></param>
/// <returns></returns>
private LLSDInventoryItem ConvertInventoryItem(InventoryItemBase invItem)
{
LLSDInventoryItem llsdItem = new LLSDInventoryItem();
llsdItem.asset_id = invItem.AssetID;
llsdItem.created_at = invItem.CreationDate;
llsdItem.desc = invItem.Description;
llsdItem.flags = (int)invItem.Flags;
llsdItem.item_id = invItem.ID;
llsdItem.name = invItem.Name;
llsdItem.parent_id = invItem.Folder;
llsdItem.type = invItem.AssetType;
llsdItem.inv_type = invItem.InvType;
llsdItem.permissions = new LLSDPermissions();
llsdItem.permissions.creator_id = invItem.CreatorIdAsUuid;
llsdItem.permissions.base_mask = (int)invItem.CurrentPermissions;
llsdItem.permissions.everyone_mask = (int)invItem.EveryOnePermissions;
llsdItem.permissions.group_id = invItem.GroupID;
llsdItem.permissions.group_mask = (int)invItem.GroupPermissions;
llsdItem.permissions.is_owner_group = invItem.GroupOwned;
llsdItem.permissions.next_owner_mask = (int)invItem.NextPermissions;
llsdItem.permissions.owner_id = invItem.Owner;
llsdItem.permissions.owner_mask = (int)invItem.CurrentPermissions;
llsdItem.sale_info = new LLSDSaleInfo();
llsdItem.sale_info.sale_price = invItem.SalePrice;
llsdItem.sale_info.sale_type = invItem.SaleType;
return llsdItem;
}
}
}

View File

@@ -1,71 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using Nini.Config;
using OpenSim.Server.Base;
using OpenSim.Services.Interfaces;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Server.Handlers.Base;
using OpenMetaverse;
namespace OpenSim.Capabilities.Handlers
{
public class FetchInventory2ServerConnector : ServiceConnector
{
private IInventoryService m_InventoryService;
private string m_ConfigName = "CapsService";
public FetchInventory2ServerConnector(IConfigSource config, IHttpServer server, string configName)
: base(config, server, configName)
{
if (configName != String.Empty)
m_ConfigName = configName;
IConfig serverConfig = config.Configs[m_ConfigName];
if (serverConfig == null)
throw new Exception(String.Format("No section '{0}' in config file", m_ConfigName));
string invService = serverConfig.GetString("InventoryService", String.Empty);
if (invService == String.Empty)
throw new Exception("No InventoryService in config file");
Object[] args = new Object[] { config };
m_InventoryService = ServerUtils.LoadPlugin<IInventoryService>(invService, args);
if (m_InventoryService == null)
throw new Exception(String.Format("Failed to load InventoryService from {0}; config is {1}", invService, m_ConfigName));
FetchInventory2Handler fiHandler = new FetchInventory2Handler(m_InventoryService);
IRequestHandler reqHandler
= new RestStreamHandler(
"POST", "/CAPS/FetchInventory/", fiHandler.FetchInventoryRequest, "FetchInventory", null);
server.AddStreamHandler(reqHandler);
}
}
}

View File

@@ -1,116 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Reflection;
using System.IO;
using System.Web;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenSim.Framework;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Services.Interfaces;
using Caps = OpenSim.Framework.Capabilities.Caps;
namespace OpenSim.Capabilities.Handlers
{
public class GetMeshHandler
{
// private static readonly ILog m_log =
// LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IAssetService m_assetService;
public GetMeshHandler(IAssetService assService)
{
m_assetService = assService;
}
public Hashtable ProcessGetMesh(Hashtable request, UUID AgentId, Caps cap)
{
Hashtable responsedata = new Hashtable();
responsedata["int_response_code"] = 400; //501; //410; //404;
responsedata["content_type"] = "text/plain";
responsedata["keepalive"] = false;
responsedata["str_response_string"] = "Request wasn't what was expected";
string meshStr = string.Empty;
if (request.ContainsKey("mesh_id"))
meshStr = request["mesh_id"].ToString();
UUID meshID = UUID.Zero;
if (!String.IsNullOrEmpty(meshStr) && UUID.TryParse(meshStr, out meshID))
{
if (m_assetService == null)
{
responsedata["int_response_code"] = 404; //501; //410; //404;
responsedata["content_type"] = "text/plain";
responsedata["keepalive"] = false;
responsedata["str_response_string"] = "The asset service is unavailable. So is your mesh.";
return responsedata;
}
AssetBase mesh = m_assetService.Get(meshID.ToString());
if (mesh != null)
{
if (mesh.Type == (SByte)AssetType.Mesh)
{
responsedata["str_response_string"] = Convert.ToBase64String(mesh.Data);
responsedata["content_type"] = "application/vnd.ll.mesh";
responsedata["int_response_code"] = 200;
}
// Optionally add additional mesh types here
else
{
responsedata["int_response_code"] = 404; //501; //410; //404;
responsedata["content_type"] = "text/plain";
responsedata["keepalive"] = false;
responsedata["str_response_string"] = "Unfortunately, this asset isn't a mesh.";
return responsedata;
}
}
else
{
responsedata["int_response_code"] = 404; //501; //410; //404;
responsedata["content_type"] = "text/plain";
responsedata["keepalive"] = false;
responsedata["str_response_string"] = "Your Mesh wasn't found. Sorry!";
return responsedata;
}
}
return responsedata;
}
}
}

View File

@@ -1,79 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
using Nini.Config;
using OpenSim.Server.Base;
using OpenSim.Services.Interfaces;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Server.Handlers.Base;
using OpenSim.Framework.Servers;
using OpenMetaverse;
namespace OpenSim.Capabilities.Handlers
{
public class GetMeshServerConnector : ServiceConnector
{
private IAssetService m_AssetService;
private string m_ConfigName = "CapsService";
public GetMeshServerConnector(IConfigSource config, IHttpServer server, string configName) :
base(config, server, configName)
{
if (configName != String.Empty)
m_ConfigName = configName;
IConfig serverConfig = config.Configs[m_ConfigName];
if (serverConfig == null)
throw new Exception(String.Format("No section '{0}' in config file", m_ConfigName));
string assetService = serverConfig.GetString("AssetService", String.Empty);
if (assetService == String.Empty)
throw new Exception("No AssetService in config file");
Object[] args = new Object[] { config };
m_AssetService =
ServerUtils.LoadPlugin<IAssetService>(assetService, args);
if (m_AssetService == null)
throw new Exception(String.Format("Failed to load AssetService from {0}; config is {1}", assetService, m_ConfigName));
GetMeshHandler gmeshHandler = new GetMeshHandler(m_AssetService);
IRequestHandler reqHandler
= new RestHTTPHandler(
"GET",
"/CAPS/" + UUID.Random(),
httpMethod => gmeshHandler.ProcessGetMesh(httpMethod, UUID.Zero, null),
"GetMesh",
null);
server.AddStreamHandler(reqHandler);
}
}
}

View File

@@ -1,369 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Drawing;
using System.Drawing.Imaging;
using System.Reflection;
using System.IO;
using System.Web;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenMetaverse.Imaging;
using OpenSim.Framework;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Services.Interfaces;
using Caps = OpenSim.Framework.Capabilities.Caps;
namespace OpenSim.Capabilities.Handlers
{
public class GetTextureHandler : BaseStreamHandler
{
private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IAssetService m_assetService;
public const string DefaultFormat = "x-j2c";
// TODO: Change this to a config option
const string REDIRECT_URL = null;
public GetTextureHandler(string path, IAssetService assService, string name, string description)
: base("GET", path, name, description)
{
m_assetService = assService;
}
public override byte[] Handle(string path, Stream request, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
// Try to parse the texture ID from the request URL
NameValueCollection query = HttpUtility.ParseQueryString(httpRequest.Url.Query);
string textureStr = query.GetOne("texture_id");
string format = query.GetOne("format");
//m_log.DebugFormat("[GETTEXTURE]: called {0}", textureStr);
if (m_assetService == null)
{
m_log.Error("[GETTEXTURE]: Cannot fetch texture " + textureStr + " without an asset service");
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.NotFound;
}
UUID textureID;
if (!String.IsNullOrEmpty(textureStr) && UUID.TryParse(textureStr, out textureID))
{
// m_log.DebugFormat("[GETTEXTURE]: Received request for texture id {0}", textureID);
string[] formats;
if (format != null && format != string.Empty)
{
formats = new string[1] { format.ToLower() };
}
else
{
formats = WebUtil.GetPreferredImageTypes(httpRequest.Headers.Get("Accept"));
if (formats.Length == 0)
formats = new string[1] { DefaultFormat }; // default
}
// OK, we have an array with preferred formats, possibly with only one entry
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.NotFound;
foreach (string f in formats)
{
if (FetchTexture(httpRequest, httpResponse, textureID, f))
break;
}
}
else
{
m_log.Warn("[GETTEXTURE]: Failed to parse a texture_id from GetTexture request: " + httpRequest.Url);
}
// m_log.DebugFormat(
// "[GETTEXTURE]: For texture {0} sending back response {1}, data length {2}",
// textureID, httpResponse.StatusCode, httpResponse.ContentLength);
return null;
}
/// <summary>
///
/// </summary>
/// <param name="httpRequest"></param>
/// <param name="httpResponse"></param>
/// <param name="textureID"></param>
/// <param name="format"></param>
/// <returns>False for "caller try another codec"; true otherwise</returns>
private bool FetchTexture(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse, UUID textureID, string format)
{
// m_log.DebugFormat("[GETTEXTURE]: {0} with requested format {1}", textureID, format);
AssetBase texture;
string fullID = textureID.ToString();
if (format != DefaultFormat)
fullID = fullID + "-" + format;
if (!String.IsNullOrEmpty(REDIRECT_URL))
{
// Only try to fetch locally cached textures. Misses are redirected
texture = m_assetService.GetCached(fullID);
if (texture != null)
{
if (texture.Type != (sbyte)AssetType.Texture)
{
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.NotFound;
return true;
}
WriteTextureData(httpRequest, httpResponse, texture, format);
}
else
{
string textureUrl = REDIRECT_URL + textureID.ToString();
m_log.Debug("[GETTEXTURE]: Redirecting texture request to " + textureUrl);
httpResponse.RedirectLocation = textureUrl;
return true;
}
}
else // no redirect
{
// try the cache
texture = m_assetService.GetCached(fullID);
if (texture == null)
{
//m_log.DebugFormat("[GETTEXTURE]: texture was not in the cache");
// Fetch locally or remotely. Misses return a 404
texture = m_assetService.Get(textureID.ToString());
if (texture != null)
{
if (texture.Type != (sbyte)AssetType.Texture)
{
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.NotFound;
return true;
}
if (format == DefaultFormat)
{
WriteTextureData(httpRequest, httpResponse, texture, format);
return true;
}
else
{
AssetBase newTexture = new AssetBase(texture.ID + "-" + format, texture.Name, (sbyte)AssetType.Texture, texture.Metadata.CreatorID);
newTexture.Data = ConvertTextureData(texture, format);
if (newTexture.Data.Length == 0)
return false; // !!! Caller try another codec, please!
newTexture.Flags = AssetFlags.Collectable;
newTexture.Temporary = true;
m_assetService.Store(newTexture);
WriteTextureData(httpRequest, httpResponse, newTexture, format);
return true;
}
}
}
else // it was on the cache
{
//m_log.DebugFormat("[GETTEXTURE]: texture was in the cache");
WriteTextureData(httpRequest, httpResponse, texture, format);
return true;
}
}
// not found
// m_log.Warn("[GETTEXTURE]: Texture " + textureID + " not found");
httpResponse.StatusCode = (int)System.Net.HttpStatusCode.NotFound;
return true;
}
private void WriteTextureData(IOSHttpRequest request, IOSHttpResponse response, AssetBase texture, string format)
{
string range = request.Headers.GetOne("Range");
if (!String.IsNullOrEmpty(range)) // JP2's only
{
// Range request
int start, end;
if (TryParseRange(range, out start, out end))
{
// Before clamping start make sure we can satisfy it in order to avoid
// sending back the last byte instead of an error status
if (start >= texture.Data.Length)
{
response.StatusCode = (int)System.Net.HttpStatusCode.RequestedRangeNotSatisfiable;
}
else
{
end = Utils.Clamp(end, 0, texture.Data.Length - 1);
start = Utils.Clamp(start, 0, end);
int len = end - start + 1;
//m_log.Debug("Serving " + start + " to " + end + " of " + texture.Data.Length + " bytes for texture " + texture.ID);
// Always return PartialContent, even if the range covered the entire data length
// We were accidentally sending back 404 before in this situation
// https://issues.apache.org/bugzilla/show_bug.cgi?id=51878 supports sending 206 even if the
// entire range is requested, and viewer 3.2.2 (and very probably earlier) seems fine with this.
response.StatusCode = (int)System.Net.HttpStatusCode.PartialContent;
response.ContentLength = len;
response.ContentType = texture.Metadata.ContentType;
response.AddHeader("Content-Range", String.Format("bytes {0}-{1}/{2}", start, end, texture.Data.Length));
response.Body.Write(texture.Data, start, len);
}
}
else
{
m_log.Warn("[GETTEXTURE]: Malformed Range header: " + range);
response.StatusCode = (int)System.Net.HttpStatusCode.BadRequest;
}
}
else // JP2's or other formats
{
// Full content request
response.StatusCode = (int)System.Net.HttpStatusCode.OK;
response.ContentLength = texture.Data.Length;
if (format == DefaultFormat)
response.ContentType = texture.Metadata.ContentType;
else
response.ContentType = "image/" + format;
response.Body.Write(texture.Data, 0, texture.Data.Length);
}
// if (response.StatusCode < 200 || response.StatusCode > 299)
// m_log.WarnFormat(
// "[GETTEXTURE]: For texture {0} requested range {1} responded {2} with content length {3} (actual {4})",
// texture.FullID, range, response.StatusCode, response.ContentLength, texture.Data.Length);
// else
// m_log.DebugFormat(
// "[GETTEXTURE]: For texture {0} requested range {1} responded {2} with content length {3} (actual {4})",
// texture.FullID, range, response.StatusCode, response.ContentLength, texture.Data.Length);
}
private bool TryParseRange(string header, out int start, out int end)
{
if (header.StartsWith("bytes="))
{
string[] rangeValues = header.Substring(6).Split('-');
if (rangeValues.Length == 2)
{
if (Int32.TryParse(rangeValues[0], out start) && Int32.TryParse(rangeValues[1], out end))
return true;
}
}
start = end = 0;
return false;
}
private byte[] ConvertTextureData(AssetBase texture, string format)
{
m_log.DebugFormat("[GETTEXTURE]: Converting texture {0} to {1}", texture.ID, format);
byte[] data = new byte[0];
MemoryStream imgstream = new MemoryStream();
Bitmap mTexture = new Bitmap(1, 1);
ManagedImage managedImage;
Image image = (Image)mTexture;
try
{
// Taking our jpeg2000 data, decoding it, then saving it to a byte array with regular data
imgstream = new MemoryStream();
// Decode image to System.Drawing.Image
if (OpenJPEG.DecodeToImage(texture.Data, out managedImage, out image))
{
// Save to bitmap
mTexture = new Bitmap(image);
EncoderParameters myEncoderParameters = new EncoderParameters();
myEncoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 95L);
// Save bitmap to stream
ImageCodecInfo codec = GetEncoderInfo("image/" + format);
if (codec != null)
{
mTexture.Save(imgstream, codec, myEncoderParameters);
// Write the stream to a byte array for output
data = imgstream.ToArray();
}
else
m_log.WarnFormat("[GETTEXTURE]: No such codec {0}", format);
}
}
catch (Exception e)
{
m_log.WarnFormat("[GETTEXTURE]: Unable to convert texture {0} to {1}: {2}", texture.ID, format, e.Message);
}
finally
{
// Reclaim memory, these are unmanaged resources
// If we encountered an exception, one or more of these will be null
if (mTexture != null)
mTexture.Dispose();
if (image != null)
image.Dispose();
if (imgstream != null)
{
imgstream.Close();
imgstream.Dispose();
}
}
return data;
}
// From msdn
private static ImageCodecInfo GetEncoderInfo(String mimeType)
{
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (int j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
}
}

View File

@@ -1,69 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using Nini.Config;
using OpenSim.Server.Base;
using OpenSim.Services.Interfaces;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Server.Handlers.Base;
using OpenMetaverse;
namespace OpenSim.Capabilities.Handlers
{
public class GetTextureServerConnector : ServiceConnector
{
private IAssetService m_AssetService;
private string m_ConfigName = "CapsService";
public GetTextureServerConnector(IConfigSource config, IHttpServer server, string configName) :
base(config, server, configName)
{
if (configName != String.Empty)
m_ConfigName = configName;
IConfig serverConfig = config.Configs[m_ConfigName];
if (serverConfig == null)
throw new Exception(String.Format("No section '{0}' in config file", m_ConfigName));
string assetService = serverConfig.GetString("AssetService", String.Empty);
if (assetService == String.Empty)
throw new Exception("No AssetService in config file");
Object[] args = new Object[] { config };
m_AssetService =
ServerUtils.LoadPlugin<IAssetService>(assetService, args);
if (m_AssetService == null)
throw new Exception(String.Format("Failed to load AssetService from {0}; config is {1}", assetService, m_ConfigName));
server.AddStreamHandler(
new GetTextureHandler("/CAPS/GetTexture/" /*+ UUID.Random() */, m_AssetService, "GetTexture", null));
}
}
}

View File

@@ -1,181 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Drawing;
using System.Drawing.Imaging;
using System.Reflection;
using System.IO;
using System.Web;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenMetaverse.Imaging;
using OpenSim.Framework;
using OpenSim.Framework.Capabilities;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Services.Interfaces;
using Caps = OpenSim.Framework.Capabilities.Caps;
namespace OpenSim.Capabilities.Handlers
{
public class UploadBakedTextureHandler
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private Caps m_HostCapsObj;
private IAssetService m_assetService;
private bool m_persistBakedTextures;
public UploadBakedTextureHandler(Caps caps, IAssetService assetService, bool persistBakedTextures)
{
m_HostCapsObj = caps;
m_assetService = assetService;
m_persistBakedTextures = persistBakedTextures;
}
/// <summary>
/// Handle a request from the client for a Uri to upload a baked texture.
/// </summary>
/// <param name="request"></param>
/// <param name="path"></param>
/// <param name="param"></param>
/// <param name="httpRequest"></param>
/// <param name="httpResponse"></param>
/// <returns>The upload response if the request is successful, null otherwise.</returns>
public string UploadBakedTexture(
string request, string path, string param, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
try
{
string capsBase = "/CAPS/" + m_HostCapsObj.CapsObjectPath;
string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000");
BakedTextureUploader uploader =
new BakedTextureUploader(capsBase + uploaderPath, m_HostCapsObj.HttpListener);
uploader.OnUpLoad += BakedTextureUploaded;
m_HostCapsObj.HttpListener.AddStreamHandler(
new BinaryStreamHandler(
"POST", capsBase + uploaderPath, uploader.uploaderCaps, "UploadBakedTexture", null));
string protocol = "http://";
if (m_HostCapsObj.SSLCaps)
protocol = "https://";
string uploaderURL = protocol + m_HostCapsObj.HostName + ":" +
m_HostCapsObj.Port.ToString() + capsBase + uploaderPath;
LLSDAssetUploadResponse uploadResponse = new LLSDAssetUploadResponse();
uploadResponse.uploader = uploaderURL;
uploadResponse.state = "upload";
return LLSDHelpers.SerialiseLLSDReply(uploadResponse);
}
catch (Exception e)
{
m_log.ErrorFormat("[UPLOAD BAKED TEXTURE HANDLER]: {0}{1}", e.Message, e.StackTrace);
}
return null;
}
/// <summary>
/// Called when a baked texture has been successfully uploaded by a client.
/// </summary>
/// <param name="assetID"></param>
/// <param name="data"></param>
private void BakedTextureUploaded(UUID assetID, byte[] data)
{
// m_log.DebugFormat("[UPLOAD BAKED TEXTURE HANDLER]: Received baked texture {0}", assetID.ToString());
AssetBase asset;
asset = new AssetBase(assetID, "Baked Texture", (sbyte)AssetType.Texture, m_HostCapsObj.AgentID.ToString());
asset.Data = data;
asset.Temporary = true;
asset.Local = !m_persistBakedTextures; // Local assets aren't persisted, non-local are
m_assetService.Store(asset);
}
}
class BakedTextureUploader
{
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public event Action<UUID, byte[]> OnUpLoad;
private string uploaderPath = String.Empty;
private UUID newAssetID;
private IHttpServer httpListener;
public BakedTextureUploader(string path, IHttpServer httpServer)
{
newAssetID = UUID.Random();
uploaderPath = path;
httpListener = httpServer;
// m_log.InfoFormat("[CAPS] baked texture upload starting for {0}",newAssetID);
}
/// <summary>
/// Handle raw uploaded baked texture data.
/// </summary>
/// <param name="data"></param>
/// <param name="path"></param>
/// <param name="param"></param>
/// <returns></returns>
public string uploaderCaps(byte[] data, string path, string param)
{
Action<UUID, byte[]> handlerUpLoad = OnUpLoad;
// Don't do this asynchronously, otherwise it's possible for the client to send set appearance information
// on another thread which might send out avatar updates before the asset has been put into the asset
// service.
if (handlerUpLoad != null)
handlerUpLoad(newAssetID, data);
string res = String.Empty;
LLSDAssetUploadComplete uploadComplete = new LLSDAssetUploadComplete();
uploadComplete.new_asset = newAssetID.ToString();
uploadComplete.new_inventory_item = UUID.Zero;
uploadComplete.state = "complete";
res = LLSDHelpers.SerialiseLLSDReply(uploadComplete);
httpListener.RemoveStreamHandler("POST", uploaderPath);
// m_log.DebugFormat("[BAKED TEXTURE UPLOADER]: baked texture upload completed for {0}", newAssetID);
return res;
}
}
}

View File

@@ -1,438 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using log4net;
using Nini.Config;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenSim.Framework;
using OpenSim.Framework.Capabilities;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Services.Interfaces;
using Caps = OpenSim.Framework.Capabilities.Caps;
namespace OpenSim.Capabilities.Handlers
{
public class WebFetchInvDescHandler
{
private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IInventoryService m_InventoryService;
private ILibraryService m_LibraryService;
// private object m_fetchLock = new Object();
public WebFetchInvDescHandler(IInventoryService invService, ILibraryService libService)
{
m_InventoryService = invService;
m_LibraryService = libService;
}
public string FetchInventoryDescendentsRequest(string request, string path, string param, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse)
{
// lock (m_fetchLock)
// {
// m_log.DebugFormat("[WEB FETCH INV DESC HANDLER]: Received request {0}", request);
// nasty temporary hack here, the linden client falsely
// identifies the uuid 00000000-0000-0000-0000-000000000000
// as a string which breaks us
//
// correctly mark it as a uuid
//
request = request.Replace("<string>00000000-0000-0000-0000-000000000000</string>", "<uuid>00000000-0000-0000-0000-000000000000</uuid>");
// another hack <integer>1</integer> results in a
// System.ArgumentException: Object type System.Int32 cannot
// be converted to target type: System.Boolean
//
request = request.Replace("<key>fetch_folders</key><integer>0</integer>", "<key>fetch_folders</key><boolean>0</boolean>");
request = request.Replace("<key>fetch_folders</key><integer>1</integer>", "<key>fetch_folders</key><boolean>1</boolean>");
Hashtable hash = new Hashtable();
try
{
hash = (Hashtable)LLSD.LLSDDeserialize(Utils.StringToBytes(request));
}
catch (LLSD.LLSDParseException e)
{
m_log.ErrorFormat("[WEB FETCH INV DESC HANDLER]: Fetch error: {0}{1}" + e.Message, e.StackTrace);
m_log.Error("Request: " + request);
}
ArrayList foldersrequested = (ArrayList)hash["folders"];
string response = "";
for (int i = 0; i < foldersrequested.Count; i++)
{
string inventoryitemstr = "";
Hashtable inventoryhash = (Hashtable)foldersrequested[i];
LLSDFetchInventoryDescendents llsdRequest = new LLSDFetchInventoryDescendents();
try
{
LLSDHelpers.DeserialiseOSDMap(inventoryhash, llsdRequest);
}
catch (Exception e)
{
m_log.Debug("[WEB FETCH INV DESC HANDLER]: caught exception doing OSD deserialize" + e);
}
LLSDInventoryDescendents reply = FetchInventoryReply(llsdRequest);
inventoryitemstr = LLSDHelpers.SerialiseLLSDReply(reply);
inventoryitemstr = inventoryitemstr.Replace("<llsd><map><key>folders</key><array>", "");
inventoryitemstr = inventoryitemstr.Replace("</array></map></llsd>", "");
response += inventoryitemstr;
}
if (response.Length == 0)
{
// Ter-guess: If requests fail a lot, the client seems to stop requesting descendants.
// Therefore, I'm concluding that the client only has so many threads available to do requests
// and when a thread stalls.. is stays stalled.
// Therefore we need to return something valid
response = "<llsd><map><key>folders</key><array /></map></llsd>";
}
else
{
response = "<llsd><map><key>folders</key><array>" + response + "</array></map></llsd>";
}
// m_log.DebugFormat("[WEB FETCH INV DESC HANDLER]: Replying to CAPS fetch inventory request");
//m_log.Debug("[WEB FETCH INV DESC HANDLER] "+response);
return response;
// }
}
/// <summary>
/// Construct an LLSD reply packet to a CAPS inventory request
/// </summary>
/// <param name="invFetch"></param>
/// <returns></returns>
private LLSDInventoryDescendents FetchInventoryReply(LLSDFetchInventoryDescendents invFetch)
{
LLSDInventoryDescendents reply = new LLSDInventoryDescendents();
LLSDInventoryFolderContents contents = new LLSDInventoryFolderContents();
contents.agent_id = invFetch.owner_id;
contents.owner_id = invFetch.owner_id;
contents.folder_id = invFetch.folder_id;
reply.folders.Array.Add(contents);
InventoryCollection inv = new InventoryCollection();
inv.Folders = new List<InventoryFolderBase>();
inv.Items = new List<InventoryItemBase>();
int version = 0;
int descendents = 0;
inv
= Fetch(
invFetch.owner_id, invFetch.folder_id, invFetch.owner_id,
invFetch.fetch_folders, invFetch.fetch_items, invFetch.sort_order, out version, out descendents);
if (inv != null && inv.Folders != null)
{
foreach (InventoryFolderBase invFolder in inv.Folders)
{
contents.categories.Array.Add(ConvertInventoryFolder(invFolder));
}
descendents += inv.Folders.Count;
}
if (inv != null && inv.Items != null)
{
foreach (InventoryItemBase invItem in inv.Items)
{
contents.items.Array.Add(ConvertInventoryItem(invItem));
}
}
contents.descendents = descendents;
contents.version = version;
// m_log.DebugFormat(
// "[WEB FETCH INV DESC HANDLER]: Replying to request for folder {0} (fetch items {1}, fetch folders {2}) with {3} items and {4} folders for agent {5}",
// invFetch.folder_id,
// invFetch.fetch_items,
// invFetch.fetch_folders,
// contents.items.Array.Count,
// contents.categories.Array.Count,
// invFetch.owner_id);
return reply;
}
/// <summary>
/// Handle the caps inventory descendents fetch.
/// </summary>
/// <param name="agentID"></param>
/// <param name="folderID"></param>
/// <param name="ownerID"></param>
/// <param name="fetchFolders"></param>
/// <param name="fetchItems"></param>
/// <param name="sortOrder"></param>
/// <param name="version"></param>
/// <returns>An empty InventoryCollection if the inventory look up failed</returns>
private InventoryCollection Fetch(
UUID agentID, UUID folderID, UUID ownerID,
bool fetchFolders, bool fetchItems, int sortOrder, out int version, out int descendents)
{
// m_log.DebugFormat(
// "[WEB FETCH INV DESC HANDLER]: Fetching folders ({0}), items ({1}) from {2} for agent {3}",
// fetchFolders, fetchItems, folderID, agentID);
// FIXME MAYBE: We're not handling sortOrder!
version = 0;
descendents = 0;
InventoryFolderImpl fold;
if (m_LibraryService != null && m_LibraryService.LibraryRootFolder != null && agentID == m_LibraryService.LibraryRootFolder.Owner)
{
if ((fold = m_LibraryService.LibraryRootFolder.FindFolder(folderID)) != null)
{
InventoryCollection ret = new InventoryCollection();
ret.Folders = new List<InventoryFolderBase>();
ret.Items = fold.RequestListOfItems();
descendents = ret.Folders.Count + ret.Items.Count;
return ret;
}
}
InventoryCollection contents = new InventoryCollection();
if (folderID != UUID.Zero)
{
contents = m_InventoryService.GetFolderContent(agentID, folderID);
InventoryFolderBase containingFolder = new InventoryFolderBase();
containingFolder.ID = folderID;
containingFolder.Owner = agentID;
containingFolder = m_InventoryService.GetFolder(containingFolder);
if (containingFolder != null)
{
// m_log.DebugFormat(
// "[WEB FETCH INV DESC HANDLER]: Retrieved folder {0} {1} for agent id {2}",
// containingFolder.Name, containingFolder.ID, agentID);
version = containingFolder.Version;
if (fetchItems)
{
List<InventoryItemBase> itemsToReturn = contents.Items;
List<InventoryItemBase> originalItems = new List<InventoryItemBase>(itemsToReturn);
// descendents must only include the links, not the linked items we add
descendents = originalItems.Count;
// Add target items for links in this folder before the links themselves.
foreach (InventoryItemBase item in originalItems)
{
if (item.AssetType == (int)AssetType.Link)
{
InventoryItemBase linkedItem = m_InventoryService.GetItem(new InventoryItemBase(item.AssetID));
// Take care of genuinely broken links where the target doesn't exist
// HACK: Also, don't follow up links that just point to other links. In theory this is legitimate,
// but no viewer has been observed to set these up and this is the lazy way of avoiding cycles
// rather than having to keep track of every folder requested in the recursion.
if (linkedItem != null && linkedItem.AssetType != (int)AssetType.Link)
itemsToReturn.Insert(0, linkedItem);
}
}
// Now scan for folder links and insert the items they target and those links at the head of the return data
foreach (InventoryItemBase item in originalItems)
{
if (item.AssetType == (int)AssetType.LinkFolder)
{
InventoryCollection linkedFolderContents = m_InventoryService.GetFolderContent(ownerID, item.AssetID);
List<InventoryItemBase> links = linkedFolderContents.Items;
itemsToReturn.InsertRange(0, links);
foreach (InventoryItemBase link in linkedFolderContents.Items)
{
// Take care of genuinely broken links where the target doesn't exist
// HACK: Also, don't follow up links that just point to other links. In theory this is legitimate,
// but no viewer has been observed to set these up and this is the lazy way of avoiding cycles
// rather than having to keep track of every folder requested in the recursion.
if (link != null)
{
// m_log.DebugFormat(
// "[WEB FETCH INV DESC HANDLER]: Adding item {0} {1} from folder {2} linked from {3}",
// link.Name, (AssetType)link.AssetType, item.AssetID, containingFolder.Name);
InventoryItemBase linkedItem
= m_InventoryService.GetItem(new InventoryItemBase(link.AssetID));
if (linkedItem != null)
itemsToReturn.Insert(0, linkedItem);
}
}
}
}
}
// foreach (InventoryItemBase item in contents.Items)
// {
// m_log.DebugFormat(
// "[WEB FETCH INV DESC HANDLER]: Returning item {0}, type {1}, parent {2} in {3} {4}",
// item.Name, (AssetType)item.AssetType, item.Folder, containingFolder.Name, containingFolder.ID);
// }
// =====
//
// foreach (InventoryItemBase linkedItem in linkedItemsToAdd)
// {
// m_log.DebugFormat(
// "[WEB FETCH INV DESC HANDLER]: Inserted linked item {0} for link in folder {1} for agent {2}",
// linkedItem.Name, folderID, agentID);
//
// contents.Items.Add(linkedItem);
// }
//
// // If the folder requested contains links, then we need to send those folders first, otherwise the links
// // will be broken in the viewer.
// HashSet<UUID> linkedItemFolderIdsToSend = new HashSet<UUID>();
// foreach (InventoryItemBase item in contents.Items)
// {
// if (item.AssetType == (int)AssetType.Link)
// {
// InventoryItemBase linkedItem = m_InventoryService.GetItem(new InventoryItemBase(item.AssetID));
//
// // Take care of genuinely broken links where the target doesn't exist
// // HACK: Also, don't follow up links that just point to other links. In theory this is legitimate,
// // but no viewer has been observed to set these up and this is the lazy way of avoiding cycles
// // rather than having to keep track of every folder requested in the recursion.
// if (linkedItem != null && linkedItem.AssetType != (int)AssetType.Link)
// {
// // We don't need to send the folder if source and destination of the link are in the same
// // folder.
// if (linkedItem.Folder != containingFolder.ID)
// linkedItemFolderIdsToSend.Add(linkedItem.Folder);
// }
// }
// }
//
// foreach (UUID linkedItemFolderId in linkedItemFolderIdsToSend)
// {
// m_log.DebugFormat(
// "[WEB FETCH INV DESC HANDLER]: Recursively fetching folder {0} linked by item in folder {1} for agent {2}",
// linkedItemFolderId, folderID, agentID);
//
// int dummyVersion;
// InventoryCollection linkedCollection
// = Fetch(
// agentID, linkedItemFolderId, ownerID, fetchFolders, fetchItems, sortOrder, out dummyVersion);
//
// InventoryFolderBase linkedFolder = new InventoryFolderBase(linkedItemFolderId);
// linkedFolder.Owner = agentID;
// linkedFolder = m_InventoryService.GetFolder(linkedFolder);
//
//// contents.Folders.AddRange(linkedCollection.Folders);
//
// contents.Folders.Add(linkedFolder);
// contents.Items.AddRange(linkedCollection.Items);
// }
// }
}
}
else
{
// Lost items don't really need a version
version = 1;
}
return contents;
}
/// <summary>
/// Convert an internal inventory folder object into an LLSD object.
/// </summary>
/// <param name="invFolder"></param>
/// <returns></returns>
private LLSDInventoryFolder ConvertInventoryFolder(InventoryFolderBase invFolder)
{
LLSDInventoryFolder llsdFolder = new LLSDInventoryFolder();
llsdFolder.folder_id = invFolder.ID;
llsdFolder.parent_id = invFolder.ParentID;
llsdFolder.name = invFolder.Name;
llsdFolder.type = invFolder.Type;
llsdFolder.preferred_type = -1;
return llsdFolder;
}
/// <summary>
/// Convert an internal inventory item object into an LLSD object.
/// </summary>
/// <param name="invItem"></param>
/// <returns></returns>
private LLSDInventoryItem ConvertInventoryItem(InventoryItemBase invItem)
{
LLSDInventoryItem llsdItem = new LLSDInventoryItem();
llsdItem.asset_id = invItem.AssetID;
llsdItem.created_at = invItem.CreationDate;
llsdItem.desc = invItem.Description;
llsdItem.flags = (int)invItem.Flags;
llsdItem.item_id = invItem.ID;
llsdItem.name = invItem.Name;
llsdItem.parent_id = invItem.Folder;
llsdItem.type = invItem.AssetType;
llsdItem.inv_type = invItem.InvType;
llsdItem.permissions = new LLSDPermissions();
llsdItem.permissions.creator_id = invItem.CreatorIdAsUuid;
llsdItem.permissions.base_mask = (int)invItem.CurrentPermissions;
llsdItem.permissions.everyone_mask = (int)invItem.EveryOnePermissions;
llsdItem.permissions.group_id = invItem.GroupID;
llsdItem.permissions.group_mask = (int)invItem.GroupPermissions;
llsdItem.permissions.is_owner_group = invItem.GroupOwned;
llsdItem.permissions.next_owner_mask = (int)invItem.NextPermissions;
llsdItem.permissions.owner_id = invItem.Owner;
llsdItem.permissions.owner_mask = (int)invItem.CurrentPermissions;
llsdItem.sale_info = new LLSDSaleInfo();
llsdItem.sale_info.sale_price = invItem.SalePrice;
llsdItem.sale_info.sale_type = invItem.SaleType;
return llsdItem;
}
}
}

View File

@@ -1,82 +0,0 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using Nini.Config;
using OpenSim.Server.Base;
using OpenSim.Services.Interfaces;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Server.Handlers.Base;
using OpenMetaverse;
namespace OpenSim.Capabilities.Handlers
{
public class WebFetchInvDescServerConnector : ServiceConnector
{
private IInventoryService m_InventoryService;
private ILibraryService m_LibraryService;
private string m_ConfigName = "CapsService";
public WebFetchInvDescServerConnector(IConfigSource config, IHttpServer server, string configName) :
base(config, server, configName)
{
if (configName != String.Empty)
m_ConfigName = configName;
IConfig serverConfig = config.Configs[m_ConfigName];
if (serverConfig == null)
throw new Exception(String.Format("No section '{0}' in config file", m_ConfigName));
string invService = serverConfig.GetString("InventoryService", String.Empty);
if (invService == String.Empty)
throw new Exception("No InventoryService in config file");
Object[] args = new Object[] { config };
m_InventoryService =
ServerUtils.LoadPlugin<IInventoryService>(invService, args);
if (m_InventoryService == null)
throw new Exception(String.Format("Failed to load InventoryService from {0}; config is {1}", invService, m_ConfigName));
string libService = serverConfig.GetString("LibraryService", String.Empty);
m_LibraryService =
ServerUtils.LoadPlugin<ILibraryService>(libService, args);
WebFetchInvDescHandler webFetchHandler = new WebFetchInvDescHandler(m_InventoryService, m_LibraryService);
IRequestHandler reqHandler
= new RestStreamHandler(
"POST",
"/CAPS/WebFetchInvDesc/" /*+ UUID.Random()*/,
webFetchHandler.FetchInventoryDescendentsRequest,
"WebFetchInvDesc",
null);
server.AddStreamHandler(reqHandler);
}
}
}

View File

@@ -26,94 +26,111 @@
*/
using System;
using System.Collections.Generic;
using System.Net;
using System.Reflection;
using System.Text;
using log4net;
using Mono.Addins;
using Nini.Config;
using OpenMetaverse;
using OpenSim.Region.ClientStack;
using OpenSim.Region.ClientStack.LindenUDP;
using OpenSim.Framework;
using OpenSim.Framework.Console;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Region.Framework.Interfaces;
namespace OpenSim.Region.OptionalModules.Framework.Monitoring
namespace OpenSim.Client.Linden
{
/// <summary>
/// An experimental module to return data on services used by the simulator.
/// Linden UDP Stack Region Module
/// </summary>
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "MonitorServicesModule")]
public class MonitorServicesModule : ISharedRegionModule
public class LLClientStackModule : INonSharedRegionModule
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
#region IRegionModule Members
/// <summary>
/// Scene that contains the region's data
/// </summary>
protected Scene m_scene;
protected bool m_createClientStack = false;
protected IClientNetworkServer m_clientServer;
protected ClientStackManager m_clientStackManager;
protected IConfigSource m_source;
protected string m_clientStackDll = "OpenSim.Region.ClientStack.LindenUDP.dll";
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public string Name { get { return "Services Health Monitoring Module"; } }
public Type ReplaceableInterface { get { return null; } }
public void Initialise(IConfigSource source)
{
}
public void PostInitialise()
{
}
public void Close()
{
}
public void AddRegion(Scene scene)
{
if (m_scene == null)
{
m_scene = scene;
m_source = source;
// m_scene.AddCommand(this, "monitor services",
// "monitor services",
// "Returns the status of services used by the simulator. Experimental.",
// HandleMonitorServices);
IConfig startupConfig = m_source.Configs["Startup"];
if (startupConfig != null)
{
m_clientStackDll = startupConfig.GetString("clientstack_plugin", "OpenSim.Region.ClientStack.LindenUDP.dll");
}
}
}
public void AddRegion(Scene scene)
{
}
public void RemoveRegion(Scene scene)
{
}
}
public void RegionLoaded(Scene scene)
{
}
protected void HandleMonitorServices(string module, string[] args)
{
MainConsole.Instance.Output(GenerateServicesReport());
}
protected string GenerateServicesReport()
{
StringBuilder sb = new StringBuilder();
sb.Append("This is an experimental module. Please don't rely on these results\n");
sb.Append("Asset service: ");
try
if (m_scene == null)
{
CheckAssetService();
sb.Append("OK");
}
catch (Exception e)
{
sb.AppendFormat("FAIL ({0})", e.Message);
m_scene = scene;
}
return sb.ToString();
if ((m_scene != null) && (m_createClientStack))
{
m_log.Info("[LLClientStackModule] Starting up LLClientStack.");
IPEndPoint endPoint = m_scene.RegionInfo.InternalEndPoint;
uint port = (uint)endPoint.Port;
m_clientStackManager = new ClientStackManager(m_clientStackDll);
m_clientServer
= m_clientStackManager.CreateServer(endPoint.Address,
ref port, m_scene.RegionInfo.ProxyOffset, m_scene.RegionInfo.m_allow_alternate_ports, m_source,
m_scene.AuthenticateHandler);
m_clientServer.AddScene(m_scene);
m_clientServer.Start();
}
}
protected void CheckAssetService()
public void Close()
{
// Try to fetch an asset that will not exist (and hence avoid hitting cache)
m_scene.AssetService.Get(UUID.Random().ToString());
}
public Type ReplaceableInterface
{
get { return null; }
}
public string Name
{
get { return "LLClientStackModule"; }
}
public bool IsSharedModule
{
get { return false; }
}
#endregion
}
}
}

View File

@@ -0,0 +1,13 @@
<Addin id="OpenSim.Client.Linden.LindenModules" version="0.2">
<Runtime>
<Import assembly="OpenSim.Client.Linden.dll"/>
</Runtime>
<Dependencies>
<Addin id="OpenSim" version="0.5" />
</Dependencies>
<Extension path = "/OpenSim/RegionModules">
<RegionModule id="LLClientStackModule" type="OpenSim.Client.Linden.LLClientStackModule" />
</Extension>
</Addin>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,131 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
using System.Timers;
using log4net;
using MXP;
using Nini.Config;
using OpenMetaverse;
using OpenSim.Client.MXP.PacketHandler;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Client.MXP
{
/**
* MXP Client Module which adds MXP support to client / region communication.
*/
public class MXPModule : IRegionModule
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private MXPPacketServer m_server;
private IConfigSource m_config;
private int m_port = 1253;
private Timer m_ticker;
private readonly Dictionary<UUID, Scene> m_scenes = new Dictionary<UUID, Scene>();
private bool m_shutdown;
public void Initialise(Scene scene, IConfigSource source)
{
if (!m_scenes.ContainsKey(scene.RegionInfo.RegionID))
m_scenes.Add(scene.RegionInfo.RegionID, scene);
m_config = source;
}
public void PostInitialise()
{
if (m_config.Configs["MXP"] != null)
{
IConfig con = m_config.Configs["MXP"];
if (!con.GetBoolean("Enabled", false))
return;
m_port = con.GetInt("Port", m_port);
m_server = new MXPPacketServer(m_port, m_scenes,m_config.Configs["StandAlone"].GetBoolean("accounts_authenticate",true));
m_ticker = new Timer(100);
m_ticker.AutoReset = false;
m_ticker.Elapsed += ticker_Elapsed;
lock (m_ticker)
m_ticker.Start();
m_log.Info("[MXP ClientStack] MXP Enabled and Listening");
}
}
void ticker_Elapsed(object sender, ElapsedEventArgs e)
{
try
{
m_server.Process();
}
catch (Exception ex)
{
m_log.Error("[MXP ClientStack]: Unhandled exception in process loop: " + ex.ToString() + " :" + ex.StackTrace.ToString());
}
if (!m_shutdown)
{
lock (m_ticker)
m_ticker.Start();
}
}
public void Close()
{
m_shutdown = true;
if (m_ticker != null)
{
lock (m_ticker)
m_ticker.Stop();
}
}
public string Name
{
get { return "MXP ClientStack Module"; }
}
public bool IsSharedModule
{
get { return true; }
}
}
}

View File

@@ -25,25 +25,18 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using OpenMetaverse;
using System;
using System.Collections.Generic;
using System.Linq;
using pCampBot.Interfaces;
using System.Text;
using OpenMetaverse;
namespace pCampBot
namespace OpenSim.Client.MXP
{
public class AbstractBehaviour : IBehaviour
public static class MXPUtil
{
public string Name { get; protected set; }
public Bot Bot { get; protected set; }
public virtual void Action() {}
public virtual void Initialize(Bot bot)
public static string GenerateMXPURL(string server, int port, UUID bubbleID, Vector3 location)
{
Bot = bot;
return string.Format("mxp://{0}:{1}/{2}/{3}", server, port, bubbleID.Guid, location);
}
}
}

View File

@@ -0,0 +1,564 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/* This file borrows heavily from MXPServer.cs - the reference MXPServer
* See http://www.bubblecloud.org for a copy of the original file and
* implementation details. */
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Threading;
using log4net;
using MXP;
using MXP.Messages;
using OpenMetaverse;
using OpenSim.Client.MXP.ClientStack;
using OpenSim.Framework;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Framework.Communications;
using OpenSim.Services.Interfaces;
using System.Security.Cryptography;
namespace OpenSim.Client.MXP.PacketHandler
{
public class MXPPacketServer
{
internal static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
#region Fields
private readonly List<MXPClientView> m_clients = new List<MXPClientView>();
private readonly Dictionary<UUID, Scene> m_scenes;
private readonly Transmitter m_transmitter;
// private readonly Thread m_clientThread;
private readonly IList<Session> m_sessions = new List<Session>();
private readonly IList<Session> m_sessionsToClient = new List<Session>();
private readonly IList<MXPClientView> m_sessionsToRemove = new List<MXPClientView>();
private readonly int m_port;
private readonly bool m_accountsAuthenticate;
private readonly String m_programName;
private readonly byte m_programMajorVersion;
private readonly byte m_programMinorVersion;
#endregion
#region Constructors
public MXPPacketServer(int port, Dictionary<UUID, Scene> scenes, bool accountsAuthenticate)
{
m_port = port;
m_accountsAuthenticate = accountsAuthenticate;
m_scenes = scenes;
m_programMinorVersion = 63;
m_programMajorVersion = 0;
m_programName = "OpenSimulator";
m_transmitter = new Transmitter(port);
StartListener();
}
public void StartListener()
{
m_log.Info("[MXP ClientStack] Transmitter starting on UDP server port: " + m_port);
m_transmitter.Startup();
m_log.Info("[MXP ClientStack] Transmitter started. MXP version: "+MxpConstants.ProtocolMajorVersion+"."+MxpConstants.ProtocolMinorVersion+" Source Revision: "+MxpConstants.ProtocolSourceRevision);
}
#endregion
#region Properties
/// <summary>
/// Number of sessions pending. (Process() accepts pending sessions).
/// </summary>
public int PendingSessionCount
{
get
{
return m_transmitter.PendingSessionCount;
}
}
/// <summary>
/// Number of connected sessions.
/// </summary>
public int SessionCount
{
get
{
return m_sessions.Count;
}
}
/// <summary>
/// Property reflecting whether client transmitter threads are alive.
/// </summary>
public bool IsTransmitterAlive
{
get
{
return m_transmitter != null && m_transmitter.IsAlive;
}
}
/// <summary>
/// Number of packets sent.
/// </summary>
public ulong PacketsSent
{
get
{
return m_transmitter != null ? m_transmitter.PacketsSent : 0;
}
}
/// <summary>
/// Number of packets received.
/// </summary>
public ulong PacketsReceived
{
get
{
return m_transmitter != null ? m_transmitter.PacketsReceived : 0;
}
}
/// <summary>
/// Bytes client has received so far.
/// </summary>
public ulong BytesReceived
{
get
{
return m_transmitter != null ? m_transmitter.BytesReceived : 0;
}
}
/// <summary>
/// Bytes client has sent so far.
/// </summary>
public ulong BytesSent
{
get
{
return m_transmitter != null ? m_transmitter.BytesSent : 0;
}
}
/// <summary>
/// Number of bytes received (bytes per second) during past second.
/// </summary>
public double ReceiveRate
{
get
{
return m_transmitter != null ? m_transmitter.ReceiveRate : 0;
}
}
/// <summary>
/// Number of bytes sent (bytes per second) during past second.
/// </summary>
public double SendRate
{
get
{
return m_transmitter != null ? m_transmitter.SendRate : 0;
}
}
#endregion
#region Session Management
public void Disconnect(Session session)
{
if (session.IsConnected)
{
Message message = MessageFactory.Current.ReserveMessage(typeof(LeaveRequestMessage));
session.Send(message);
MessageFactory.Current.ReleaseMessage(message);
}
else
{
throw new Exception("Not connected.");
}
}
#endregion
#region Processing
public void Process()
{
ProcessMessages();
Clean();
}
public void Clean()
{
foreach (MXPClientView clientView in m_clients)
{
if (clientView.Session.SessionState == SessionState.Disconnected)
{
m_sessionsToRemove.Add(clientView);
}
}
foreach (MXPClientView clientView in m_sessionsToRemove)
{
clientView.Scene.RemoveClient(clientView.AgentId);
clientView.OnClean();
m_clients.Remove(clientView);
m_sessions.Remove(clientView.Session);
}
m_sessionsToRemove.Clear();
}
public void ProcessMessages()
{
if (m_transmitter.PendingSessionCount > 0)
{
Session tmp = m_transmitter.AcceptPendingSession();
m_sessions.Add(tmp);
m_sessionsToClient.Add(tmp);
}
List<Session> tmpRemove = new List<Session>();
foreach (Session session in m_sessionsToClient)
{
while (session.AvailableMessages > 0)
{
Message message = session.Receive();
if (message.GetType() == typeof (JoinRequestMessage))
{
JoinRequestMessage joinRequestMessage = (JoinRequestMessage) message;
m_log.Info("[MXP ClientStack]: Session join request: " + session.SessionId + " (" +
(session.IsIncoming ? "from" : "to") + " " + session.RemoteEndPoint.Address + ":" +
session.RemoteEndPoint.Port + ")");
try
{
if (joinRequestMessage.BubbleId == Guid.Empty)
{
foreach (Scene scene in m_scenes.Values)
{
if (scene.RegionInfo.RegionName == joinRequestMessage.BubbleName)
{
m_log.Info("[MXP ClientStack]: Resolved region by name: " + joinRequestMessage.BubbleName + " (" + scene.RegionInfo.RegionID + ")");
joinRequestMessage.BubbleId = scene.RegionInfo.RegionID.Guid;
}
}
}
if (joinRequestMessage.BubbleId == Guid.Empty)
{
m_log.Warn("[MXP ClientStack]: Failed to resolve region by name: " + joinRequestMessage.BubbleName);
}
UUID sceneId = new UUID(joinRequestMessage.BubbleId);
bool regionExists = true;
if (!m_scenes.ContainsKey(sceneId))
{
m_log.Info("[MXP ClientStack]: No such region: " + sceneId);
regionExists = false;
}
UUID userId = UUID.Zero;
UserAccount account = null;
bool authorized = regionExists ? AuthoriseUser(joinRequestMessage.ParticipantName,
joinRequestMessage.ParticipantPassphrase,
new UUID(joinRequestMessage.BubbleId), out account)
: false;
if (authorized)
{
Scene scene = m_scenes[sceneId];
UUID mxpSessionID = UUID.Random();
string reason;
m_log.Debug("[MXP ClientStack]: Session join request success: " + session.SessionId + " (" +
(session.IsIncoming ? "from" : "to") + " " + session.RemoteEndPoint.Address + ":" +
session.RemoteEndPoint.Port + ")");
m_log.Debug("[MXP ClientStack]: Attaching UserAgent to UserProfile...");
UUID secureSession = UUID.Zero;
AttachUserAgentToUserProfile(account, session, mxpSessionID, sceneId, out secureSession);
m_log.Debug("[MXP ClientStack]: Attached UserAgent to UserProfile.");
m_log.Debug("[MXP ClientStack]: Preparing Scene to Connection...");
if (!PrepareSceneForConnection(mxpSessionID, secureSession, sceneId, account, out reason))
{
m_log.DebugFormat("[MXP ClientStack]: Scene refused connection: {0}", reason);
DeclineConnection(session, joinRequestMessage);
tmpRemove.Add(session);
continue;
}
m_log.Debug("[MXP ClientStack]: Prepared Scene to Connection.");
m_log.Debug("[MXP ClientStack]: Accepting connection...");
AcceptConnection(session, joinRequestMessage, mxpSessionID, userId);
m_log.Info("[MXP ClientStack]: Accepted connection.");
m_log.Debug("[MXP ClientStack]: Creating ClientView....");
MXPClientView client = new MXPClientView(session, mxpSessionID, userId, scene, account.FirstName, account.LastName);
m_clients.Add(client);
m_log.Debug("[MXP ClientStack]: Created ClientView.");
client.MXPSendSynchronizationBegin(m_scenes[new UUID(joinRequestMessage.BubbleId)].SceneContents.GetTotalObjectsCount());
m_log.Debug("[MXP ClientStack]: Starting ClientView...");
try
{
client.Start();
m_log.Debug("[MXP ClientStack]: Started ClientView.");
}
catch (Exception e)
{
m_log.Error(e);
}
m_log.Debug("[MXP ClientStack]: Connected");
}
else
{
m_log.Info("[MXP ClientStack]: Session join request failure: " + session.SessionId + " (" +
(session.IsIncoming ? "from" : "to") + " " + session.RemoteEndPoint.Address + ":" +
session.RemoteEndPoint.Port + ")");
DeclineConnection(session, joinRequestMessage);
}
}
catch (Exception e)
{
m_log.Error("[MXP ClientStack]: Session join request failure: " + session.SessionId + " (" +
(session.IsIncoming ? "from" : "to") + " " + session.RemoteEndPoint.Address + ":" +
session.RemoteEndPoint.Port + "): "+e.ToString()+" :"+e.StackTrace.ToString());
}
tmpRemove.Add(session);
}
}
}
foreach (Session session in tmpRemove)
{
m_sessionsToClient.Remove(session);
}
foreach (MXPClientView clientView in m_clients)
{
int messagesProcessedCount = 0;
Session session = clientView.Session;
while (session.AvailableMessages > 0)
{
Message message = session.Receive();
if (message.GetType() == typeof(LeaveRequestMessage))
{
LeaveResponseMessage leaveResponseMessage = (LeaveResponseMessage)MessageFactory.Current.ReserveMessage(
typeof(LeaveResponseMessage));
m_log.Debug("[MXP ClientStack]: Session leave request: " + session.SessionId + " (" + (session.IsIncoming ? "from" : "to") + " " + session.RemoteEndPoint.Address + ":" + session.RemoteEndPoint.Port + ")");
leaveResponseMessage.RequestMessageId = message.MessageId;
leaveResponseMessage.FailureCode = 0;
session.Send(leaveResponseMessage);
if (session.SessionState != SessionState.Disconnected)
{
session.SetStateDisconnected();
}
m_log.Debug("[MXP ClientStack]: Removing Client from Scene");
//clientView.Scene.RemoveClient(clientView.AgentId);
}
if (message.GetType() == typeof(LeaveResponseMessage))
{
LeaveResponseMessage leaveResponseMessage = (LeaveResponseMessage)message;
m_log.Debug("[MXP ClientStack]: Session leave response: " + session.SessionId + " (" + (session.IsIncoming ? "from" : "to") + " " + session.RemoteEndPoint.Address + ":" + session.RemoteEndPoint.Port + ")");
if (leaveResponseMessage.FailureCode == 0)
{
session.SetStateDisconnected();
}
m_log.Debug("[MXP ClientStack]: Removing Client from Scene");
//clientView.Scene.RemoveClient(clientView.AgentId);
}
else
{
clientView.MXPPRocessMessage(message);
}
MessageFactory.Current.ReleaseMessage(message);
messagesProcessedCount++;
if (messagesProcessedCount > 1000)
{
break;
}
}
}
}
private void AcceptConnection(Session session, JoinRequestMessage joinRequestMessage, UUID mxpSessionID, UUID userId)
{
JoinResponseMessage joinResponseMessage = (JoinResponseMessage)MessageFactory.Current.ReserveMessage(
typeof(JoinResponseMessage));
joinResponseMessage.RequestMessageId = joinRequestMessage.MessageId;
joinResponseMessage.FailureCode = MxpResponseCodes.SUCCESS;
joinResponseMessage.BubbleId = joinRequestMessage.BubbleId;
joinResponseMessage.ParticipantId = userId.Guid;
joinResponseMessage.AvatarId = userId.Guid;
joinResponseMessage.BubbleAssetCacheUrl = "http://" +
NetworkUtil.GetHostFor(session.RemoteEndPoint.Address,
m_scenes[
new UUID(joinRequestMessage.BubbleId)].
RegionInfo.
ExternalHostName) + ":" +
m_scenes[new UUID(joinRequestMessage.BubbleId)].RegionInfo.
HttpPort + "/assets/";
joinResponseMessage.BubbleName = m_scenes[new UUID(joinRequestMessage.BubbleId)].RegionInfo.RegionName;
joinResponseMessage.BubbleRange = 128;
joinResponseMessage.BubblePerceptionRange = 128 + 256;
joinResponseMessage.BubbleRealTime = 0;
joinResponseMessage.ProgramName = m_programName;
joinResponseMessage.ProgramMajorVersion = m_programMajorVersion;
joinResponseMessage.ProgramMinorVersion = m_programMinorVersion;
joinResponseMessage.ProtocolMajorVersion = MxpConstants.ProtocolMajorVersion;
joinResponseMessage.ProtocolMinorVersion = MxpConstants.ProtocolMinorVersion;
joinResponseMessage.ProtocolSourceRevision = MxpConstants.ProtocolSourceRevision;
session.Send(joinResponseMessage);
session.SetStateConnected();
}
private void DeclineConnection(Session session, Message joinRequestMessage)
{
JoinResponseMessage joinResponseMessage = (JoinResponseMessage)MessageFactory.Current.ReserveMessage(typeof(JoinResponseMessage));
joinResponseMessage.RequestMessageId = joinRequestMessage.MessageId;
joinResponseMessage.FailureCode = MxpResponseCodes.UNAUTHORIZED_OPERATION;
joinResponseMessage.ProgramName = m_programName;
joinResponseMessage.ProgramMajorVersion = m_programMajorVersion;
joinResponseMessage.ProgramMinorVersion = m_programMinorVersion;
joinResponseMessage.ProtocolMajorVersion = MxpConstants.ProtocolMajorVersion;
joinResponseMessage.ProtocolMinorVersion = MxpConstants.ProtocolMinorVersion;
joinResponseMessage.ProtocolSourceRevision = MxpConstants.ProtocolSourceRevision;
session.Send(joinResponseMessage);
session.SetStateDisconnected();
}
public bool AuthoriseUser(string participantName, string password, UUID sceneId, out UserAccount account)
{
UUID userId = UUID.Zero;
string firstName = "";
string lastName = "";
account = null;
string[] nameParts = participantName.Split(' ');
if (nameParts.Length != 2)
{
m_log.Error("[MXP ClientStack]: Login failed as user name is not formed of first and last name separated by space: " + participantName);
return false;
}
firstName = nameParts[0];
lastName = nameParts[1];
account = m_scenes[sceneId].UserAccountService.GetUserAccount(m_scenes[sceneId].RegionInfo.ScopeID, firstName, lastName);
if (account != null)
return (m_scenes[sceneId].AuthenticationService.Authenticate(account.PrincipalID, password, 1) != string.Empty);
return false;
}
private void AttachUserAgentToUserProfile(UserAccount account, Session session, UUID sessionId, UUID sceneId, out UUID secureSessionId)
{
secureSessionId = UUID.Random();
Scene scene = m_scenes[sceneId];
scene.PresenceService.LoginAgent(account.PrincipalID.ToString(), sessionId, secureSessionId);
}
private bool PrepareSceneForConnection(UUID sessionId, UUID secureSessionId, UUID sceneId, UserAccount account, out string reason)
{
Scene scene = m_scenes[sceneId];
AgentCircuitData agent = new AgentCircuitData();
agent.AgentID = account.PrincipalID;
agent.firstname = account.FirstName;
agent.lastname = account.LastName;
agent.SessionID = sessionId;
agent.SecureSessionID = secureSessionId;
agent.circuitcode = sessionId.CRC();
agent.BaseFolder = UUID.Zero;
agent.InventoryFolder = UUID.Zero;
agent.startpos = new Vector3(0, 0, 0); // TODO Fill in region start position
agent.CapsPath = "http://localhost/";
AvatarData avatar = scene.AvatarService.GetAvatar(account.PrincipalID);
if (avatar != null)
agent.Appearance = avatar.ToAvatarAppearance(account.PrincipalID); //userService.GetUserAppearance(userProfile.ID);
if (agent.Appearance == null)
{
m_log.WarnFormat("[INTER]: Appearance not found for {0} {1}. Creating default.", agent.firstname, agent.lastname);
agent.Appearance = new AvatarAppearance();
}
return scene.NewUserConnection(agent, 0, out reason);
}
public void PrintDebugInformation()
{
m_log.Info("[MXP ClientStack]: Statistics report");
m_log.Info("Pending Sessions: " + PendingSessionCount);
m_log.Info("Sessions: " + SessionCount + " (Clients: " + m_clients.Count + " )");
m_log.Info("Transmitter Alive?: " + IsTransmitterAlive);
m_log.Info("Packets Sent/Received: " + PacketsSent + " / " + PacketsReceived);
m_log.Info("Bytes Sent/Received: " + BytesSent + " / " + BytesReceived);
m_log.Info("Send/Receive Rate (bps): " + SendRate + " / " + ReceiveRate);
}
#endregion
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,630 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
using pb = global::Google.ProtocolBuffers;
using pbc = global::Google.ProtocolBuffers.Collections;
using pbd = global::Google.ProtocolBuffers.Descriptors;
using scg = global::System.Collections.Generic;
namespace Sirikata.Protocol._PBJ_Internal {
public static partial class MessageHeader {
#region Extension registration
public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
}
#endregion
#region Static variables
internal static pbd::MessageDescriptor internal__static_Sirikata_Protocol__PBJ_Internal_Header__Descriptor;
internal static pb::FieldAccess.FieldAccessorTable<global::Sirikata.Protocol._PBJ_Internal.Header, global::Sirikata.Protocol._PBJ_Internal.Header.Builder> internal__static_Sirikata_Protocol__PBJ_Internal_Header__FieldAccessorTable;
#endregion
#region Descriptor
public static pbd::FileDescriptor Descriptor {
get { return descriptor; }
}
private static pbd::FileDescriptor descriptor;
static MessageHeader() {
byte[] descriptorData = global::System.Convert.FromBase64String(
"ChNNZXNzYWdlSGVhZGVyLnByb3RvEh9TaXJpa2F0YS5Qcm90b2NvbC5fUEJK" +
"X0ludGVybmFsIooDCgZIZWFkZXISFQoNc291cmNlX29iamVjdBgBIAEoDBIT" +
"Cgtzb3VyY2VfcG9ydBgDIAEoDRIVCgxzb3VyY2Vfc3BhY2UYgAwgASgMEhoK" +
"EmRlc3RpbmF0aW9uX29iamVjdBgCIAEoDBIYChBkZXN0aW5hdGlvbl9wb3J0" +
"GAQgASgNEhoKEWRlc3RpbmF0aW9uX3NwYWNlGIEMIAEoDBIKCgJpZBgHIAEo" +
"AxIQCghyZXBseV9pZBgIIAEoAxJMCg1yZXR1cm5fc3RhdHVzGIAOIAEoDjI0" +
"LlNpcmlrYXRhLlByb3RvY29sLl9QQkpfSW50ZXJuYWwuSGVhZGVyLlJldHVy" +
"blN0YXR1cyJ/CgxSZXR1cm5TdGF0dXMSCwoHU1VDQ0VTUxAAEhMKD05FVFdP" +
"UktfRkFJTFVSRRABEhMKD1RJTUVPVVRfRkFJTFVSRRADEhIKDlBST1RPQ09M" +
"X0VSUk9SEAQSEAoMUE9SVF9GQUlMVVJFEAUSEgoOVU5LTk9XTl9PQkpFQ1QQ" +
"Bg==");
pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
descriptor = root;
internal__static_Sirikata_Protocol__PBJ_Internal_Header__Descriptor = Descriptor.MessageTypes[0];
internal__static_Sirikata_Protocol__PBJ_Internal_Header__FieldAccessorTable =
new pb::FieldAccess.FieldAccessorTable<global::Sirikata.Protocol._PBJ_Internal.Header, global::Sirikata.Protocol._PBJ_Internal.Header.Builder>(internal__static_Sirikata_Protocol__PBJ_Internal_Header__Descriptor,
new string[] { "SourceObject", "SourcePort", "SourceSpace", "DestinationObject", "DestinationPort", "DestinationSpace", "Id", "ReplyId", "ReturnStatus", });
return null;
};
pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
new pbd::FileDescriptor[] {
}, assigner);
}
#endregion
}
#region Messages
public sealed partial class Header : pb::GeneratedMessage<Header, Header.Builder> {
private static readonly Header defaultInstance = new Builder().BuildPartial();
public static Header DefaultInstance {
get { return defaultInstance; }
}
public override Header DefaultInstanceForType {
get { return defaultInstance; }
}
protected override Header ThisMessage {
get { return this; }
}
public static pbd::MessageDescriptor Descriptor {
get { return global::Sirikata.Protocol._PBJ_Internal.MessageHeader.internal__static_Sirikata_Protocol__PBJ_Internal_Header__Descriptor; }
}
protected override pb::FieldAccess.FieldAccessorTable<Header, Header.Builder> InternalFieldAccessors {
get { return global::Sirikata.Protocol._PBJ_Internal.MessageHeader.internal__static_Sirikata_Protocol__PBJ_Internal_Header__FieldAccessorTable; }
}
#region Nested types
public static class Types {
public enum ReturnStatus {
SUCCESS = 0,
NETWORK_FAILURE = 1,
TIMEOUT_FAILURE = 3,
PROTOCOL_ERROR = 4,
PORT_FAILURE = 5,
UNKNOWN_OBJECT = 6,
}
}
#endregion
public const int SourceObjectFieldNumber = 1;
private bool hasSourceObject;
private pb::ByteString sourceObject_ = pb::ByteString.Empty;
public bool HasSourceObject {
get { return hasSourceObject; }
}
public pb::ByteString SourceObject {
get { return sourceObject_; }
}
public const int SourcePortFieldNumber = 3;
private bool hasSourcePort;
private uint sourcePort_ = 0;
public bool HasSourcePort {
get { return hasSourcePort; }
}
[global::System.CLSCompliant(false)]
public uint SourcePort {
get { return sourcePort_; }
}
public const int SourceSpaceFieldNumber = 1536;
private bool hasSourceSpace;
private pb::ByteString sourceSpace_ = pb::ByteString.Empty;
public bool HasSourceSpace {
get { return hasSourceSpace; }
}
public pb::ByteString SourceSpace {
get { return sourceSpace_; }
}
public const int DestinationObjectFieldNumber = 2;
private bool hasDestinationObject;
private pb::ByteString destinationObject_ = pb::ByteString.Empty;
public bool HasDestinationObject {
get { return hasDestinationObject; }
}
public pb::ByteString DestinationObject {
get { return destinationObject_; }
}
public const int DestinationPortFieldNumber = 4;
private bool hasDestinationPort;
private uint destinationPort_ = 0;
public bool HasDestinationPort {
get { return hasDestinationPort; }
}
[global::System.CLSCompliant(false)]
public uint DestinationPort {
get { return destinationPort_; }
}
public const int DestinationSpaceFieldNumber = 1537;
private bool hasDestinationSpace;
private pb::ByteString destinationSpace_ = pb::ByteString.Empty;
public bool HasDestinationSpace {
get { return hasDestinationSpace; }
}
public pb::ByteString DestinationSpace {
get { return destinationSpace_; }
}
public const int IdFieldNumber = 7;
private bool hasId;
private long id_ = 0L;
public bool HasId {
get { return hasId; }
}
public long Id {
get { return id_; }
}
public const int ReplyIdFieldNumber = 8;
private bool hasReplyId;
private long replyId_ = 0L;
public bool HasReplyId {
get { return hasReplyId; }
}
public long ReplyId {
get { return replyId_; }
}
public const int ReturnStatusFieldNumber = 1792;
private bool hasReturnStatus;
private global::Sirikata.Protocol._PBJ_Internal.Header.Types.ReturnStatus returnStatus_ = global::Sirikata.Protocol._PBJ_Internal.Header.Types.ReturnStatus.SUCCESS;
public bool HasReturnStatus {
get { return hasReturnStatus; }
}
public global::Sirikata.Protocol._PBJ_Internal.Header.Types.ReturnStatus ReturnStatus {
get { return returnStatus_; }
}
public override bool IsInitialized {
get {
return true;
}
}
public override void WriteTo(pb::CodedOutputStream output) {
if (HasSourceObject) {
output.WriteBytes(1, SourceObject);
}
if (HasDestinationObject) {
output.WriteBytes(2, DestinationObject);
}
if (HasSourcePort) {
output.WriteUInt32(3, SourcePort);
}
if (HasDestinationPort) {
output.WriteUInt32(4, DestinationPort);
}
if (HasId) {
output.WriteInt64(7, Id);
}
if (HasReplyId) {
output.WriteInt64(8, ReplyId);
}
if (HasSourceSpace) {
output.WriteBytes(1536, SourceSpace);
}
if (HasDestinationSpace) {
output.WriteBytes(1537, DestinationSpace);
}
if (HasReturnStatus) {
output.WriteEnum(1792, (int) ReturnStatus);
}
UnknownFields.WriteTo(output);
}
private int memoizedSerializedSize = -1;
public override int SerializedSize {
get {
int size = memoizedSerializedSize;
if (size != -1) return size;
size = 0;
if (HasSourceObject) {
size += pb::CodedOutputStream.ComputeBytesSize(1, SourceObject);
}
if (HasSourcePort) {
size += pb::CodedOutputStream.ComputeUInt32Size(3, SourcePort);
}
if (HasSourceSpace) {
size += pb::CodedOutputStream.ComputeBytesSize(1536, SourceSpace);
}
if (HasDestinationObject) {
size += pb::CodedOutputStream.ComputeBytesSize(2, DestinationObject);
}
if (HasDestinationPort) {
size += pb::CodedOutputStream.ComputeUInt32Size(4, DestinationPort);
}
if (HasDestinationSpace) {
size += pb::CodedOutputStream.ComputeBytesSize(1537, DestinationSpace);
}
if (HasId) {
size += pb::CodedOutputStream.ComputeInt64Size(7, Id);
}
if (HasReplyId) {
size += pb::CodedOutputStream.ComputeInt64Size(8, ReplyId);
}
if (HasReturnStatus) {
size += pb::CodedOutputStream.ComputeEnumSize(1792, (int) ReturnStatus);
}
size += UnknownFields.SerializedSize;
memoizedSerializedSize = size;
return size;
}
}
public static Header ParseFrom(pb::ByteString data) {
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
}
public static Header ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
}
public static Header ParseFrom(byte[] data) {
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
}
public static Header ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
}
public static Header ParseFrom(global::System.IO.Stream input) {
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
}
public static Header ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
}
public static Header ParseDelimitedFrom(global::System.IO.Stream input) {
return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
}
public static Header ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
}
public static Header ParseFrom(pb::CodedInputStream input) {
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
}
public static Header ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
}
public static Builder CreateBuilder() { return new Builder(); }
public override Builder ToBuilder() { return CreateBuilder(this); }
public override Builder CreateBuilderForType() { return new Builder(); }
public static Builder CreateBuilder(Header prototype) {
return (Builder) new Builder().MergeFrom(prototype);
}
public sealed partial class Builder : pb::GeneratedBuilder<Header, Builder> {
protected override Builder ThisBuilder {
get { return this; }
}
public Builder() {}
Header result = new Header();
protected override Header MessageBeingBuilt {
get { return result; }
}
public override Builder Clear() {
result = new Header();
return this;
}
public override Builder Clone() {
return new Builder().MergeFrom(result);
}
public override pbd::MessageDescriptor DescriptorForType {
get { return global::Sirikata.Protocol._PBJ_Internal.Header.Descriptor; }
}
public override Header DefaultInstanceForType {
get { return global::Sirikata.Protocol._PBJ_Internal.Header.DefaultInstance; }
}
public override Header BuildPartial() {
if (result == null) {
throw new global::System.InvalidOperationException("build() has already been called on this Builder");
}
Header returnMe = result;
result = null;
return returnMe;
}
public override Builder MergeFrom(pb::IMessage other) {
if (other is Header) {
return MergeFrom((Header) other);
} else {
base.MergeFrom(other);
return this;
}
}
public override Builder MergeFrom(Header other) {
if (other == global::Sirikata.Protocol._PBJ_Internal.Header.DefaultInstance) return this;
if (other.HasSourceObject) {
SourceObject = other.SourceObject;
}
if (other.HasSourcePort) {
SourcePort = other.SourcePort;
}
if (other.HasSourceSpace) {
SourceSpace = other.SourceSpace;
}
if (other.HasDestinationObject) {
DestinationObject = other.DestinationObject;
}
if (other.HasDestinationPort) {
DestinationPort = other.DestinationPort;
}
if (other.HasDestinationSpace) {
DestinationSpace = other.DestinationSpace;
}
if (other.HasId) {
Id = other.Id;
}
if (other.HasReplyId) {
ReplyId = other.ReplyId;
}
if (other.HasReturnStatus) {
ReturnStatus = other.ReturnStatus;
}
this.MergeUnknownFields(other.UnknownFields);
return this;
}
public override Builder MergeFrom(pb::CodedInputStream input) {
return MergeFrom(input, pb::ExtensionRegistry.Empty);
}
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null;
while (true) {
uint tag = input.ReadTag();
switch (tag) {
case 0: {
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
}
default: {
if (pb::WireFormat.IsEndGroupTag(tag)) {
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
}
if (unknownFields == null) {
unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
}
ParseUnknownField(input, unknownFields, extensionRegistry, tag);
break;
}
case 10: {
SourceObject = input.ReadBytes();
break;
}
case 18: {
DestinationObject = input.ReadBytes();
break;
}
case 24: {
SourcePort = input.ReadUInt32();
break;
}
case 32: {
DestinationPort = input.ReadUInt32();
break;
}
case 56: {
Id = input.ReadInt64();
break;
}
case 64: {
ReplyId = input.ReadInt64();
break;
}
case 12290: {
SourceSpace = input.ReadBytes();
break;
}
case 12298: {
DestinationSpace = input.ReadBytes();
break;
}
case 14336: {
int rawValue = input.ReadEnum();
if (!global::System.Enum.IsDefined(typeof(global::Sirikata.Protocol._PBJ_Internal.Header.Types.ReturnStatus), rawValue)) {
if (unknownFields == null) {
unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
}
unknownFields.MergeVarintField(1792, (ulong) rawValue);
} else {
ReturnStatus = (global::Sirikata.Protocol._PBJ_Internal.Header.Types.ReturnStatus) rawValue;
}
break;
}
}
}
}
public bool HasSourceObject {
get { return result.HasSourceObject; }
}
public pb::ByteString SourceObject {
get { return result.SourceObject; }
set { SetSourceObject(value); }
}
public Builder SetSourceObject(pb::ByteString value) {
pb::ThrowHelper.ThrowIfNull(value, "value");
result.hasSourceObject = true;
result.sourceObject_ = value;
return this;
}
public Builder ClearSourceObject() {
result.hasSourceObject = false;
result.sourceObject_ = pb::ByteString.Empty;
return this;
}
public bool HasSourcePort {
get { return result.HasSourcePort; }
}
[global::System.CLSCompliant(false)]
public uint SourcePort {
get { return result.SourcePort; }
set { SetSourcePort(value); }
}
[global::System.CLSCompliant(false)]
public Builder SetSourcePort(uint value) {
result.hasSourcePort = true;
result.sourcePort_ = value;
return this;
}
public Builder ClearSourcePort() {
result.hasSourcePort = false;
result.sourcePort_ = 0;
return this;
}
public bool HasSourceSpace {
get { return result.HasSourceSpace; }
}
public pb::ByteString SourceSpace {
get { return result.SourceSpace; }
set { SetSourceSpace(value); }
}
public Builder SetSourceSpace(pb::ByteString value) {
pb::ThrowHelper.ThrowIfNull(value, "value");
result.hasSourceSpace = true;
result.sourceSpace_ = value;
return this;
}
public Builder ClearSourceSpace() {
result.hasSourceSpace = false;
result.sourceSpace_ = pb::ByteString.Empty;
return this;
}
public bool HasDestinationObject {
get { return result.HasDestinationObject; }
}
public pb::ByteString DestinationObject {
get { return result.DestinationObject; }
set { SetDestinationObject(value); }
}
public Builder SetDestinationObject(pb::ByteString value) {
pb::ThrowHelper.ThrowIfNull(value, "value");
result.hasDestinationObject = true;
result.destinationObject_ = value;
return this;
}
public Builder ClearDestinationObject() {
result.hasDestinationObject = false;
result.destinationObject_ = pb::ByteString.Empty;
return this;
}
public bool HasDestinationPort {
get { return result.HasDestinationPort; }
}
[global::System.CLSCompliant(false)]
public uint DestinationPort {
get { return result.DestinationPort; }
set { SetDestinationPort(value); }
}
[global::System.CLSCompliant(false)]
public Builder SetDestinationPort(uint value) {
result.hasDestinationPort = true;
result.destinationPort_ = value;
return this;
}
public Builder ClearDestinationPort() {
result.hasDestinationPort = false;
result.destinationPort_ = 0;
return this;
}
public bool HasDestinationSpace {
get { return result.HasDestinationSpace; }
}
public pb::ByteString DestinationSpace {
get { return result.DestinationSpace; }
set { SetDestinationSpace(value); }
}
public Builder SetDestinationSpace(pb::ByteString value) {
pb::ThrowHelper.ThrowIfNull(value, "value");
result.hasDestinationSpace = true;
result.destinationSpace_ = value;
return this;
}
public Builder ClearDestinationSpace() {
result.hasDestinationSpace = false;
result.destinationSpace_ = pb::ByteString.Empty;
return this;
}
public bool HasId {
get { return result.HasId; }
}
public long Id {
get { return result.Id; }
set { SetId(value); }
}
public Builder SetId(long value) {
result.hasId = true;
result.id_ = value;
return this;
}
public Builder ClearId() {
result.hasId = false;
result.id_ = 0L;
return this;
}
public bool HasReplyId {
get { return result.HasReplyId; }
}
public long ReplyId {
get { return result.ReplyId; }
set { SetReplyId(value); }
}
public Builder SetReplyId(long value) {
result.hasReplyId = true;
result.replyId_ = value;
return this;
}
public Builder ClearReplyId() {
result.hasReplyId = false;
result.replyId_ = 0L;
return this;
}
public bool HasReturnStatus {
get { return result.HasReturnStatus; }
}
public global::Sirikata.Protocol._PBJ_Internal.Header.Types.ReturnStatus ReturnStatus {
get { return result.ReturnStatus; }
set { SetReturnStatus(value); }
}
public Builder SetReturnStatus(global::Sirikata.Protocol._PBJ_Internal.Header.Types.ReturnStatus value) {
result.hasReturnStatus = true;
result.returnStatus_ = value;
return this;
}
public Builder ClearReturnStatus() {
result.hasReturnStatus = false;
result.returnStatus_ = global::Sirikata.Protocol._PBJ_Internal.Header.Types.ReturnStatus.SUCCESS;
return this;
}
}
static Header() {
object.ReferenceEquals(global::Sirikata.Protocol._PBJ_Internal.MessageHeader.Descriptor, null);
}
}
#endregion
}

View File

@@ -0,0 +1,339 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using pbd = global::Google.ProtocolBuffers.Descriptors;
using pb = global::Google.ProtocolBuffers;
namespace Sirikata.Protocol {
public class Header : PBJ.IMessage {
protected _PBJ_Internal.Header super;
public _PBJ_Internal.Header _PBJSuper{ get { return super;} }
public Header() {
super=new _PBJ_Internal.Header();
}
public Header(_PBJ_Internal.Header reference) {
super=reference;
}
public static Header defaultInstance= new Header (_PBJ_Internal.Header.DefaultInstance);
public static Header DefaultInstance{
get {return defaultInstance;}
}
public static pbd.MessageDescriptor Descriptor {
get { return _PBJ_Internal.Header.Descriptor; } }
public static class Types {
public enum ReturnStatus {
SUCCESS=_PBJ_Internal.Header.Types.ReturnStatus.SUCCESS,
NETWORK_FAILURE=_PBJ_Internal.Header.Types.ReturnStatus.NETWORK_FAILURE,
TIMEOUT_FAILURE=_PBJ_Internal.Header.Types.ReturnStatus.TIMEOUT_FAILURE,
PROTOCOL_ERROR=_PBJ_Internal.Header.Types.ReturnStatus.PROTOCOL_ERROR,
PORT_FAILURE=_PBJ_Internal.Header.Types.ReturnStatus.PORT_FAILURE,
UNKNOWN_OBJECT=_PBJ_Internal.Header.Types.ReturnStatus.UNKNOWN_OBJECT
};
}
public static bool WithinReservedFieldTagRange(int field_tag) {
return false||(field_tag>=1&&field_tag<=8)||(field_tag>=1536&&field_tag<=2560)||(field_tag>=229376&&field_tag<=294912);
}
public static bool WithinExtensionFieldTagRange(int field_tag) {
return false;
}
public const int SourceObjectFieldTag=1;
public bool HasSourceObject{ get {return super.HasSourceObject&&PBJ._PBJ.ValidateUuid(super.SourceObject);} }
public PBJ.UUID SourceObject{ get {
if (HasSourceObject) {
return PBJ._PBJ.CastUuid(super.SourceObject);
} else {
return PBJ._PBJ.CastUuid();
}
}
}
public const int SourcePortFieldTag=3;
public bool HasSourcePort{ get {return super.HasSourcePort&&PBJ._PBJ.ValidateUint32(super.SourcePort);} }
public uint SourcePort{ get {
if (HasSourcePort) {
return PBJ._PBJ.CastUint32(super.SourcePort);
} else {
return PBJ._PBJ.CastUint32();
}
}
}
public const int SourceSpaceFieldTag=1536;
public bool HasSourceSpace{ get {return super.HasSourceSpace&&PBJ._PBJ.ValidateUuid(super.SourceSpace);} }
public PBJ.UUID SourceSpace{ get {
if (HasSourceSpace) {
return PBJ._PBJ.CastUuid(super.SourceSpace);
} else {
return PBJ._PBJ.CastUuid();
}
}
}
public const int DestinationObjectFieldTag=2;
public bool HasDestinationObject{ get {return super.HasDestinationObject&&PBJ._PBJ.ValidateUuid(super.DestinationObject);} }
public PBJ.UUID DestinationObject{ get {
if (HasDestinationObject) {
return PBJ._PBJ.CastUuid(super.DestinationObject);
} else {
return PBJ._PBJ.CastUuid();
}
}
}
public const int DestinationPortFieldTag=4;
public bool HasDestinationPort{ get {return super.HasDestinationPort&&PBJ._PBJ.ValidateUint32(super.DestinationPort);} }
public uint DestinationPort{ get {
if (HasDestinationPort) {
return PBJ._PBJ.CastUint32(super.DestinationPort);
} else {
return PBJ._PBJ.CastUint32();
}
}
}
public const int DestinationSpaceFieldTag=1537;
public bool HasDestinationSpace{ get {return super.HasDestinationSpace&&PBJ._PBJ.ValidateUuid(super.DestinationSpace);} }
public PBJ.UUID DestinationSpace{ get {
if (HasDestinationSpace) {
return PBJ._PBJ.CastUuid(super.DestinationSpace);
} else {
return PBJ._PBJ.CastUuid();
}
}
}
public const int IdFieldTag=7;
public bool HasId{ get {return super.HasId&&PBJ._PBJ.ValidateInt64(super.Id);} }
public long Id{ get {
if (HasId) {
return PBJ._PBJ.CastInt64(super.Id);
} else {
return PBJ._PBJ.CastInt64();
}
}
}
public const int ReplyIdFieldTag=8;
public bool HasReplyId{ get {return super.HasReplyId&&PBJ._PBJ.ValidateInt64(super.ReplyId);} }
public long ReplyId{ get {
if (HasReplyId) {
return PBJ._PBJ.CastInt64(super.ReplyId);
} else {
return PBJ._PBJ.CastInt64();
}
}
}
public const int ReturnStatusFieldTag=1792;
public bool HasReturnStatus{ get {return super.HasReturnStatus;} }
public Types.ReturnStatus ReturnStatus{ get {
if (HasReturnStatus) {
return (Types.ReturnStatus)super.ReturnStatus;
} else {
return new Types.ReturnStatus();
}
}
}
public override Google.ProtocolBuffers.IMessage _PBJISuper { get { return super; } }
public override PBJ.IMessage.IBuilder WeakCreateBuilderForType() { return new Builder(); }
public static Builder CreateBuilder() { return new Builder(); }
public static Builder CreateBuilder(Header prototype) {
return (Builder)new Builder().MergeFrom(prototype);
}
public static Header ParseFrom(pb::ByteString data) {
return new Header(_PBJ_Internal.Header.ParseFrom(data));
}
public static Header ParseFrom(pb::ByteString data, pb::ExtensionRegistry er) {
return new Header(_PBJ_Internal.Header.ParseFrom(data,er));
}
public static Header ParseFrom(byte[] data) {
return new Header(_PBJ_Internal.Header.ParseFrom(data));
}
public static Header ParseFrom(byte[] data, pb::ExtensionRegistry er) {
return new Header(_PBJ_Internal.Header.ParseFrom(data,er));
}
public static Header ParseFrom(global::System.IO.Stream data) {
return new Header(_PBJ_Internal.Header.ParseFrom(data));
}
public static Header ParseFrom(global::System.IO.Stream data, pb::ExtensionRegistry er) {
return new Header(_PBJ_Internal.Header.ParseFrom(data,er));
}
public static Header ParseFrom(pb::CodedInputStream data) {
return new Header(_PBJ_Internal.Header.ParseFrom(data));
}
public static Header ParseFrom(pb::CodedInputStream data, pb::ExtensionRegistry er) {
return new Header(_PBJ_Internal.Header.ParseFrom(data,er));
}
protected override bool _HasAllPBJFields{ get {
return true
;
} }
public bool IsInitialized { get {
return super.IsInitialized&&_HasAllPBJFields;
} }
public class Builder : global::PBJ.IMessage.IBuilder{
protected override bool _HasAllPBJFields{ get {
return true
;
} }
public bool IsInitialized { get {
return super.IsInitialized&&_HasAllPBJFields;
} }
protected _PBJ_Internal.Header.Builder super;
public override Google.ProtocolBuffers.IBuilder _PBJISuper { get { return super; } }
public _PBJ_Internal.Header.Builder _PBJSuper{ get { return super;} }
public Builder() {super = new _PBJ_Internal.Header.Builder();}
public Builder(_PBJ_Internal.Header.Builder other) {
super=other;
}
public Builder Clone() {return new Builder(super.Clone());}
public Builder MergeFrom(Header prototype) { super.MergeFrom(prototype._PBJSuper);return this;}
public Builder Clear() {super.Clear();return this;}
public Header BuildPartial() {return new Header(super.BuildPartial());}
public Header Build() {if (_HasAllPBJFields) return new Header(super.Build());return null;}
public pbd::MessageDescriptor DescriptorForType {
get { return Header.Descriptor; } }
public Builder ClearSourceObject() { super.ClearSourceObject();return this;}
public const int SourceObjectFieldTag=1;
public bool HasSourceObject{ get {return super.HasSourceObject&&PBJ._PBJ.ValidateUuid(super.SourceObject);} }
public PBJ.UUID SourceObject{ get {
if (HasSourceObject) {
return PBJ._PBJ.CastUuid(super.SourceObject);
} else {
return PBJ._PBJ.CastUuid();
}
}
set {
super.SourceObject=(PBJ._PBJ.Construct(value));
}
}
public Builder ClearSourcePort() { super.ClearSourcePort();return this;}
public const int SourcePortFieldTag=3;
public bool HasSourcePort{ get {return super.HasSourcePort&&PBJ._PBJ.ValidateUint32(super.SourcePort);} }
public uint SourcePort{ get {
if (HasSourcePort) {
return PBJ._PBJ.CastUint32(super.SourcePort);
} else {
return PBJ._PBJ.CastUint32();
}
}
set {
super.SourcePort=(PBJ._PBJ.Construct(value));
}
}
public Builder ClearSourceSpace() { super.ClearSourceSpace();return this;}
public const int SourceSpaceFieldTag=1536;
public bool HasSourceSpace{ get {return super.HasSourceSpace&&PBJ._PBJ.ValidateUuid(super.SourceSpace);} }
public PBJ.UUID SourceSpace{ get {
if (HasSourceSpace) {
return PBJ._PBJ.CastUuid(super.SourceSpace);
} else {
return PBJ._PBJ.CastUuid();
}
}
set {
super.SourceSpace=(PBJ._PBJ.Construct(value));
}
}
public Builder ClearDestinationObject() { super.ClearDestinationObject();return this;}
public const int DestinationObjectFieldTag=2;
public bool HasDestinationObject{ get {return super.HasDestinationObject&&PBJ._PBJ.ValidateUuid(super.DestinationObject);} }
public PBJ.UUID DestinationObject{ get {
if (HasDestinationObject) {
return PBJ._PBJ.CastUuid(super.DestinationObject);
} else {
return PBJ._PBJ.CastUuid();
}
}
set {
super.DestinationObject=(PBJ._PBJ.Construct(value));
}
}
public Builder ClearDestinationPort() { super.ClearDestinationPort();return this;}
public const int DestinationPortFieldTag=4;
public bool HasDestinationPort{ get {return super.HasDestinationPort&&PBJ._PBJ.ValidateUint32(super.DestinationPort);} }
public uint DestinationPort{ get {
if (HasDestinationPort) {
return PBJ._PBJ.CastUint32(super.DestinationPort);
} else {
return PBJ._PBJ.CastUint32();
}
}
set {
super.DestinationPort=(PBJ._PBJ.Construct(value));
}
}
public Builder ClearDestinationSpace() { super.ClearDestinationSpace();return this;}
public const int DestinationSpaceFieldTag=1537;
public bool HasDestinationSpace{ get {return super.HasDestinationSpace&&PBJ._PBJ.ValidateUuid(super.DestinationSpace);} }
public PBJ.UUID DestinationSpace{ get {
if (HasDestinationSpace) {
return PBJ._PBJ.CastUuid(super.DestinationSpace);
} else {
return PBJ._PBJ.CastUuid();
}
}
set {
super.DestinationSpace=(PBJ._PBJ.Construct(value));
}
}
public Builder ClearId() { super.ClearId();return this;}
public const int IdFieldTag=7;
public bool HasId{ get {return super.HasId&&PBJ._PBJ.ValidateInt64(super.Id);} }
public long Id{ get {
if (HasId) {
return PBJ._PBJ.CastInt64(super.Id);
} else {
return PBJ._PBJ.CastInt64();
}
}
set {
super.Id=(PBJ._PBJ.Construct(value));
}
}
public Builder ClearReplyId() { super.ClearReplyId();return this;}
public const int ReplyIdFieldTag=8;
public bool HasReplyId{ get {return super.HasReplyId&&PBJ._PBJ.ValidateInt64(super.ReplyId);} }
public long ReplyId{ get {
if (HasReplyId) {
return PBJ._PBJ.CastInt64(super.ReplyId);
} else {
return PBJ._PBJ.CastInt64();
}
}
set {
super.ReplyId=(PBJ._PBJ.Construct(value));
}
}
public Builder ClearReturnStatus() { super.ClearReturnStatus();return this;}
public const int ReturnStatusFieldTag=1792;
public bool HasReturnStatus{ get {return super.HasReturnStatus;} }
public Types.ReturnStatus ReturnStatus{ get {
if (HasReturnStatus) {
return (Types.ReturnStatus)super.ReturnStatus;
} else {
return new Types.ReturnStatus();
}
}
set {
super.ReturnStatus=((_PBJ_Internal.Header.Types.ReturnStatus)value);
}
}
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,840 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
using pb = global::Google.ProtocolBuffers;
using pbc = global::Google.ProtocolBuffers.Collections;
using pbd = global::Google.ProtocolBuffers.Descriptors;
using scg = global::System.Collections.Generic;
namespace Sirikata.Physics.Protocol._PBJ_Internal {
public static partial class Physics {
#region Extension registration
public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
}
#endregion
#region Static variables
internal static pbd::MessageDescriptor internal__static_Sirikata_Physics_Protocol__PBJ_Internal_CollisionBegin__Descriptor;
internal static pb::FieldAccess.FieldAccessorTable<global::Sirikata.Physics.Protocol._PBJ_Internal.CollisionBegin, global::Sirikata.Physics.Protocol._PBJ_Internal.CollisionBegin.Builder> internal__static_Sirikata_Physics_Protocol__PBJ_Internal_CollisionBegin__FieldAccessorTable;
internal static pbd::MessageDescriptor internal__static_Sirikata_Physics_Protocol__PBJ_Internal_CollisionEnd__Descriptor;
internal static pb::FieldAccess.FieldAccessorTable<global::Sirikata.Physics.Protocol._PBJ_Internal.CollisionEnd, global::Sirikata.Physics.Protocol._PBJ_Internal.CollisionEnd.Builder> internal__static_Sirikata_Physics_Protocol__PBJ_Internal_CollisionEnd__FieldAccessorTable;
#endregion
#region Descriptor
public static pbd::FileDescriptor Descriptor {
get { return descriptor; }
}
private static pbd::FileDescriptor descriptor;
static Physics() {
byte[] descriptorData = global::System.Convert.FromBase64String(
"Cg1QaHlzaWNzLnByb3RvEidTaXJpa2F0YS5QaHlzaWNzLlByb3RvY29sLl9Q" +
"QkpfSW50ZXJuYWwiqAEKDkNvbGxpc2lvbkJlZ2luEhEKCXRpbWVzdGFtcBgC" +
"IAEoBhIZCg10aGlzX3Bvc2l0aW9uGAMgAygBQgIQARIaCg5vdGhlcl9wb3Np" +
"dGlvbhgEIAMoAUICEAESFwoLdGhpc19ub3JtYWwYBSADKAJCAhABEhMKB2lt" +
"cHVsc2UYBiADKAJCAhABEh4KFm90aGVyX29iamVjdF9yZWZlcmVuY2UYByAB" +
"KAwiQQoMQ29sbGlzaW9uRW5kEhEKCXRpbWVzdGFtcBgCIAEoBhIeChZvdGhl" +
"cl9vYmplY3RfcmVmZXJlbmNlGAYgASgM");
pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
descriptor = root;
internal__static_Sirikata_Physics_Protocol__PBJ_Internal_CollisionBegin__Descriptor = Descriptor.MessageTypes[0];
internal__static_Sirikata_Physics_Protocol__PBJ_Internal_CollisionBegin__FieldAccessorTable =
new pb::FieldAccess.FieldAccessorTable<global::Sirikata.Physics.Protocol._PBJ_Internal.CollisionBegin, global::Sirikata.Physics.Protocol._PBJ_Internal.CollisionBegin.Builder>(internal__static_Sirikata_Physics_Protocol__PBJ_Internal_CollisionBegin__Descriptor,
new string[] { "Timestamp", "ThisPosition", "OtherPosition", "ThisNormal", "Impulse", "OtherObjectReference", });
internal__static_Sirikata_Physics_Protocol__PBJ_Internal_CollisionEnd__Descriptor = Descriptor.MessageTypes[1];
internal__static_Sirikata_Physics_Protocol__PBJ_Internal_CollisionEnd__FieldAccessorTable =
new pb::FieldAccess.FieldAccessorTable<global::Sirikata.Physics.Protocol._PBJ_Internal.CollisionEnd, global::Sirikata.Physics.Protocol._PBJ_Internal.CollisionEnd.Builder>(internal__static_Sirikata_Physics_Protocol__PBJ_Internal_CollisionEnd__Descriptor,
new string[] { "Timestamp", "OtherObjectReference", });
return null;
};
pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
new pbd::FileDescriptor[] {
}, assigner);
}
#endregion
}
#region Messages
public sealed partial class CollisionBegin : pb::GeneratedMessage<CollisionBegin, CollisionBegin.Builder> {
private static readonly CollisionBegin defaultInstance = new Builder().BuildPartial();
public static CollisionBegin DefaultInstance {
get { return defaultInstance; }
}
public override CollisionBegin DefaultInstanceForType {
get { return defaultInstance; }
}
protected override CollisionBegin ThisMessage {
get { return this; }
}
public static pbd::MessageDescriptor Descriptor {
get { return global::Sirikata.Physics.Protocol._PBJ_Internal.Physics.internal__static_Sirikata_Physics_Protocol__PBJ_Internal_CollisionBegin__Descriptor; }
}
protected override pb::FieldAccess.FieldAccessorTable<CollisionBegin, CollisionBegin.Builder> InternalFieldAccessors {
get { return global::Sirikata.Physics.Protocol._PBJ_Internal.Physics.internal__static_Sirikata_Physics_Protocol__PBJ_Internal_CollisionBegin__FieldAccessorTable; }
}
public const int TimestampFieldNumber = 2;
private bool hasTimestamp;
private ulong timestamp_ = 0;
public bool HasTimestamp {
get { return hasTimestamp; }
}
[global::System.CLSCompliant(false)]
public ulong Timestamp {
get { return timestamp_; }
}
public const int ThisPositionFieldNumber = 3;
private int thisPositionMemoizedSerializedSize;
private pbc::PopsicleList<double> thisPosition_ = new pbc::PopsicleList<double>();
public scg::IList<double> ThisPositionList {
get { return pbc::Lists.AsReadOnly(thisPosition_); }
}
public int ThisPositionCount {
get { return thisPosition_.Count; }
}
public double GetThisPosition(int index) {
return thisPosition_[index];
}
public const int OtherPositionFieldNumber = 4;
private int otherPositionMemoizedSerializedSize;
private pbc::PopsicleList<double> otherPosition_ = new pbc::PopsicleList<double>();
public scg::IList<double> OtherPositionList {
get { return pbc::Lists.AsReadOnly(otherPosition_); }
}
public int OtherPositionCount {
get { return otherPosition_.Count; }
}
public double GetOtherPosition(int index) {
return otherPosition_[index];
}
public const int ThisNormalFieldNumber = 5;
private int thisNormalMemoizedSerializedSize;
private pbc::PopsicleList<float> thisNormal_ = new pbc::PopsicleList<float>();
public scg::IList<float> ThisNormalList {
get { return pbc::Lists.AsReadOnly(thisNormal_); }
}
public int ThisNormalCount {
get { return thisNormal_.Count; }
}
public float GetThisNormal(int index) {
return thisNormal_[index];
}
public const int ImpulseFieldNumber = 6;
private int impulseMemoizedSerializedSize;
private pbc::PopsicleList<float> impulse_ = new pbc::PopsicleList<float>();
public scg::IList<float> ImpulseList {
get { return pbc::Lists.AsReadOnly(impulse_); }
}
public int ImpulseCount {
get { return impulse_.Count; }
}
public float GetImpulse(int index) {
return impulse_[index];
}
public const int OtherObjectReferenceFieldNumber = 7;
private bool hasOtherObjectReference;
private pb::ByteString otherObjectReference_ = pb::ByteString.Empty;
public bool HasOtherObjectReference {
get { return hasOtherObjectReference; }
}
public pb::ByteString OtherObjectReference {
get { return otherObjectReference_; }
}
public override bool IsInitialized {
get {
return true;
}
}
public override void WriteTo(pb::CodedOutputStream output) {
if (HasTimestamp) {
output.WriteFixed64(2, Timestamp);
}
if (thisPosition_.Count > 0) {
output.WriteRawVarint32(26);
output.WriteRawVarint32((uint) thisPositionMemoizedSerializedSize);
foreach (double element in thisPosition_) {
output.WriteDoubleNoTag(element);
}
}
if (otherPosition_.Count > 0) {
output.WriteRawVarint32(34);
output.WriteRawVarint32((uint) otherPositionMemoizedSerializedSize);
foreach (double element in otherPosition_) {
output.WriteDoubleNoTag(element);
}
}
if (thisNormal_.Count > 0) {
output.WriteRawVarint32(42);
output.WriteRawVarint32((uint) thisNormalMemoizedSerializedSize);
foreach (float element in thisNormal_) {
output.WriteFloatNoTag(element);
}
}
if (impulse_.Count > 0) {
output.WriteRawVarint32(50);
output.WriteRawVarint32((uint) impulseMemoizedSerializedSize);
foreach (float element in impulse_) {
output.WriteFloatNoTag(element);
}
}
if (HasOtherObjectReference) {
output.WriteBytes(7, OtherObjectReference);
}
UnknownFields.WriteTo(output);
}
private int memoizedSerializedSize = -1;
public override int SerializedSize {
get {
int size = memoizedSerializedSize;
if (size != -1) return size;
size = 0;
if (HasTimestamp) {
size += pb::CodedOutputStream.ComputeFixed64Size(2, Timestamp);
}
{
int dataSize = 0;
dataSize = 8 * thisPosition_.Count;
size += dataSize;
if (thisPosition_.Count!=0) size += 1 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
thisPositionMemoizedSerializedSize = dataSize;
}
{
int dataSize = 0;
dataSize = 8 * otherPosition_.Count;
size += dataSize;
if (otherPosition_.Count!=0) size += 1 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
otherPositionMemoizedSerializedSize = dataSize;
}
{
int dataSize = 0;
dataSize = 4 * thisNormal_.Count;
size += dataSize;
if (thisNormal_.Count!=0) size += 1 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
thisNormalMemoizedSerializedSize = dataSize;
}
{
int dataSize = 0;
dataSize = 4 * impulse_.Count;
size += dataSize;
if (impulse_.Count!=0) size += 1 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize);
impulseMemoizedSerializedSize = dataSize;
}
if (HasOtherObjectReference) {
size += pb::CodedOutputStream.ComputeBytesSize(7, OtherObjectReference);
}
size += UnknownFields.SerializedSize;
memoizedSerializedSize = size;
return size;
}
}
public static CollisionBegin ParseFrom(pb::ByteString data) {
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
}
public static CollisionBegin ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
}
public static CollisionBegin ParseFrom(byte[] data) {
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
}
public static CollisionBegin ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
}
public static CollisionBegin ParseFrom(global::System.IO.Stream input) {
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
}
public static CollisionBegin ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
}
public static CollisionBegin ParseDelimitedFrom(global::System.IO.Stream input) {
return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
}
public static CollisionBegin ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
}
public static CollisionBegin ParseFrom(pb::CodedInputStream input) {
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
}
public static CollisionBegin ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
}
public static Builder CreateBuilder() { return new Builder(); }
public override Builder ToBuilder() { return CreateBuilder(this); }
public override Builder CreateBuilderForType() { return new Builder(); }
public static Builder CreateBuilder(CollisionBegin prototype) {
return (Builder) new Builder().MergeFrom(prototype);
}
public sealed partial class Builder : pb::GeneratedBuilder<CollisionBegin, Builder> {
protected override Builder ThisBuilder {
get { return this; }
}
public Builder() {}
CollisionBegin result = new CollisionBegin();
protected override CollisionBegin MessageBeingBuilt {
get { return result; }
}
public override Builder Clear() {
result = new CollisionBegin();
return this;
}
public override Builder Clone() {
return new Builder().MergeFrom(result);
}
public override pbd::MessageDescriptor DescriptorForType {
get { return global::Sirikata.Physics.Protocol._PBJ_Internal.CollisionBegin.Descriptor; }
}
public override CollisionBegin DefaultInstanceForType {
get { return global::Sirikata.Physics.Protocol._PBJ_Internal.CollisionBegin.DefaultInstance; }
}
public override CollisionBegin BuildPartial() {
if (result == null) {
throw new global::System.InvalidOperationException("build() has already been called on this Builder");
}
result.thisPosition_.MakeReadOnly();
result.otherPosition_.MakeReadOnly();
result.thisNormal_.MakeReadOnly();
result.impulse_.MakeReadOnly();
CollisionBegin returnMe = result;
result = null;
return returnMe;
}
public override Builder MergeFrom(pb::IMessage other) {
if (other is CollisionBegin) {
return MergeFrom((CollisionBegin) other);
} else {
base.MergeFrom(other);
return this;
}
}
public override Builder MergeFrom(CollisionBegin other) {
if (other == global::Sirikata.Physics.Protocol._PBJ_Internal.CollisionBegin.DefaultInstance) return this;
if (other.HasTimestamp) {
Timestamp = other.Timestamp;
}
if (other.thisPosition_.Count != 0) {
base.AddRange(other.thisPosition_, result.thisPosition_);
}
if (other.otherPosition_.Count != 0) {
base.AddRange(other.otherPosition_, result.otherPosition_);
}
if (other.thisNormal_.Count != 0) {
base.AddRange(other.thisNormal_, result.thisNormal_);
}
if (other.impulse_.Count != 0) {
base.AddRange(other.impulse_, result.impulse_);
}
if (other.HasOtherObjectReference) {
OtherObjectReference = other.OtherObjectReference;
}
this.MergeUnknownFields(other.UnknownFields);
return this;
}
public override Builder MergeFrom(pb::CodedInputStream input) {
return MergeFrom(input, pb::ExtensionRegistry.Empty);
}
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null;
while (true) {
uint tag = input.ReadTag();
switch (tag) {
case 0: {
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
}
default: {
if (pb::WireFormat.IsEndGroupTag(tag)) {
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
}
if (unknownFields == null) {
unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
}
ParseUnknownField(input, unknownFields, extensionRegistry, tag);
break;
}
case 17: {
Timestamp = input.ReadFixed64();
break;
}
case 26: {
int length = input.ReadInt32();
int limit = input.PushLimit(length);
while (!input.ReachedLimit) {
AddThisPosition(input.ReadDouble());
}
input.PopLimit(limit);
break;
}
case 34: {
int length = input.ReadInt32();
int limit = input.PushLimit(length);
while (!input.ReachedLimit) {
AddOtherPosition(input.ReadDouble());
}
input.PopLimit(limit);
break;
}
case 42: {
int length = input.ReadInt32();
int limit = input.PushLimit(length);
while (!input.ReachedLimit) {
AddThisNormal(input.ReadFloat());
}
input.PopLimit(limit);
break;
}
case 50: {
int length = input.ReadInt32();
int limit = input.PushLimit(length);
while (!input.ReachedLimit) {
AddImpulse(input.ReadFloat());
}
input.PopLimit(limit);
break;
}
case 58: {
OtherObjectReference = input.ReadBytes();
break;
}
}
}
}
public bool HasTimestamp {
get { return result.HasTimestamp; }
}
[global::System.CLSCompliant(false)]
public ulong Timestamp {
get { return result.Timestamp; }
set { SetTimestamp(value); }
}
[global::System.CLSCompliant(false)]
public Builder SetTimestamp(ulong value) {
result.hasTimestamp = true;
result.timestamp_ = value;
return this;
}
public Builder ClearTimestamp() {
result.hasTimestamp = false;
result.timestamp_ = 0;
return this;
}
public pbc::IPopsicleList<double> ThisPositionList {
get { return result.thisPosition_; }
}
public int ThisPositionCount {
get { return result.ThisPositionCount; }
}
public double GetThisPosition(int index) {
return result.GetThisPosition(index);
}
public Builder SetThisPosition(int index, double value) {
result.thisPosition_[index] = value;
return this;
}
public Builder AddThisPosition(double value) {
result.thisPosition_.Add(value);
return this;
}
public Builder AddRangeThisPosition(scg::IEnumerable<double> values) {
base.AddRange(values, result.thisPosition_);
return this;
}
public Builder ClearThisPosition() {
result.thisPosition_.Clear();
return this;
}
public pbc::IPopsicleList<double> OtherPositionList {
get { return result.otherPosition_; }
}
public int OtherPositionCount {
get { return result.OtherPositionCount; }
}
public double GetOtherPosition(int index) {
return result.GetOtherPosition(index);
}
public Builder SetOtherPosition(int index, double value) {
result.otherPosition_[index] = value;
return this;
}
public Builder AddOtherPosition(double value) {
result.otherPosition_.Add(value);
return this;
}
public Builder AddRangeOtherPosition(scg::IEnumerable<double> values) {
base.AddRange(values, result.otherPosition_);
return this;
}
public Builder ClearOtherPosition() {
result.otherPosition_.Clear();
return this;
}
public pbc::IPopsicleList<float> ThisNormalList {
get { return result.thisNormal_; }
}
public int ThisNormalCount {
get { return result.ThisNormalCount; }
}
public float GetThisNormal(int index) {
return result.GetThisNormal(index);
}
public Builder SetThisNormal(int index, float value) {
result.thisNormal_[index] = value;
return this;
}
public Builder AddThisNormal(float value) {
result.thisNormal_.Add(value);
return this;
}
public Builder AddRangeThisNormal(scg::IEnumerable<float> values) {
base.AddRange(values, result.thisNormal_);
return this;
}
public Builder ClearThisNormal() {
result.thisNormal_.Clear();
return this;
}
public pbc::IPopsicleList<float> ImpulseList {
get { return result.impulse_; }
}
public int ImpulseCount {
get { return result.ImpulseCount; }
}
public float GetImpulse(int index) {
return result.GetImpulse(index);
}
public Builder SetImpulse(int index, float value) {
result.impulse_[index] = value;
return this;
}
public Builder AddImpulse(float value) {
result.impulse_.Add(value);
return this;
}
public Builder AddRangeImpulse(scg::IEnumerable<float> values) {
base.AddRange(values, result.impulse_);
return this;
}
public Builder ClearImpulse() {
result.impulse_.Clear();
return this;
}
public bool HasOtherObjectReference {
get { return result.HasOtherObjectReference; }
}
public pb::ByteString OtherObjectReference {
get { return result.OtherObjectReference; }
set { SetOtherObjectReference(value); }
}
public Builder SetOtherObjectReference(pb::ByteString value) {
pb::ThrowHelper.ThrowIfNull(value, "value");
result.hasOtherObjectReference = true;
result.otherObjectReference_ = value;
return this;
}
public Builder ClearOtherObjectReference() {
result.hasOtherObjectReference = false;
result.otherObjectReference_ = pb::ByteString.Empty;
return this;
}
}
static CollisionBegin() {
object.ReferenceEquals(global::Sirikata.Physics.Protocol._PBJ_Internal.Physics.Descriptor, null);
}
}
public sealed partial class CollisionEnd : pb::GeneratedMessage<CollisionEnd, CollisionEnd.Builder> {
private static readonly CollisionEnd defaultInstance = new Builder().BuildPartial();
public static CollisionEnd DefaultInstance {
get { return defaultInstance; }
}
public override CollisionEnd DefaultInstanceForType {
get { return defaultInstance; }
}
protected override CollisionEnd ThisMessage {
get { return this; }
}
public static pbd::MessageDescriptor Descriptor {
get { return global::Sirikata.Physics.Protocol._PBJ_Internal.Physics.internal__static_Sirikata_Physics_Protocol__PBJ_Internal_CollisionEnd__Descriptor; }
}
protected override pb::FieldAccess.FieldAccessorTable<CollisionEnd, CollisionEnd.Builder> InternalFieldAccessors {
get { return global::Sirikata.Physics.Protocol._PBJ_Internal.Physics.internal__static_Sirikata_Physics_Protocol__PBJ_Internal_CollisionEnd__FieldAccessorTable; }
}
public const int TimestampFieldNumber = 2;
private bool hasTimestamp;
private ulong timestamp_ = 0;
public bool HasTimestamp {
get { return hasTimestamp; }
}
[global::System.CLSCompliant(false)]
public ulong Timestamp {
get { return timestamp_; }
}
public const int OtherObjectReferenceFieldNumber = 6;
private bool hasOtherObjectReference;
private pb::ByteString otherObjectReference_ = pb::ByteString.Empty;
public bool HasOtherObjectReference {
get { return hasOtherObjectReference; }
}
public pb::ByteString OtherObjectReference {
get { return otherObjectReference_; }
}
public override bool IsInitialized {
get {
return true;
}
}
public override void WriteTo(pb::CodedOutputStream output) {
if (HasTimestamp) {
output.WriteFixed64(2, Timestamp);
}
if (HasOtherObjectReference) {
output.WriteBytes(6, OtherObjectReference);
}
UnknownFields.WriteTo(output);
}
private int memoizedSerializedSize = -1;
public override int SerializedSize {
get {
int size = memoizedSerializedSize;
if (size != -1) return size;
size = 0;
if (HasTimestamp) {
size += pb::CodedOutputStream.ComputeFixed64Size(2, Timestamp);
}
if (HasOtherObjectReference) {
size += pb::CodedOutputStream.ComputeBytesSize(6, OtherObjectReference);
}
size += UnknownFields.SerializedSize;
memoizedSerializedSize = size;
return size;
}
}
public static CollisionEnd ParseFrom(pb::ByteString data) {
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
}
public static CollisionEnd ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
}
public static CollisionEnd ParseFrom(byte[] data) {
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
}
public static CollisionEnd ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
}
public static CollisionEnd ParseFrom(global::System.IO.Stream input) {
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
}
public static CollisionEnd ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
}
public static CollisionEnd ParseDelimitedFrom(global::System.IO.Stream input) {
return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
}
public static CollisionEnd ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
}
public static CollisionEnd ParseFrom(pb::CodedInputStream input) {
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
}
public static CollisionEnd ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
}
public static Builder CreateBuilder() { return new Builder(); }
public override Builder ToBuilder() { return CreateBuilder(this); }
public override Builder CreateBuilderForType() { return new Builder(); }
public static Builder CreateBuilder(CollisionEnd prototype) {
return (Builder) new Builder().MergeFrom(prototype);
}
public sealed partial class Builder : pb::GeneratedBuilder<CollisionEnd, Builder> {
protected override Builder ThisBuilder {
get { return this; }
}
public Builder() {}
CollisionEnd result = new CollisionEnd();
protected override CollisionEnd MessageBeingBuilt {
get { return result; }
}
public override Builder Clear() {
result = new CollisionEnd();
return this;
}
public override Builder Clone() {
return new Builder().MergeFrom(result);
}
public override pbd::MessageDescriptor DescriptorForType {
get { return global::Sirikata.Physics.Protocol._PBJ_Internal.CollisionEnd.Descriptor; }
}
public override CollisionEnd DefaultInstanceForType {
get { return global::Sirikata.Physics.Protocol._PBJ_Internal.CollisionEnd.DefaultInstance; }
}
public override CollisionEnd BuildPartial() {
if (result == null) {
throw new global::System.InvalidOperationException("build() has already been called on this Builder");
}
CollisionEnd returnMe = result;
result = null;
return returnMe;
}
public override Builder MergeFrom(pb::IMessage other) {
if (other is CollisionEnd) {
return MergeFrom((CollisionEnd) other);
} else {
base.MergeFrom(other);
return this;
}
}
public override Builder MergeFrom(CollisionEnd other) {
if (other == global::Sirikata.Physics.Protocol._PBJ_Internal.CollisionEnd.DefaultInstance) return this;
if (other.HasTimestamp) {
Timestamp = other.Timestamp;
}
if (other.HasOtherObjectReference) {
OtherObjectReference = other.OtherObjectReference;
}
this.MergeUnknownFields(other.UnknownFields);
return this;
}
public override Builder MergeFrom(pb::CodedInputStream input) {
return MergeFrom(input, pb::ExtensionRegistry.Empty);
}
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null;
while (true) {
uint tag = input.ReadTag();
switch (tag) {
case 0: {
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
}
default: {
if (pb::WireFormat.IsEndGroupTag(tag)) {
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
}
if (unknownFields == null) {
unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
}
ParseUnknownField(input, unknownFields, extensionRegistry, tag);
break;
}
case 17: {
Timestamp = input.ReadFixed64();
break;
}
case 50: {
OtherObjectReference = input.ReadBytes();
break;
}
}
}
}
public bool HasTimestamp {
get { return result.HasTimestamp; }
}
[global::System.CLSCompliant(false)]
public ulong Timestamp {
get { return result.Timestamp; }
set { SetTimestamp(value); }
}
[global::System.CLSCompliant(false)]
public Builder SetTimestamp(ulong value) {
result.hasTimestamp = true;
result.timestamp_ = value;
return this;
}
public Builder ClearTimestamp() {
result.hasTimestamp = false;
result.timestamp_ = 0;
return this;
}
public bool HasOtherObjectReference {
get { return result.HasOtherObjectReference; }
}
public pb::ByteString OtherObjectReference {
get { return result.OtherObjectReference; }
set { SetOtherObjectReference(value); }
}
public Builder SetOtherObjectReference(pb::ByteString value) {
pb::ThrowHelper.ThrowIfNull(value, "value");
result.hasOtherObjectReference = true;
result.otherObjectReference_ = value;
return this;
}
public Builder ClearOtherObjectReference() {
result.hasOtherObjectReference = false;
result.otherObjectReference_ = pb::ByteString.Empty;
return this;
}
}
static CollisionEnd() {
object.ReferenceEquals(global::Sirikata.Physics.Protocol._PBJ_Internal.Physics.Descriptor, null);
}
}
#endregion
}

View File

@@ -0,0 +1,421 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using pbd = global::Google.ProtocolBuffers.Descriptors;
using pb = global::Google.ProtocolBuffers;
namespace Sirikata.Physics.Protocol {
public class CollisionBegin : PBJ.IMessage {
protected _PBJ_Internal.CollisionBegin super;
public _PBJ_Internal.CollisionBegin _PBJSuper{ get { return super;} }
public CollisionBegin() {
super=new _PBJ_Internal.CollisionBegin();
}
public CollisionBegin(_PBJ_Internal.CollisionBegin reference) {
super=reference;
}
public static CollisionBegin defaultInstance= new CollisionBegin (_PBJ_Internal.CollisionBegin.DefaultInstance);
public static CollisionBegin DefaultInstance{
get {return defaultInstance;}
}
public static pbd.MessageDescriptor Descriptor {
get { return _PBJ_Internal.CollisionBegin.Descriptor; } }
public static class Types {
}
public static bool WithinReservedFieldTagRange(int field_tag) {
return false;
}
public static bool WithinExtensionFieldTagRange(int field_tag) {
return false;
}
public const int TimestampFieldTag=2;
public bool HasTimestamp{ get {return super.HasTimestamp&&PBJ._PBJ.ValidateTime(super.Timestamp);} }
public PBJ.Time Timestamp{ get {
if (HasTimestamp) {
return PBJ._PBJ.CastTime(super.Timestamp);
} else {
return PBJ._PBJ.CastTime();
}
}
}
public const int ThisPositionFieldTag=3;
public int ThisPositionCount { get { return super.ThisPositionCount/3;} }
public bool HasThisPosition(int index) { return true; }
public PBJ.Vector3d GetThisPosition(int index) {
if (HasThisPosition(index)) {
return PBJ._PBJ.CastVector3d(super.GetThisPosition(index*3+0),super.GetThisPosition(index*3+1),super.GetThisPosition(index*3+2));
} else {
return PBJ._PBJ.CastVector3d();
}
}
public const int OtherPositionFieldTag=4;
public int OtherPositionCount { get { return super.OtherPositionCount/3;} }
public bool HasOtherPosition(int index) { return true; }
public PBJ.Vector3d GetOtherPosition(int index) {
if (HasOtherPosition(index)) {
return PBJ._PBJ.CastVector3d(super.GetOtherPosition(index*3+0),super.GetOtherPosition(index*3+1),super.GetOtherPosition(index*3+2));
} else {
return PBJ._PBJ.CastVector3d();
}
}
public const int ThisNormalFieldTag=5;
public int ThisNormalCount { get { return super.ThisNormalCount/2;} }
public bool HasThisNormal(int index) { return true; }
public PBJ.Vector3f GetThisNormal(int index) {
if (HasThisNormal(index)) {
return PBJ._PBJ.CastNormal(super.GetThisNormal(index*2+0),super.GetThisNormal(index*2+1));
} else {
return PBJ._PBJ.CastNormal();
}
}
public const int ImpulseFieldTag=6;
public int ImpulseCount { get { return super.ImpulseCount;} }
public bool HasImpulse(int index) {return PBJ._PBJ.ValidateFloat(super.GetImpulse(index));}
public float Impulse(int index) {
return (float)PBJ._PBJ.CastFloat(super.GetImpulse(index));
}
public const int OtherObjectReferenceFieldTag=7;
public bool HasOtherObjectReference{ get {return super.HasOtherObjectReference&&PBJ._PBJ.ValidateUuid(super.OtherObjectReference);} }
public PBJ.UUID OtherObjectReference{ get {
if (HasOtherObjectReference) {
return PBJ._PBJ.CastUuid(super.OtherObjectReference);
} else {
return PBJ._PBJ.CastUuid();
}
}
}
public override Google.ProtocolBuffers.IMessage _PBJISuper { get { return super; } }
public override PBJ.IMessage.IBuilder WeakCreateBuilderForType() { return new Builder(); }
public static Builder CreateBuilder() { return new Builder(); }
public static Builder CreateBuilder(CollisionBegin prototype) {
return (Builder)new Builder().MergeFrom(prototype);
}
public static CollisionBegin ParseFrom(pb::ByteString data) {
return new CollisionBegin(_PBJ_Internal.CollisionBegin.ParseFrom(data));
}
public static CollisionBegin ParseFrom(pb::ByteString data, pb::ExtensionRegistry er) {
return new CollisionBegin(_PBJ_Internal.CollisionBegin.ParseFrom(data,er));
}
public static CollisionBegin ParseFrom(byte[] data) {
return new CollisionBegin(_PBJ_Internal.CollisionBegin.ParseFrom(data));
}
public static CollisionBegin ParseFrom(byte[] data, pb::ExtensionRegistry er) {
return new CollisionBegin(_PBJ_Internal.CollisionBegin.ParseFrom(data,er));
}
public static CollisionBegin ParseFrom(global::System.IO.Stream data) {
return new CollisionBegin(_PBJ_Internal.CollisionBegin.ParseFrom(data));
}
public static CollisionBegin ParseFrom(global::System.IO.Stream data, pb::ExtensionRegistry er) {
return new CollisionBegin(_PBJ_Internal.CollisionBegin.ParseFrom(data,er));
}
public static CollisionBegin ParseFrom(pb::CodedInputStream data) {
return new CollisionBegin(_PBJ_Internal.CollisionBegin.ParseFrom(data));
}
public static CollisionBegin ParseFrom(pb::CodedInputStream data, pb::ExtensionRegistry er) {
return new CollisionBegin(_PBJ_Internal.CollisionBegin.ParseFrom(data,er));
}
protected override bool _HasAllPBJFields{ get {
return true
;
} }
public bool IsInitialized { get {
return super.IsInitialized&&_HasAllPBJFields;
} }
public class Builder : global::PBJ.IMessage.IBuilder{
protected override bool _HasAllPBJFields{ get {
return true
;
} }
public bool IsInitialized { get {
return super.IsInitialized&&_HasAllPBJFields;
} }
protected _PBJ_Internal.CollisionBegin.Builder super;
public override Google.ProtocolBuffers.IBuilder _PBJISuper { get { return super; } }
public _PBJ_Internal.CollisionBegin.Builder _PBJSuper{ get { return super;} }
public Builder() {super = new _PBJ_Internal.CollisionBegin.Builder();}
public Builder(_PBJ_Internal.CollisionBegin.Builder other) {
super=other;
}
public Builder Clone() {return new Builder(super.Clone());}
public Builder MergeFrom(CollisionBegin prototype) { super.MergeFrom(prototype._PBJSuper);return this;}
public Builder Clear() {super.Clear();return this;}
public CollisionBegin BuildPartial() {return new CollisionBegin(super.BuildPartial());}
public CollisionBegin Build() {if (_HasAllPBJFields) return new CollisionBegin(super.Build());return null;}
public pbd::MessageDescriptor DescriptorForType {
get { return CollisionBegin.Descriptor; } }
public Builder ClearTimestamp() { super.ClearTimestamp();return this;}
public const int TimestampFieldTag=2;
public bool HasTimestamp{ get {return super.HasTimestamp&&PBJ._PBJ.ValidateTime(super.Timestamp);} }
public PBJ.Time Timestamp{ get {
if (HasTimestamp) {
return PBJ._PBJ.CastTime(super.Timestamp);
} else {
return PBJ._PBJ.CastTime();
}
}
set {
super.Timestamp=(PBJ._PBJ.Construct(value));
}
}
public Builder ClearThisPosition() { super.ClearThisPosition();return this;}
public const int ThisPositionFieldTag=3;
public int ThisPositionCount { get { return super.ThisPositionCount/3;} }
public bool HasThisPosition(int index) { return true; }
public PBJ.Vector3d GetThisPosition(int index) {
if (HasThisPosition(index)) {
return PBJ._PBJ.CastVector3d(super.GetThisPosition(index*3+0),super.GetThisPosition(index*3+1),super.GetThisPosition(index*3+2));
} else {
return PBJ._PBJ.CastVector3d();
}
}
public Builder AddThisPosition(PBJ.Vector3d value) {
double[] _PBJtempArray=PBJ._PBJ.ConstructVector3d(value);
super.AddThisPosition(_PBJtempArray[0]);
super.AddThisPosition(_PBJtempArray[1]);
super.AddThisPosition(_PBJtempArray[2]);
return this;
}
public Builder SetThisPosition(int index,PBJ.Vector3d value) {
double[] _PBJtempArray=PBJ._PBJ.ConstructVector3d(value);
super.SetThisPosition(index*3+0,_PBJtempArray[0]);
super.SetThisPosition(index*3+1,_PBJtempArray[1]);
super.SetThisPosition(index*3+2,_PBJtempArray[2]);
return this;
}
public Builder ClearOtherPosition() { super.ClearOtherPosition();return this;}
public const int OtherPositionFieldTag=4;
public int OtherPositionCount { get { return super.OtherPositionCount/3;} }
public bool HasOtherPosition(int index) { return true; }
public PBJ.Vector3d GetOtherPosition(int index) {
if (HasOtherPosition(index)) {
return PBJ._PBJ.CastVector3d(super.GetOtherPosition(index*3+0),super.GetOtherPosition(index*3+1),super.GetOtherPosition(index*3+2));
} else {
return PBJ._PBJ.CastVector3d();
}
}
public Builder AddOtherPosition(PBJ.Vector3d value) {
double[] _PBJtempArray=PBJ._PBJ.ConstructVector3d(value);
super.AddOtherPosition(_PBJtempArray[0]);
super.AddOtherPosition(_PBJtempArray[1]);
super.AddOtherPosition(_PBJtempArray[2]);
return this;
}
public Builder SetOtherPosition(int index,PBJ.Vector3d value) {
double[] _PBJtempArray=PBJ._PBJ.ConstructVector3d(value);
super.SetOtherPosition(index*3+0,_PBJtempArray[0]);
super.SetOtherPosition(index*3+1,_PBJtempArray[1]);
super.SetOtherPosition(index*3+2,_PBJtempArray[2]);
return this;
}
public Builder ClearThisNormal() { super.ClearThisNormal();return this;}
public const int ThisNormalFieldTag=5;
public int ThisNormalCount { get { return super.ThisNormalCount/2;} }
public bool HasThisNormal(int index) { return true; }
public PBJ.Vector3f GetThisNormal(int index) {
if (HasThisNormal(index)) {
return PBJ._PBJ.CastNormal(super.GetThisNormal(index*2+0),super.GetThisNormal(index*2+1));
} else {
return PBJ._PBJ.CastNormal();
}
}
public Builder AddThisNormal(PBJ.Vector3f value) {
float[] _PBJtempArray=PBJ._PBJ.ConstructNormal(value);
super.AddThisNormal(_PBJtempArray[0]);
super.AddThisNormal(_PBJtempArray[1]);
return this;
}
public Builder SetThisNormal(int index,PBJ.Vector3f value) {
float[] _PBJtempArray=PBJ._PBJ.ConstructNormal(value);
super.SetThisNormal(index*2+0,_PBJtempArray[0]);
super.SetThisNormal(index*2+1,_PBJtempArray[1]);
return this;
}
public Builder ClearImpulse() { super.ClearImpulse();return this;}
public Builder SetImpulse(int index, float value) {
super.SetImpulse(index,PBJ._PBJ.Construct(value));
return this;
}
public const int ImpulseFieldTag=6;
public int ImpulseCount { get { return super.ImpulseCount;} }
public bool HasImpulse(int index) {return PBJ._PBJ.ValidateFloat(super.GetImpulse(index));}
public float Impulse(int index) {
return (float)PBJ._PBJ.CastFloat(super.GetImpulse(index));
}
public Builder AddImpulse(float value) {
super.AddImpulse(PBJ._PBJ.Construct(value));
return this;
}
public Builder ClearOtherObjectReference() { super.ClearOtherObjectReference();return this;}
public const int OtherObjectReferenceFieldTag=7;
public bool HasOtherObjectReference{ get {return super.HasOtherObjectReference&&PBJ._PBJ.ValidateUuid(super.OtherObjectReference);} }
public PBJ.UUID OtherObjectReference{ get {
if (HasOtherObjectReference) {
return PBJ._PBJ.CastUuid(super.OtherObjectReference);
} else {
return PBJ._PBJ.CastUuid();
}
}
set {
super.OtherObjectReference=(PBJ._PBJ.Construct(value));
}
}
}
}
}
namespace Sirikata.Physics.Protocol {
public class CollisionEnd : PBJ.IMessage {
protected _PBJ_Internal.CollisionEnd super;
public _PBJ_Internal.CollisionEnd _PBJSuper{ get { return super;} }
public CollisionEnd() {
super=new _PBJ_Internal.CollisionEnd();
}
public CollisionEnd(_PBJ_Internal.CollisionEnd reference) {
super=reference;
}
public static CollisionEnd defaultInstance= new CollisionEnd (_PBJ_Internal.CollisionEnd.DefaultInstance);
public static CollisionEnd DefaultInstance{
get {return defaultInstance;}
}
public static pbd.MessageDescriptor Descriptor {
get { return _PBJ_Internal.CollisionEnd.Descriptor; } }
public static class Types {
}
public static bool WithinReservedFieldTagRange(int field_tag) {
return false;
}
public static bool WithinExtensionFieldTagRange(int field_tag) {
return false;
}
public const int TimestampFieldTag=2;
public bool HasTimestamp{ get {return super.HasTimestamp&&PBJ._PBJ.ValidateTime(super.Timestamp);} }
public PBJ.Time Timestamp{ get {
if (HasTimestamp) {
return PBJ._PBJ.CastTime(super.Timestamp);
} else {
return PBJ._PBJ.CastTime();
}
}
}
public const int OtherObjectReferenceFieldTag=6;
public bool HasOtherObjectReference{ get {return super.HasOtherObjectReference&&PBJ._PBJ.ValidateUuid(super.OtherObjectReference);} }
public PBJ.UUID OtherObjectReference{ get {
if (HasOtherObjectReference) {
return PBJ._PBJ.CastUuid(super.OtherObjectReference);
} else {
return PBJ._PBJ.CastUuid();
}
}
}
public override Google.ProtocolBuffers.IMessage _PBJISuper { get { return super; } }
public override PBJ.IMessage.IBuilder WeakCreateBuilderForType() { return new Builder(); }
public static Builder CreateBuilder() { return new Builder(); }
public static Builder CreateBuilder(CollisionEnd prototype) {
return (Builder)new Builder().MergeFrom(prototype);
}
public static CollisionEnd ParseFrom(pb::ByteString data) {
return new CollisionEnd(_PBJ_Internal.CollisionEnd.ParseFrom(data));
}
public static CollisionEnd ParseFrom(pb::ByteString data, pb::ExtensionRegistry er) {
return new CollisionEnd(_PBJ_Internal.CollisionEnd.ParseFrom(data,er));
}
public static CollisionEnd ParseFrom(byte[] data) {
return new CollisionEnd(_PBJ_Internal.CollisionEnd.ParseFrom(data));
}
public static CollisionEnd ParseFrom(byte[] data, pb::ExtensionRegistry er) {
return new CollisionEnd(_PBJ_Internal.CollisionEnd.ParseFrom(data,er));
}
public static CollisionEnd ParseFrom(global::System.IO.Stream data) {
return new CollisionEnd(_PBJ_Internal.CollisionEnd.ParseFrom(data));
}
public static CollisionEnd ParseFrom(global::System.IO.Stream data, pb::ExtensionRegistry er) {
return new CollisionEnd(_PBJ_Internal.CollisionEnd.ParseFrom(data,er));
}
public static CollisionEnd ParseFrom(pb::CodedInputStream data) {
return new CollisionEnd(_PBJ_Internal.CollisionEnd.ParseFrom(data));
}
public static CollisionEnd ParseFrom(pb::CodedInputStream data, pb::ExtensionRegistry er) {
return new CollisionEnd(_PBJ_Internal.CollisionEnd.ParseFrom(data,er));
}
protected override bool _HasAllPBJFields{ get {
return true
;
} }
public bool IsInitialized { get {
return super.IsInitialized&&_HasAllPBJFields;
} }
public class Builder : global::PBJ.IMessage.IBuilder{
protected override bool _HasAllPBJFields{ get {
return true
;
} }
public bool IsInitialized { get {
return super.IsInitialized&&_HasAllPBJFields;
} }
protected _PBJ_Internal.CollisionEnd.Builder super;
public override Google.ProtocolBuffers.IBuilder _PBJISuper { get { return super; } }
public _PBJ_Internal.CollisionEnd.Builder _PBJSuper{ get { return super;} }
public Builder() {super = new _PBJ_Internal.CollisionEnd.Builder();}
public Builder(_PBJ_Internal.CollisionEnd.Builder other) {
super=other;
}
public Builder Clone() {return new Builder(super.Clone());}
public Builder MergeFrom(CollisionEnd prototype) { super.MergeFrom(prototype._PBJSuper);return this;}
public Builder Clear() {super.Clear();return this;}
public CollisionEnd BuildPartial() {return new CollisionEnd(super.BuildPartial());}
public CollisionEnd Build() {if (_HasAllPBJFields) return new CollisionEnd(super.Build());return null;}
public pbd::MessageDescriptor DescriptorForType {
get { return CollisionEnd.Descriptor; } }
public Builder ClearTimestamp() { super.ClearTimestamp();return this;}
public const int TimestampFieldTag=2;
public bool HasTimestamp{ get {return super.HasTimestamp&&PBJ._PBJ.ValidateTime(super.Timestamp);} }
public PBJ.Time Timestamp{ get {
if (HasTimestamp) {
return PBJ._PBJ.CastTime(super.Timestamp);
} else {
return PBJ._PBJ.CastTime();
}
}
set {
super.Timestamp=(PBJ._PBJ.Construct(value));
}
}
public Builder ClearOtherObjectReference() { super.ClearOtherObjectReference();return this;}
public const int OtherObjectReferenceFieldTag=6;
public bool HasOtherObjectReference{ get {return super.HasOtherObjectReference&&PBJ._PBJ.ValidateUuid(super.OtherObjectReference);} }
public PBJ.UUID OtherObjectReference{ get {
if (HasOtherObjectReference) {
return PBJ._PBJ.CastUuid(super.OtherObjectReference);
} else {
return PBJ._PBJ.CastUuid();
}
}
set {
super.OtherObjectReference=(PBJ._PBJ.Construct(value));
}
}
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,856 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
using pb = global::Google.ProtocolBuffers;
using pbc = global::Google.ProtocolBuffers.Collections;
using pbd = global::Google.ProtocolBuffers.Descriptors;
using scg = global::System.Collections.Generic;
namespace Sirikata.Subscription.Protocol._PBJ_Internal {
public static partial class Subscription {
#region Extension registration
public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
}
#endregion
#region Static variables
internal static pbd::MessageDescriptor internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Address__Descriptor;
internal static pb::FieldAccess.FieldAccessorTable<global::Sirikata.Subscription.Protocol._PBJ_Internal.Address, global::Sirikata.Subscription.Protocol._PBJ_Internal.Address.Builder> internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Address__FieldAccessorTable;
internal static pbd::MessageDescriptor internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Subscribe__Descriptor;
internal static pb::FieldAccess.FieldAccessorTable<global::Sirikata.Subscription.Protocol._PBJ_Internal.Subscribe, global::Sirikata.Subscription.Protocol._PBJ_Internal.Subscribe.Builder> internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Subscribe__FieldAccessorTable;
internal static pbd::MessageDescriptor internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Broadcast__Descriptor;
internal static pb::FieldAccess.FieldAccessorTable<global::Sirikata.Subscription.Protocol._PBJ_Internal.Broadcast, global::Sirikata.Subscription.Protocol._PBJ_Internal.Broadcast.Builder> internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Broadcast__FieldAccessorTable;
#endregion
#region Descriptor
public static pbd::FileDescriptor Descriptor {
get { return descriptor; }
}
private static pbd::FileDescriptor descriptor;
static Subscription() {
byte[] descriptorData = global::System.Convert.FromBase64String(
"ChJTdWJzY3JpcHRpb24ucHJvdG8SLFNpcmlrYXRhLlN1YnNjcmlwdGlvbi5Q" +
"cm90b2NvbC5fUEJKX0ludGVybmFsIiwKB0FkZHJlc3MSEAoIaG9zdG5hbWUY" +
"ASABKAkSDwoHc2VydmljZRgCIAEoCSKMAQoJU3Vic2NyaWJlElAKEWJyb2Fk" +
"Y2FzdF9hZGRyZXNzGAcgASgLMjUuU2lyaWthdGEuU3Vic2NyaXB0aW9uLlBy" +
"b3RvY29sLl9QQkpfSW50ZXJuYWwuQWRkcmVzcxIWCg5icm9hZGNhc3RfbmFt" +
"ZRgIIAEoDBIVCg11cGRhdGVfcGVyaW9kGAkgASgQIiMKCUJyb2FkY2FzdBIW" +
"Cg5icm9hZGNhc3RfbmFtZRgHIAEoDA==");
pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
descriptor = root;
internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Address__Descriptor = Descriptor.MessageTypes[0];
internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Address__FieldAccessorTable =
new pb::FieldAccess.FieldAccessorTable<global::Sirikata.Subscription.Protocol._PBJ_Internal.Address, global::Sirikata.Subscription.Protocol._PBJ_Internal.Address.Builder>(internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Address__Descriptor,
new string[] { "Hostname", "Service", });
internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Subscribe__Descriptor = Descriptor.MessageTypes[1];
internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Subscribe__FieldAccessorTable =
new pb::FieldAccess.FieldAccessorTable<global::Sirikata.Subscription.Protocol._PBJ_Internal.Subscribe, global::Sirikata.Subscription.Protocol._PBJ_Internal.Subscribe.Builder>(internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Subscribe__Descriptor,
new string[] { "BroadcastAddress", "BroadcastName", "UpdatePeriod", });
internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Broadcast__Descriptor = Descriptor.MessageTypes[2];
internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Broadcast__FieldAccessorTable =
new pb::FieldAccess.FieldAccessorTable<global::Sirikata.Subscription.Protocol._PBJ_Internal.Broadcast, global::Sirikata.Subscription.Protocol._PBJ_Internal.Broadcast.Builder>(internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Broadcast__Descriptor,
new string[] { "BroadcastName", });
return null;
};
pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
new pbd::FileDescriptor[] {
}, assigner);
}
#endregion
}
#region Messages
public sealed partial class Address : pb::GeneratedMessage<Address, Address.Builder> {
private static readonly Address defaultInstance = new Builder().BuildPartial();
public static Address DefaultInstance {
get { return defaultInstance; }
}
public override Address DefaultInstanceForType {
get { return defaultInstance; }
}
protected override Address ThisMessage {
get { return this; }
}
public static pbd::MessageDescriptor Descriptor {
get { return global::Sirikata.Subscription.Protocol._PBJ_Internal.Subscription.internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Address__Descriptor; }
}
protected override pb::FieldAccess.FieldAccessorTable<Address, Address.Builder> InternalFieldAccessors {
get { return global::Sirikata.Subscription.Protocol._PBJ_Internal.Subscription.internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Address__FieldAccessorTable; }
}
public const int HostnameFieldNumber = 1;
private bool hasHostname;
private string hostname_ = "";
public bool HasHostname {
get { return hasHostname; }
}
public string Hostname {
get { return hostname_; }
}
public const int ServiceFieldNumber = 2;
private bool hasService;
private string service_ = "";
public bool HasService {
get { return hasService; }
}
public string Service {
get { return service_; }
}
public override bool IsInitialized {
get {
return true;
}
}
public override void WriteTo(pb::CodedOutputStream output) {
if (HasHostname) {
output.WriteString(1, Hostname);
}
if (HasService) {
output.WriteString(2, Service);
}
UnknownFields.WriteTo(output);
}
private int memoizedSerializedSize = -1;
public override int SerializedSize {
get {
int size = memoizedSerializedSize;
if (size != -1) return size;
size = 0;
if (HasHostname) {
size += pb::CodedOutputStream.ComputeStringSize(1, Hostname);
}
if (HasService) {
size += pb::CodedOutputStream.ComputeStringSize(2, Service);
}
size += UnknownFields.SerializedSize;
memoizedSerializedSize = size;
return size;
}
}
public static Address ParseFrom(pb::ByteString data) {
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
}
public static Address ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
}
public static Address ParseFrom(byte[] data) {
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
}
public static Address ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
}
public static Address ParseFrom(global::System.IO.Stream input) {
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
}
public static Address ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
}
public static Address ParseDelimitedFrom(global::System.IO.Stream input) {
return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
}
public static Address ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
}
public static Address ParseFrom(pb::CodedInputStream input) {
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
}
public static Address ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
}
public static Builder CreateBuilder() { return new Builder(); }
public override Builder ToBuilder() { return CreateBuilder(this); }
public override Builder CreateBuilderForType() { return new Builder(); }
public static Builder CreateBuilder(Address prototype) {
return (Builder) new Builder().MergeFrom(prototype);
}
public sealed partial class Builder : pb::GeneratedBuilder<Address, Builder> {
protected override Builder ThisBuilder {
get { return this; }
}
public Builder() {}
Address result = new Address();
protected override Address MessageBeingBuilt {
get { return result; }
}
public override Builder Clear() {
result = new Address();
return this;
}
public override Builder Clone() {
return new Builder().MergeFrom(result);
}
public override pbd::MessageDescriptor DescriptorForType {
get { return global::Sirikata.Subscription.Protocol._PBJ_Internal.Address.Descriptor; }
}
public override Address DefaultInstanceForType {
get { return global::Sirikata.Subscription.Protocol._PBJ_Internal.Address.DefaultInstance; }
}
public override Address BuildPartial() {
if (result == null) {
throw new global::System.InvalidOperationException("build() has already been called on this Builder");
}
Address returnMe = result;
result = null;
return returnMe;
}
public override Builder MergeFrom(pb::IMessage other) {
if (other is Address) {
return MergeFrom((Address) other);
} else {
base.MergeFrom(other);
return this;
}
}
public override Builder MergeFrom(Address other) {
if (other == global::Sirikata.Subscription.Protocol._PBJ_Internal.Address.DefaultInstance) return this;
if (other.HasHostname) {
Hostname = other.Hostname;
}
if (other.HasService) {
Service = other.Service;
}
this.MergeUnknownFields(other.UnknownFields);
return this;
}
public override Builder MergeFrom(pb::CodedInputStream input) {
return MergeFrom(input, pb::ExtensionRegistry.Empty);
}
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null;
while (true) {
uint tag = input.ReadTag();
switch (tag) {
case 0: {
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
}
default: {
if (pb::WireFormat.IsEndGroupTag(tag)) {
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
}
if (unknownFields == null) {
unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
}
ParseUnknownField(input, unknownFields, extensionRegistry, tag);
break;
}
case 10: {
Hostname = input.ReadString();
break;
}
case 18: {
Service = input.ReadString();
break;
}
}
}
}
public bool HasHostname {
get { return result.HasHostname; }
}
public string Hostname {
get { return result.Hostname; }
set { SetHostname(value); }
}
public Builder SetHostname(string value) {
pb::ThrowHelper.ThrowIfNull(value, "value");
result.hasHostname = true;
result.hostname_ = value;
return this;
}
public Builder ClearHostname() {
result.hasHostname = false;
result.hostname_ = "";
return this;
}
public bool HasService {
get { return result.HasService; }
}
public string Service {
get { return result.Service; }
set { SetService(value); }
}
public Builder SetService(string value) {
pb::ThrowHelper.ThrowIfNull(value, "value");
result.hasService = true;
result.service_ = value;
return this;
}
public Builder ClearService() {
result.hasService = false;
result.service_ = "";
return this;
}
}
static Address() {
object.ReferenceEquals(global::Sirikata.Subscription.Protocol._PBJ_Internal.Subscription.Descriptor, null);
}
}
public sealed partial class Subscribe : pb::GeneratedMessage<Subscribe, Subscribe.Builder> {
private static readonly Subscribe defaultInstance = new Builder().BuildPartial();
public static Subscribe DefaultInstance {
get { return defaultInstance; }
}
public override Subscribe DefaultInstanceForType {
get { return defaultInstance; }
}
protected override Subscribe ThisMessage {
get { return this; }
}
public static pbd::MessageDescriptor Descriptor {
get { return global::Sirikata.Subscription.Protocol._PBJ_Internal.Subscription.internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Subscribe__Descriptor; }
}
protected override pb::FieldAccess.FieldAccessorTable<Subscribe, Subscribe.Builder> InternalFieldAccessors {
get { return global::Sirikata.Subscription.Protocol._PBJ_Internal.Subscription.internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Subscribe__FieldAccessorTable; }
}
public const int BroadcastAddressFieldNumber = 7;
private bool hasBroadcastAddress;
private global::Sirikata.Subscription.Protocol._PBJ_Internal.Address broadcastAddress_ = global::Sirikata.Subscription.Protocol._PBJ_Internal.Address.DefaultInstance;
public bool HasBroadcastAddress {
get { return hasBroadcastAddress; }
}
public global::Sirikata.Subscription.Protocol._PBJ_Internal.Address BroadcastAddress {
get { return broadcastAddress_; }
}
public const int BroadcastNameFieldNumber = 8;
private bool hasBroadcastName;
private pb::ByteString broadcastName_ = pb::ByteString.Empty;
public bool HasBroadcastName {
get { return hasBroadcastName; }
}
public pb::ByteString BroadcastName {
get { return broadcastName_; }
}
public const int UpdatePeriodFieldNumber = 9;
private bool hasUpdatePeriod;
private long updatePeriod_ = 0;
public bool HasUpdatePeriod {
get { return hasUpdatePeriod; }
}
public long UpdatePeriod {
get { return updatePeriod_; }
}
public override bool IsInitialized {
get {
return true;
}
}
public override void WriteTo(pb::CodedOutputStream output) {
if (HasBroadcastAddress) {
output.WriteMessage(7, BroadcastAddress);
}
if (HasBroadcastName) {
output.WriteBytes(8, BroadcastName);
}
if (HasUpdatePeriod) {
output.WriteSFixed64(9, UpdatePeriod);
}
UnknownFields.WriteTo(output);
}
private int memoizedSerializedSize = -1;
public override int SerializedSize {
get {
int size = memoizedSerializedSize;
if (size != -1) return size;
size = 0;
if (HasBroadcastAddress) {
size += pb::CodedOutputStream.ComputeMessageSize(7, BroadcastAddress);
}
if (HasBroadcastName) {
size += pb::CodedOutputStream.ComputeBytesSize(8, BroadcastName);
}
if (HasUpdatePeriod) {
size += pb::CodedOutputStream.ComputeSFixed64Size(9, UpdatePeriod);
}
size += UnknownFields.SerializedSize;
memoizedSerializedSize = size;
return size;
}
}
public static Subscribe ParseFrom(pb::ByteString data) {
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
}
public static Subscribe ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
}
public static Subscribe ParseFrom(byte[] data) {
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
}
public static Subscribe ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
}
public static Subscribe ParseFrom(global::System.IO.Stream input) {
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
}
public static Subscribe ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
}
public static Subscribe ParseDelimitedFrom(global::System.IO.Stream input) {
return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
}
public static Subscribe ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
}
public static Subscribe ParseFrom(pb::CodedInputStream input) {
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
}
public static Subscribe ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
}
public static Builder CreateBuilder() { return new Builder(); }
public override Builder ToBuilder() { return CreateBuilder(this); }
public override Builder CreateBuilderForType() { return new Builder(); }
public static Builder CreateBuilder(Subscribe prototype) {
return (Builder) new Builder().MergeFrom(prototype);
}
public sealed partial class Builder : pb::GeneratedBuilder<Subscribe, Builder> {
protected override Builder ThisBuilder {
get { return this; }
}
public Builder() {}
Subscribe result = new Subscribe();
protected override Subscribe MessageBeingBuilt {
get { return result; }
}
public override Builder Clear() {
result = new Subscribe();
return this;
}
public override Builder Clone() {
return new Builder().MergeFrom(result);
}
public override pbd::MessageDescriptor DescriptorForType {
get { return global::Sirikata.Subscription.Protocol._PBJ_Internal.Subscribe.Descriptor; }
}
public override Subscribe DefaultInstanceForType {
get { return global::Sirikata.Subscription.Protocol._PBJ_Internal.Subscribe.DefaultInstance; }
}
public override Subscribe BuildPartial() {
if (result == null) {
throw new global::System.InvalidOperationException("build() has already been called on this Builder");
}
Subscribe returnMe = result;
result = null;
return returnMe;
}
public override Builder MergeFrom(pb::IMessage other) {
if (other is Subscribe) {
return MergeFrom((Subscribe) other);
} else {
base.MergeFrom(other);
return this;
}
}
public override Builder MergeFrom(Subscribe other) {
if (other == global::Sirikata.Subscription.Protocol._PBJ_Internal.Subscribe.DefaultInstance) return this;
if (other.HasBroadcastAddress) {
MergeBroadcastAddress(other.BroadcastAddress);
}
if (other.HasBroadcastName) {
BroadcastName = other.BroadcastName;
}
if (other.HasUpdatePeriod) {
UpdatePeriod = other.UpdatePeriod;
}
this.MergeUnknownFields(other.UnknownFields);
return this;
}
public override Builder MergeFrom(pb::CodedInputStream input) {
return MergeFrom(input, pb::ExtensionRegistry.Empty);
}
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null;
while (true) {
uint tag = input.ReadTag();
switch (tag) {
case 0: {
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
}
default: {
if (pb::WireFormat.IsEndGroupTag(tag)) {
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
}
if (unknownFields == null) {
unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
}
ParseUnknownField(input, unknownFields, extensionRegistry, tag);
break;
}
case 58: {
global::Sirikata.Subscription.Protocol._PBJ_Internal.Address.Builder subBuilder = global::Sirikata.Subscription.Protocol._PBJ_Internal.Address.CreateBuilder();
if (HasBroadcastAddress) {
subBuilder.MergeFrom(BroadcastAddress);
}
input.ReadMessage(subBuilder, extensionRegistry);
BroadcastAddress = subBuilder.BuildPartial();
break;
}
case 66: {
BroadcastName = input.ReadBytes();
break;
}
case 73: {
UpdatePeriod = input.ReadSFixed64();
break;
}
}
}
}
public bool HasBroadcastAddress {
get { return result.HasBroadcastAddress; }
}
public global::Sirikata.Subscription.Protocol._PBJ_Internal.Address BroadcastAddress {
get { return result.BroadcastAddress; }
set { SetBroadcastAddress(value); }
}
public Builder SetBroadcastAddress(global::Sirikata.Subscription.Protocol._PBJ_Internal.Address value) {
pb::ThrowHelper.ThrowIfNull(value, "value");
result.hasBroadcastAddress = true;
result.broadcastAddress_ = value;
return this;
}
public Builder SetBroadcastAddress(global::Sirikata.Subscription.Protocol._PBJ_Internal.Address.Builder builderForValue) {
pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue");
result.hasBroadcastAddress = true;
result.broadcastAddress_ = builderForValue.Build();
return this;
}
public Builder MergeBroadcastAddress(global::Sirikata.Subscription.Protocol._PBJ_Internal.Address value) {
pb::ThrowHelper.ThrowIfNull(value, "value");
if (result.HasBroadcastAddress &&
result.broadcastAddress_ != global::Sirikata.Subscription.Protocol._PBJ_Internal.Address.DefaultInstance) {
result.broadcastAddress_ = global::Sirikata.Subscription.Protocol._PBJ_Internal.Address.CreateBuilder(result.broadcastAddress_).MergeFrom(value).BuildPartial();
} else {
result.broadcastAddress_ = value;
}
result.hasBroadcastAddress = true;
return this;
}
public Builder ClearBroadcastAddress() {
result.hasBroadcastAddress = false;
result.broadcastAddress_ = global::Sirikata.Subscription.Protocol._PBJ_Internal.Address.DefaultInstance;
return this;
}
public bool HasBroadcastName {
get { return result.HasBroadcastName; }
}
public pb::ByteString BroadcastName {
get { return result.BroadcastName; }
set { SetBroadcastName(value); }
}
public Builder SetBroadcastName(pb::ByteString value) {
pb::ThrowHelper.ThrowIfNull(value, "value");
result.hasBroadcastName = true;
result.broadcastName_ = value;
return this;
}
public Builder ClearBroadcastName() {
result.hasBroadcastName = false;
result.broadcastName_ = pb::ByteString.Empty;
return this;
}
public bool HasUpdatePeriod {
get { return result.HasUpdatePeriod; }
}
public long UpdatePeriod {
get { return result.UpdatePeriod; }
set { SetUpdatePeriod(value); }
}
public Builder SetUpdatePeriod(long value) {
result.hasUpdatePeriod = true;
result.updatePeriod_ = value;
return this;
}
public Builder ClearUpdatePeriod() {
result.hasUpdatePeriod = false;
result.updatePeriod_ = 0;
return this;
}
}
static Subscribe() {
object.ReferenceEquals(global::Sirikata.Subscription.Protocol._PBJ_Internal.Subscription.Descriptor, null);
}
}
public sealed partial class Broadcast : pb::GeneratedMessage<Broadcast, Broadcast.Builder> {
private static readonly Broadcast defaultInstance = new Builder().BuildPartial();
public static Broadcast DefaultInstance {
get { return defaultInstance; }
}
public override Broadcast DefaultInstanceForType {
get { return defaultInstance; }
}
protected override Broadcast ThisMessage {
get { return this; }
}
public static pbd::MessageDescriptor Descriptor {
get { return global::Sirikata.Subscription.Protocol._PBJ_Internal.Subscription.internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Broadcast__Descriptor; }
}
protected override pb::FieldAccess.FieldAccessorTable<Broadcast, Broadcast.Builder> InternalFieldAccessors {
get { return global::Sirikata.Subscription.Protocol._PBJ_Internal.Subscription.internal__static_Sirikata_Subscription_Protocol__PBJ_Internal_Broadcast__FieldAccessorTable; }
}
public const int BroadcastNameFieldNumber = 7;
private bool hasBroadcastName;
private pb::ByteString broadcastName_ = pb::ByteString.Empty;
public bool HasBroadcastName {
get { return hasBroadcastName; }
}
public pb::ByteString BroadcastName {
get { return broadcastName_; }
}
public override bool IsInitialized {
get {
return true;
}
}
public override void WriteTo(pb::CodedOutputStream output) {
if (HasBroadcastName) {
output.WriteBytes(7, BroadcastName);
}
UnknownFields.WriteTo(output);
}
private int memoizedSerializedSize = -1;
public override int SerializedSize {
get {
int size = memoizedSerializedSize;
if (size != -1) return size;
size = 0;
if (HasBroadcastName) {
size += pb::CodedOutputStream.ComputeBytesSize(7, BroadcastName);
}
size += UnknownFields.SerializedSize;
memoizedSerializedSize = size;
return size;
}
}
public static Broadcast ParseFrom(pb::ByteString data) {
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
}
public static Broadcast ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
}
public static Broadcast ParseFrom(byte[] data) {
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
}
public static Broadcast ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
}
public static Broadcast ParseFrom(global::System.IO.Stream input) {
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
}
public static Broadcast ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
}
public static Broadcast ParseDelimitedFrom(global::System.IO.Stream input) {
return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
}
public static Broadcast ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
}
public static Broadcast ParseFrom(pb::CodedInputStream input) {
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
}
public static Broadcast ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
}
public static Builder CreateBuilder() { return new Builder(); }
public override Builder ToBuilder() { return CreateBuilder(this); }
public override Builder CreateBuilderForType() { return new Builder(); }
public static Builder CreateBuilder(Broadcast prototype) {
return (Builder) new Builder().MergeFrom(prototype);
}
public sealed partial class Builder : pb::GeneratedBuilder<Broadcast, Builder> {
protected override Builder ThisBuilder {
get { return this; }
}
public Builder() {}
Broadcast result = new Broadcast();
protected override Broadcast MessageBeingBuilt {
get { return result; }
}
public override Builder Clear() {
result = new Broadcast();
return this;
}
public override Builder Clone() {
return new Builder().MergeFrom(result);
}
public override pbd::MessageDescriptor DescriptorForType {
get { return global::Sirikata.Subscription.Protocol._PBJ_Internal.Broadcast.Descriptor; }
}
public override Broadcast DefaultInstanceForType {
get { return global::Sirikata.Subscription.Protocol._PBJ_Internal.Broadcast.DefaultInstance; }
}
public override Broadcast BuildPartial() {
if (result == null) {
throw new global::System.InvalidOperationException("build() has already been called on this Builder");
}
Broadcast returnMe = result;
result = null;
return returnMe;
}
public override Builder MergeFrom(pb::IMessage other) {
if (other is Broadcast) {
return MergeFrom((Broadcast) other);
} else {
base.MergeFrom(other);
return this;
}
}
public override Builder MergeFrom(Broadcast other) {
if (other == global::Sirikata.Subscription.Protocol._PBJ_Internal.Broadcast.DefaultInstance) return this;
if (other.HasBroadcastName) {
BroadcastName = other.BroadcastName;
}
this.MergeUnknownFields(other.UnknownFields);
return this;
}
public override Builder MergeFrom(pb::CodedInputStream input) {
return MergeFrom(input, pb::ExtensionRegistry.Empty);
}
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null;
while (true) {
uint tag = input.ReadTag();
switch (tag) {
case 0: {
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
}
default: {
if (pb::WireFormat.IsEndGroupTag(tag)) {
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
}
if (unknownFields == null) {
unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
}
ParseUnknownField(input, unknownFields, extensionRegistry, tag);
break;
}
case 58: {
BroadcastName = input.ReadBytes();
break;
}
}
}
}
public bool HasBroadcastName {
get { return result.HasBroadcastName; }
}
public pb::ByteString BroadcastName {
get { return result.BroadcastName; }
set { SetBroadcastName(value); }
}
public Builder SetBroadcastName(pb::ByteString value) {
pb::ThrowHelper.ThrowIfNull(value, "value");
result.hasBroadcastName = true;
result.broadcastName_ = value;
return this;
}
public Builder ClearBroadcastName() {
result.hasBroadcastName = false;
result.broadcastName_ = pb::ByteString.Empty;
return this;
}
}
static Broadcast() {
object.ReferenceEquals(global::Sirikata.Subscription.Protocol._PBJ_Internal.Subscription.Descriptor, null);
}
}
#endregion
}

View File

@@ -0,0 +1,431 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using pbd = global::Google.ProtocolBuffers.Descriptors;
using pb = global::Google.ProtocolBuffers;
namespace Sirikata.Subscription.Protocol {
public class Address : PBJ.IMessage {
protected _PBJ_Internal.Address super;
public _PBJ_Internal.Address _PBJSuper{ get { return super;} }
public Address() {
super=new _PBJ_Internal.Address();
}
public Address(_PBJ_Internal.Address reference) {
super=reference;
}
public static Address defaultInstance= new Address (_PBJ_Internal.Address.DefaultInstance);
public static Address DefaultInstance{
get {return defaultInstance;}
}
public static pbd.MessageDescriptor Descriptor {
get { return _PBJ_Internal.Address.Descriptor; } }
public static class Types {
}
public static bool WithinReservedFieldTagRange(int field_tag) {
return false;
}
public static bool WithinExtensionFieldTagRange(int field_tag) {
return false;
}
public const int HostnameFieldTag=1;
public bool HasHostname{ get {return super.HasHostname&&PBJ._PBJ.ValidateString(super.Hostname);} }
public string Hostname{ get {
if (HasHostname) {
return PBJ._PBJ.CastString(super.Hostname);
} else {
return PBJ._PBJ.CastString();
}
}
}
public const int ServiceFieldTag=2;
public bool HasService{ get {return super.HasService&&PBJ._PBJ.ValidateString(super.Service);} }
public string Service{ get {
if (HasService) {
return PBJ._PBJ.CastString(super.Service);
} else {
return PBJ._PBJ.CastString();
}
}
}
public override Google.ProtocolBuffers.IMessage _PBJISuper { get { return super; } }
public override PBJ.IMessage.IBuilder WeakCreateBuilderForType() { return new Builder(); }
public static Builder CreateBuilder() { return new Builder(); }
public static Builder CreateBuilder(Address prototype) {
return (Builder)new Builder().MergeFrom(prototype);
}
public static Address ParseFrom(pb::ByteString data) {
return new Address(_PBJ_Internal.Address.ParseFrom(data));
}
public static Address ParseFrom(pb::ByteString data, pb::ExtensionRegistry er) {
return new Address(_PBJ_Internal.Address.ParseFrom(data,er));
}
public static Address ParseFrom(byte[] data) {
return new Address(_PBJ_Internal.Address.ParseFrom(data));
}
public static Address ParseFrom(byte[] data, pb::ExtensionRegistry er) {
return new Address(_PBJ_Internal.Address.ParseFrom(data,er));
}
public static Address ParseFrom(global::System.IO.Stream data) {
return new Address(_PBJ_Internal.Address.ParseFrom(data));
}
public static Address ParseFrom(global::System.IO.Stream data, pb::ExtensionRegistry er) {
return new Address(_PBJ_Internal.Address.ParseFrom(data,er));
}
public static Address ParseFrom(pb::CodedInputStream data) {
return new Address(_PBJ_Internal.Address.ParseFrom(data));
}
public static Address ParseFrom(pb::CodedInputStream data, pb::ExtensionRegistry er) {
return new Address(_PBJ_Internal.Address.ParseFrom(data,er));
}
protected override bool _HasAllPBJFields{ get {
return true
;
} }
public bool IsInitialized { get {
return super.IsInitialized&&_HasAllPBJFields;
} }
public class Builder : global::PBJ.IMessage.IBuilder{
protected override bool _HasAllPBJFields{ get {
return true
;
} }
public bool IsInitialized { get {
return super.IsInitialized&&_HasAllPBJFields;
} }
protected _PBJ_Internal.Address.Builder super;
public override Google.ProtocolBuffers.IBuilder _PBJISuper { get { return super; } }
public _PBJ_Internal.Address.Builder _PBJSuper{ get { return super;} }
public Builder() {super = new _PBJ_Internal.Address.Builder();}
public Builder(_PBJ_Internal.Address.Builder other) {
super=other;
}
public Builder Clone() {return new Builder(super.Clone());}
public Builder MergeFrom(Address prototype) { super.MergeFrom(prototype._PBJSuper);return this;}
public Builder Clear() {super.Clear();return this;}
public Address BuildPartial() {return new Address(super.BuildPartial());}
public Address Build() {if (_HasAllPBJFields) return new Address(super.Build());return null;}
public pbd::MessageDescriptor DescriptorForType {
get { return Address.Descriptor; } }
public Builder ClearHostname() { super.ClearHostname();return this;}
public const int HostnameFieldTag=1;
public bool HasHostname{ get {return super.HasHostname&&PBJ._PBJ.ValidateString(super.Hostname);} }
public string Hostname{ get {
if (HasHostname) {
return PBJ._PBJ.CastString(super.Hostname);
} else {
return PBJ._PBJ.CastString();
}
}
set {
super.Hostname=(PBJ._PBJ.Construct(value));
}
}
public Builder ClearService() { super.ClearService();return this;}
public const int ServiceFieldTag=2;
public bool HasService{ get {return super.HasService&&PBJ._PBJ.ValidateString(super.Service);} }
public string Service{ get {
if (HasService) {
return PBJ._PBJ.CastString(super.Service);
} else {
return PBJ._PBJ.CastString();
}
}
set {
super.Service=(PBJ._PBJ.Construct(value));
}
}
}
}
}
namespace Sirikata.Subscription.Protocol {
public class Subscribe : PBJ.IMessage {
protected _PBJ_Internal.Subscribe super;
public _PBJ_Internal.Subscribe _PBJSuper{ get { return super;} }
public Subscribe() {
super=new _PBJ_Internal.Subscribe();
}
public Subscribe(_PBJ_Internal.Subscribe reference) {
super=reference;
}
public static Subscribe defaultInstance= new Subscribe (_PBJ_Internal.Subscribe.DefaultInstance);
public static Subscribe DefaultInstance{
get {return defaultInstance;}
}
public static pbd.MessageDescriptor Descriptor {
get { return _PBJ_Internal.Subscribe.Descriptor; } }
public static class Types {
}
public static bool WithinReservedFieldTagRange(int field_tag) {
return false||(field_tag>=1&&field_tag<=6)||(field_tag>=1536&&field_tag<=2560)||(field_tag>=229376&&field_tag<=294912);
}
public static bool WithinExtensionFieldTagRange(int field_tag) {
return false;
}
public const int BroadcastAddressFieldTag=7;
public bool HasBroadcastAddress{ get {return super.HasBroadcastAddress;} }
public Address BroadcastAddress{ get {
if (HasBroadcastAddress) {
return new Address(super.BroadcastAddress);
} else {
return new Address();
}
}
}
public const int BroadcastNameFieldTag=8;
public bool HasBroadcastName{ get {return super.HasBroadcastName&&PBJ._PBJ.ValidateUuid(super.BroadcastName);} }
public PBJ.UUID BroadcastName{ get {
if (HasBroadcastName) {
return PBJ._PBJ.CastUuid(super.BroadcastName);
} else {
return PBJ._PBJ.CastUuid();
}
}
}
public const int UpdatePeriodFieldTag=9;
public bool HasUpdatePeriod{ get {return super.HasUpdatePeriod&&PBJ._PBJ.ValidateDuration(super.UpdatePeriod);} }
public PBJ.Duration UpdatePeriod{ get {
if (HasUpdatePeriod) {
return PBJ._PBJ.CastDuration(super.UpdatePeriod);
} else {
return PBJ._PBJ.CastDuration();
}
}
}
public override Google.ProtocolBuffers.IMessage _PBJISuper { get { return super; } }
public override PBJ.IMessage.IBuilder WeakCreateBuilderForType() { return new Builder(); }
public static Builder CreateBuilder() { return new Builder(); }
public static Builder CreateBuilder(Subscribe prototype) {
return (Builder)new Builder().MergeFrom(prototype);
}
public static Subscribe ParseFrom(pb::ByteString data) {
return new Subscribe(_PBJ_Internal.Subscribe.ParseFrom(data));
}
public static Subscribe ParseFrom(pb::ByteString data, pb::ExtensionRegistry er) {
return new Subscribe(_PBJ_Internal.Subscribe.ParseFrom(data,er));
}
public static Subscribe ParseFrom(byte[] data) {
return new Subscribe(_PBJ_Internal.Subscribe.ParseFrom(data));
}
public static Subscribe ParseFrom(byte[] data, pb::ExtensionRegistry er) {
return new Subscribe(_PBJ_Internal.Subscribe.ParseFrom(data,er));
}
public static Subscribe ParseFrom(global::System.IO.Stream data) {
return new Subscribe(_PBJ_Internal.Subscribe.ParseFrom(data));
}
public static Subscribe ParseFrom(global::System.IO.Stream data, pb::ExtensionRegistry er) {
return new Subscribe(_PBJ_Internal.Subscribe.ParseFrom(data,er));
}
public static Subscribe ParseFrom(pb::CodedInputStream data) {
return new Subscribe(_PBJ_Internal.Subscribe.ParseFrom(data));
}
public static Subscribe ParseFrom(pb::CodedInputStream data, pb::ExtensionRegistry er) {
return new Subscribe(_PBJ_Internal.Subscribe.ParseFrom(data,er));
}
protected override bool _HasAllPBJFields{ get {
return true
;
} }
public bool IsInitialized { get {
return super.IsInitialized&&_HasAllPBJFields;
} }
public class Builder : global::PBJ.IMessage.IBuilder{
protected override bool _HasAllPBJFields{ get {
return true
;
} }
public bool IsInitialized { get {
return super.IsInitialized&&_HasAllPBJFields;
} }
protected _PBJ_Internal.Subscribe.Builder super;
public override Google.ProtocolBuffers.IBuilder _PBJISuper { get { return super; } }
public _PBJ_Internal.Subscribe.Builder _PBJSuper{ get { return super;} }
public Builder() {super = new _PBJ_Internal.Subscribe.Builder();}
public Builder(_PBJ_Internal.Subscribe.Builder other) {
super=other;
}
public Builder Clone() {return new Builder(super.Clone());}
public Builder MergeFrom(Subscribe prototype) { super.MergeFrom(prototype._PBJSuper);return this;}
public Builder Clear() {super.Clear();return this;}
public Subscribe BuildPartial() {return new Subscribe(super.BuildPartial());}
public Subscribe Build() {if (_HasAllPBJFields) return new Subscribe(super.Build());return null;}
public pbd::MessageDescriptor DescriptorForType {
get { return Subscribe.Descriptor; } }
public Builder ClearBroadcastAddress() { super.ClearBroadcastAddress();return this;}
public const int BroadcastAddressFieldTag=7;
public bool HasBroadcastAddress{ get {return super.HasBroadcastAddress;} }
public Address BroadcastAddress{ get {
if (HasBroadcastAddress) {
return new Address(super.BroadcastAddress);
} else {
return new Address();
}
}
set {
super.BroadcastAddress=value._PBJSuper;
}
}
public Builder ClearBroadcastName() { super.ClearBroadcastName();return this;}
public const int BroadcastNameFieldTag=8;
public bool HasBroadcastName{ get {return super.HasBroadcastName&&PBJ._PBJ.ValidateUuid(super.BroadcastName);} }
public PBJ.UUID BroadcastName{ get {
if (HasBroadcastName) {
return PBJ._PBJ.CastUuid(super.BroadcastName);
} else {
return PBJ._PBJ.CastUuid();
}
}
set {
super.BroadcastName=(PBJ._PBJ.Construct(value));
}
}
public Builder ClearUpdatePeriod() { super.ClearUpdatePeriod();return this;}
public const int UpdatePeriodFieldTag=9;
public bool HasUpdatePeriod{ get {return super.HasUpdatePeriod&&PBJ._PBJ.ValidateDuration(super.UpdatePeriod);} }
public PBJ.Duration UpdatePeriod{ get {
if (HasUpdatePeriod) {
return PBJ._PBJ.CastDuration(super.UpdatePeriod);
} else {
return PBJ._PBJ.CastDuration();
}
}
set {
super.UpdatePeriod=(PBJ._PBJ.Construct(value));
}
}
}
}
}
namespace Sirikata.Subscription.Protocol {
public class Broadcast : PBJ.IMessage {
protected _PBJ_Internal.Broadcast super;
public _PBJ_Internal.Broadcast _PBJSuper{ get { return super;} }
public Broadcast() {
super=new _PBJ_Internal.Broadcast();
}
public Broadcast(_PBJ_Internal.Broadcast reference) {
super=reference;
}
public static Broadcast defaultInstance= new Broadcast (_PBJ_Internal.Broadcast.DefaultInstance);
public static Broadcast DefaultInstance{
get {return defaultInstance;}
}
public static pbd.MessageDescriptor Descriptor {
get { return _PBJ_Internal.Broadcast.Descriptor; } }
public static class Types {
}
public static bool WithinReservedFieldTagRange(int field_tag) {
return false||(field_tag>=1&&field_tag<=6)||(field_tag>=1536&&field_tag<=2560)||(field_tag>=229376&&field_tag<=294912);
}
public static bool WithinExtensionFieldTagRange(int field_tag) {
return false;
}
public const int BroadcastNameFieldTag=7;
public bool HasBroadcastName{ get {return super.HasBroadcastName&&PBJ._PBJ.ValidateUuid(super.BroadcastName);} }
public PBJ.UUID BroadcastName{ get {
if (HasBroadcastName) {
return PBJ._PBJ.CastUuid(super.BroadcastName);
} else {
return PBJ._PBJ.CastUuid();
}
}
}
public override Google.ProtocolBuffers.IMessage _PBJISuper { get { return super; } }
public override PBJ.IMessage.IBuilder WeakCreateBuilderForType() { return new Builder(); }
public static Builder CreateBuilder() { return new Builder(); }
public static Builder CreateBuilder(Broadcast prototype) {
return (Builder)new Builder().MergeFrom(prototype);
}
public static Broadcast ParseFrom(pb::ByteString data) {
return new Broadcast(_PBJ_Internal.Broadcast.ParseFrom(data));
}
public static Broadcast ParseFrom(pb::ByteString data, pb::ExtensionRegistry er) {
return new Broadcast(_PBJ_Internal.Broadcast.ParseFrom(data,er));
}
public static Broadcast ParseFrom(byte[] data) {
return new Broadcast(_PBJ_Internal.Broadcast.ParseFrom(data));
}
public static Broadcast ParseFrom(byte[] data, pb::ExtensionRegistry er) {
return new Broadcast(_PBJ_Internal.Broadcast.ParseFrom(data,er));
}
public static Broadcast ParseFrom(global::System.IO.Stream data) {
return new Broadcast(_PBJ_Internal.Broadcast.ParseFrom(data));
}
public static Broadcast ParseFrom(global::System.IO.Stream data, pb::ExtensionRegistry er) {
return new Broadcast(_PBJ_Internal.Broadcast.ParseFrom(data,er));
}
public static Broadcast ParseFrom(pb::CodedInputStream data) {
return new Broadcast(_PBJ_Internal.Broadcast.ParseFrom(data));
}
public static Broadcast ParseFrom(pb::CodedInputStream data, pb::ExtensionRegistry er) {
return new Broadcast(_PBJ_Internal.Broadcast.ParseFrom(data,er));
}
protected override bool _HasAllPBJFields{ get {
return true
;
} }
public bool IsInitialized { get {
return super.IsInitialized&&_HasAllPBJFields;
} }
public class Builder : global::PBJ.IMessage.IBuilder{
protected override bool _HasAllPBJFields{ get {
return true
;
} }
public bool IsInitialized { get {
return super.IsInitialized&&_HasAllPBJFields;
} }
protected _PBJ_Internal.Broadcast.Builder super;
public override Google.ProtocolBuffers.IBuilder _PBJISuper { get { return super; } }
public _PBJ_Internal.Broadcast.Builder _PBJSuper{ get { return super;} }
public Builder() {super = new _PBJ_Internal.Broadcast.Builder();}
public Builder(_PBJ_Internal.Broadcast.Builder other) {
super=other;
}
public Builder Clone() {return new Builder(super.Clone());}
public Builder MergeFrom(Broadcast prototype) { super.MergeFrom(prototype._PBJSuper);return this;}
public Builder Clear() {super.Clear();return this;}
public Broadcast BuildPartial() {return new Broadcast(super.BuildPartial());}
public Broadcast Build() {if (_HasAllPBJFields) return new Broadcast(super.Build());return null;}
public pbd::MessageDescriptor DescriptorForType {
get { return Broadcast.Descriptor; } }
public Builder ClearBroadcastName() { super.ClearBroadcastName();return this;}
public const int BroadcastNameFieldTag=7;
public bool HasBroadcastName{ get {return super.HasBroadcastName&&PBJ._PBJ.ValidateUuid(super.BroadcastName);} }
public PBJ.UUID BroadcastName{ get {
if (HasBroadcastName) {
return PBJ._PBJ.CastUuid(super.BroadcastName);
} else {
return PBJ._PBJ.CastUuid();
}
}
set {
super.BroadcastName=(PBJ._PBJ.Construct(value));
}
}
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,454 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
using pb = global::Google.ProtocolBuffers;
using pbc = global::Google.ProtocolBuffers.Collections;
using pbd = global::Google.ProtocolBuffers.Descriptors;
using scg = global::System.Collections.Generic;
namespace Sirikata.Network.Protocol._PBJ_Internal {
public static partial class Time {
#region Extension registration
public static void RegisterAllExtensions(pb::ExtensionRegistry registry) {
}
#endregion
#region Static variables
internal static pbd::MessageDescriptor internal__static_Sirikata_Network_Protocol__PBJ_Internal_TimeSync__Descriptor;
internal static pb::FieldAccess.FieldAccessorTable<global::Sirikata.Network.Protocol._PBJ_Internal.TimeSync, global::Sirikata.Network.Protocol._PBJ_Internal.TimeSync.Builder> internal__static_Sirikata_Network_Protocol__PBJ_Internal_TimeSync__FieldAccessorTable;
#endregion
#region Descriptor
public static pbd::FileDescriptor Descriptor {
get { return descriptor; }
}
private static pbd::FileDescriptor descriptor;
static Time() {
byte[] descriptorData = global::System.Convert.FromBase64String(
"CgpUaW1lLnByb3RvEidTaXJpa2F0YS5OZXR3b3JrLlByb3RvY29sLl9QQkpf" +
"SW50ZXJuYWwirQEKCFRpbWVTeW5jEhMKC2NsaWVudF90aW1lGAkgASgGEhMK" +
"C3NlcnZlcl90aW1lGAogASgGEhIKCnN5bmNfcm91bmQYCyABKAQSFgoOcmV0" +
"dXJuX29wdGlvbnMYDiABKA0SEwoKcm91bmRfdHJpcBiBFCABKAYiNgoNUmV0" +
"dXJuT3B0aW9ucxISCg5SRVBMWV9SRUxJQUJMRRABEhEKDVJFUExZX09SREVS" +
"RUQQAg==");
pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) {
descriptor = root;
internal__static_Sirikata_Network_Protocol__PBJ_Internal_TimeSync__Descriptor = Descriptor.MessageTypes[0];
internal__static_Sirikata_Network_Protocol__PBJ_Internal_TimeSync__FieldAccessorTable =
new pb::FieldAccess.FieldAccessorTable<global::Sirikata.Network.Protocol._PBJ_Internal.TimeSync, global::Sirikata.Network.Protocol._PBJ_Internal.TimeSync.Builder>(internal__static_Sirikata_Network_Protocol__PBJ_Internal_TimeSync__Descriptor,
new string[] { "ClientTime", "ServerTime", "SyncRound", "ReturnOptions", "RoundTrip", });
return null;
};
pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
new pbd::FileDescriptor[] {
}, assigner);
}
#endregion
}
#region Messages
public sealed partial class TimeSync : pb::GeneratedMessage<TimeSync, TimeSync.Builder> {
private static readonly TimeSync defaultInstance = new Builder().BuildPartial();
public static TimeSync DefaultInstance {
get { return defaultInstance; }
}
public override TimeSync DefaultInstanceForType {
get { return defaultInstance; }
}
protected override TimeSync ThisMessage {
get { return this; }
}
public static pbd::MessageDescriptor Descriptor {
get { return global::Sirikata.Network.Protocol._PBJ_Internal.Time.internal__static_Sirikata_Network_Protocol__PBJ_Internal_TimeSync__Descriptor; }
}
protected override pb::FieldAccess.FieldAccessorTable<TimeSync, TimeSync.Builder> InternalFieldAccessors {
get { return global::Sirikata.Network.Protocol._PBJ_Internal.Time.internal__static_Sirikata_Network_Protocol__PBJ_Internal_TimeSync__FieldAccessorTable; }
}
#region Nested types
public static class Types {
public enum ReturnOptions {
REPLY_RELIABLE = 1,
REPLY_ORDERED = 2,
}
}
#endregion
public const int ClientTimeFieldNumber = 9;
private bool hasClientTime;
private ulong clientTime_ = 0;
public bool HasClientTime {
get { return hasClientTime; }
}
[global::System.CLSCompliant(false)]
public ulong ClientTime {
get { return clientTime_; }
}
public const int ServerTimeFieldNumber = 10;
private bool hasServerTime;
private ulong serverTime_ = 0;
public bool HasServerTime {
get { return hasServerTime; }
}
[global::System.CLSCompliant(false)]
public ulong ServerTime {
get { return serverTime_; }
}
public const int SyncRoundFieldNumber = 11;
private bool hasSyncRound;
private ulong syncRound_ = 0UL;
public bool HasSyncRound {
get { return hasSyncRound; }
}
[global::System.CLSCompliant(false)]
public ulong SyncRound {
get { return syncRound_; }
}
public const int ReturnOptionsFieldNumber = 14;
private bool hasReturnOptions;
private uint returnOptions_ = 0;
public bool HasReturnOptions {
get { return hasReturnOptions; }
}
[global::System.CLSCompliant(false)]
public uint ReturnOptions {
get { return returnOptions_; }
}
public const int RoundTripFieldNumber = 2561;
private bool hasRoundTrip;
private ulong roundTrip_ = 0;
public bool HasRoundTrip {
get { return hasRoundTrip; }
}
[global::System.CLSCompliant(false)]
public ulong RoundTrip {
get { return roundTrip_; }
}
public override bool IsInitialized {
get {
return true;
}
}
public override void WriteTo(pb::CodedOutputStream output) {
if (HasClientTime) {
output.WriteFixed64(9, ClientTime);
}
if (HasServerTime) {
output.WriteFixed64(10, ServerTime);
}
if (HasSyncRound) {
output.WriteUInt64(11, SyncRound);
}
if (HasReturnOptions) {
output.WriteUInt32(14, ReturnOptions);
}
if (HasRoundTrip) {
output.WriteFixed64(2561, RoundTrip);
}
UnknownFields.WriteTo(output);
}
private int memoizedSerializedSize = -1;
public override int SerializedSize {
get {
int size = memoizedSerializedSize;
if (size != -1) return size;
size = 0;
if (HasClientTime) {
size += pb::CodedOutputStream.ComputeFixed64Size(9, ClientTime);
}
if (HasServerTime) {
size += pb::CodedOutputStream.ComputeFixed64Size(10, ServerTime);
}
if (HasSyncRound) {
size += pb::CodedOutputStream.ComputeUInt64Size(11, SyncRound);
}
if (HasReturnOptions) {
size += pb::CodedOutputStream.ComputeUInt32Size(14, ReturnOptions);
}
if (HasRoundTrip) {
size += pb::CodedOutputStream.ComputeFixed64Size(2561, RoundTrip);
}
size += UnknownFields.SerializedSize;
memoizedSerializedSize = size;
return size;
}
}
public static TimeSync ParseFrom(pb::ByteString data) {
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
}
public static TimeSync ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
}
public static TimeSync ParseFrom(byte[] data) {
return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed();
}
public static TimeSync ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed();
}
public static TimeSync ParseFrom(global::System.IO.Stream input) {
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
}
public static TimeSync ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
}
public static TimeSync ParseDelimitedFrom(global::System.IO.Stream input) {
return CreateBuilder().MergeDelimitedFrom(input).BuildParsed();
}
public static TimeSync ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) {
return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed();
}
public static TimeSync ParseFrom(pb::CodedInputStream input) {
return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed();
}
public static TimeSync ParseFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed();
}
public static Builder CreateBuilder() { return new Builder(); }
public override Builder ToBuilder() { return CreateBuilder(this); }
public override Builder CreateBuilderForType() { return new Builder(); }
public static Builder CreateBuilder(TimeSync prototype) {
return (Builder) new Builder().MergeFrom(prototype);
}
public sealed partial class Builder : pb::GeneratedBuilder<TimeSync, Builder> {
protected override Builder ThisBuilder {
get { return this; }
}
public Builder() {}
TimeSync result = new TimeSync();
protected override TimeSync MessageBeingBuilt {
get { return result; }
}
public override Builder Clear() {
result = new TimeSync();
return this;
}
public override Builder Clone() {
return new Builder().MergeFrom(result);
}
public override pbd::MessageDescriptor DescriptorForType {
get { return global::Sirikata.Network.Protocol._PBJ_Internal.TimeSync.Descriptor; }
}
public override TimeSync DefaultInstanceForType {
get { return global::Sirikata.Network.Protocol._PBJ_Internal.TimeSync.DefaultInstance; }
}
public override TimeSync BuildPartial() {
if (result == null) {
throw new global::System.InvalidOperationException("build() has already been called on this Builder");
}
TimeSync returnMe = result;
result = null;
return returnMe;
}
public override Builder MergeFrom(pb::IMessage other) {
if (other is TimeSync) {
return MergeFrom((TimeSync) other);
} else {
base.MergeFrom(other);
return this;
}
}
public override Builder MergeFrom(TimeSync other) {
if (other == global::Sirikata.Network.Protocol._PBJ_Internal.TimeSync.DefaultInstance) return this;
if (other.HasClientTime) {
ClientTime = other.ClientTime;
}
if (other.HasServerTime) {
ServerTime = other.ServerTime;
}
if (other.HasSyncRound) {
SyncRound = other.SyncRound;
}
if (other.HasReturnOptions) {
ReturnOptions = other.ReturnOptions;
}
if (other.HasRoundTrip) {
RoundTrip = other.RoundTrip;
}
this.MergeUnknownFields(other.UnknownFields);
return this;
}
public override Builder MergeFrom(pb::CodedInputStream input) {
return MergeFrom(input, pb::ExtensionRegistry.Empty);
}
public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) {
pb::UnknownFieldSet.Builder unknownFields = null;
while (true) {
uint tag = input.ReadTag();
switch (tag) {
case 0: {
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
}
default: {
if (pb::WireFormat.IsEndGroupTag(tag)) {
if (unknownFields != null) {
this.UnknownFields = unknownFields.Build();
}
return this;
}
if (unknownFields == null) {
unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);
}
ParseUnknownField(input, unknownFields, extensionRegistry, tag);
break;
}
case 73: {
ClientTime = input.ReadFixed64();
break;
}
case 81: {
ServerTime = input.ReadFixed64();
break;
}
case 88: {
SyncRound = input.ReadUInt64();
break;
}
case 112: {
ReturnOptions = input.ReadUInt32();
break;
}
case 20489: {
RoundTrip = input.ReadFixed64();
break;
}
}
}
}
public bool HasClientTime {
get { return result.HasClientTime; }
}
[global::System.CLSCompliant(false)]
public ulong ClientTime {
get { return result.ClientTime; }
set { SetClientTime(value); }
}
[global::System.CLSCompliant(false)]
public Builder SetClientTime(ulong value) {
result.hasClientTime = true;
result.clientTime_ = value;
return this;
}
public Builder ClearClientTime() {
result.hasClientTime = false;
result.clientTime_ = 0;
return this;
}
public bool HasServerTime {
get { return result.HasServerTime; }
}
[global::System.CLSCompliant(false)]
public ulong ServerTime {
get { return result.ServerTime; }
set { SetServerTime(value); }
}
[global::System.CLSCompliant(false)]
public Builder SetServerTime(ulong value) {
result.hasServerTime = true;
result.serverTime_ = value;
return this;
}
public Builder ClearServerTime() {
result.hasServerTime = false;
result.serverTime_ = 0;
return this;
}
public bool HasSyncRound {
get { return result.HasSyncRound; }
}
[global::System.CLSCompliant(false)]
public ulong SyncRound {
get { return result.SyncRound; }
set { SetSyncRound(value); }
}
[global::System.CLSCompliant(false)]
public Builder SetSyncRound(ulong value) {
result.hasSyncRound = true;
result.syncRound_ = value;
return this;
}
public Builder ClearSyncRound() {
result.hasSyncRound = false;
result.syncRound_ = 0UL;
return this;
}
public bool HasReturnOptions {
get { return result.HasReturnOptions; }
}
[global::System.CLSCompliant(false)]
public uint ReturnOptions {
get { return result.ReturnOptions; }
set { SetReturnOptions(value); }
}
[global::System.CLSCompliant(false)]
public Builder SetReturnOptions(uint value) {
result.hasReturnOptions = true;
result.returnOptions_ = value;
return this;
}
public Builder ClearReturnOptions() {
result.hasReturnOptions = false;
result.returnOptions_ = 0;
return this;
}
public bool HasRoundTrip {
get { return result.HasRoundTrip; }
}
[global::System.CLSCompliant(false)]
public ulong RoundTrip {
get { return result.RoundTrip; }
set { SetRoundTrip(value); }
}
[global::System.CLSCompliant(false)]
public Builder SetRoundTrip(ulong value) {
result.hasRoundTrip = true;
result.roundTrip_ = value;
return this;
}
public Builder ClearRoundTrip() {
result.hasRoundTrip = false;
result.roundTrip_ = 0;
return this;
}
}
static TimeSync() {
object.ReferenceEquals(global::Sirikata.Network.Protocol._PBJ_Internal.Time.Descriptor, null);
}
}
#endregion
}

View File

@@ -0,0 +1,245 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using pbd = global::Google.ProtocolBuffers.Descriptors;
using pb = global::Google.ProtocolBuffers;
namespace Sirikata.Network.Protocol {
public class TimeSync : PBJ.IMessage {
protected _PBJ_Internal.TimeSync super;
public _PBJ_Internal.TimeSync _PBJSuper{ get { return super;} }
public TimeSync() {
super=new _PBJ_Internal.TimeSync();
}
public TimeSync(_PBJ_Internal.TimeSync reference) {
super=reference;
}
public static TimeSync defaultInstance= new TimeSync (_PBJ_Internal.TimeSync.DefaultInstance);
public static TimeSync DefaultInstance{
get {return defaultInstance;}
}
public static pbd.MessageDescriptor Descriptor {
get { return _PBJ_Internal.TimeSync.Descriptor; } }
public static class Types {
public enum ReturnOptions {
REPLY_RELIABLE=_PBJ_Internal.TimeSync.Types.ReturnOptions.REPLY_RELIABLE,
REPLY_ORDERED=_PBJ_Internal.TimeSync.Types.ReturnOptions.REPLY_ORDERED
};
}
public static bool WithinReservedFieldTagRange(int field_tag) {
return false||(field_tag>=1&&field_tag<=8)||(field_tag>=1536&&field_tag<=2560)||(field_tag>=229376&&field_tag<=294912);
}
public static bool WithinExtensionFieldTagRange(int field_tag) {
return false;
}
public const int ClientTimeFieldTag=9;
public bool HasClientTime{ get {return super.HasClientTime&&PBJ._PBJ.ValidateTime(super.ClientTime);} }
public PBJ.Time ClientTime{ get {
if (HasClientTime) {
return PBJ._PBJ.CastTime(super.ClientTime);
} else {
return PBJ._PBJ.CastTime();
}
}
}
public const int ServerTimeFieldTag=10;
public bool HasServerTime{ get {return super.HasServerTime&&PBJ._PBJ.ValidateTime(super.ServerTime);} }
public PBJ.Time ServerTime{ get {
if (HasServerTime) {
return PBJ._PBJ.CastTime(super.ServerTime);
} else {
return PBJ._PBJ.CastTime();
}
}
}
public const int SyncRoundFieldTag=11;
public bool HasSyncRound{ get {return super.HasSyncRound&&PBJ._PBJ.ValidateUint64(super.SyncRound);} }
public ulong SyncRound{ get {
if (HasSyncRound) {
return PBJ._PBJ.CastUint64(super.SyncRound);
} else {
return PBJ._PBJ.CastUint64();
}
}
}
public const int ReturnOptionsFieldTag=14;
public bool HasReturnOptions { get {
if (!super.HasReturnOptions) return false;
return PBJ._PBJ.ValidateFlags(super.ReturnOptions,(ulong)Types.ReturnOptions.REPLY_RELIABLE|(ulong)Types.ReturnOptions.REPLY_ORDERED);
} }
public uint ReturnOptions{ get {
if (HasReturnOptions) {
return (uint)PBJ._PBJ.CastFlags(super.ReturnOptions,(ulong)Types.ReturnOptions.REPLY_RELIABLE|(ulong)Types.ReturnOptions.REPLY_ORDERED);
} else {
return (uint)PBJ._PBJ.CastFlags((ulong)Types.ReturnOptions.REPLY_RELIABLE|(ulong)Types.ReturnOptions.REPLY_ORDERED);
}
}
}
public const int RoundTripFieldTag=2561;
public bool HasRoundTrip{ get {return super.HasRoundTrip&&PBJ._PBJ.ValidateTime(super.RoundTrip);} }
public PBJ.Time RoundTrip{ get {
if (HasRoundTrip) {
return PBJ._PBJ.CastTime(super.RoundTrip);
} else {
return PBJ._PBJ.CastTime();
}
}
}
public override Google.ProtocolBuffers.IMessage _PBJISuper { get { return super; } }
public override PBJ.IMessage.IBuilder WeakCreateBuilderForType() { return new Builder(); }
public static Builder CreateBuilder() { return new Builder(); }
public static Builder CreateBuilder(TimeSync prototype) {
return (Builder)new Builder().MergeFrom(prototype);
}
public static TimeSync ParseFrom(pb::ByteString data) {
return new TimeSync(_PBJ_Internal.TimeSync.ParseFrom(data));
}
public static TimeSync ParseFrom(pb::ByteString data, pb::ExtensionRegistry er) {
return new TimeSync(_PBJ_Internal.TimeSync.ParseFrom(data,er));
}
public static TimeSync ParseFrom(byte[] data) {
return new TimeSync(_PBJ_Internal.TimeSync.ParseFrom(data));
}
public static TimeSync ParseFrom(byte[] data, pb::ExtensionRegistry er) {
return new TimeSync(_PBJ_Internal.TimeSync.ParseFrom(data,er));
}
public static TimeSync ParseFrom(global::System.IO.Stream data) {
return new TimeSync(_PBJ_Internal.TimeSync.ParseFrom(data));
}
public static TimeSync ParseFrom(global::System.IO.Stream data, pb::ExtensionRegistry er) {
return new TimeSync(_PBJ_Internal.TimeSync.ParseFrom(data,er));
}
public static TimeSync ParseFrom(pb::CodedInputStream data) {
return new TimeSync(_PBJ_Internal.TimeSync.ParseFrom(data));
}
public static TimeSync ParseFrom(pb::CodedInputStream data, pb::ExtensionRegistry er) {
return new TimeSync(_PBJ_Internal.TimeSync.ParseFrom(data,er));
}
protected override bool _HasAllPBJFields{ get {
return true
;
} }
public bool IsInitialized { get {
return super.IsInitialized&&_HasAllPBJFields;
} }
public class Builder : global::PBJ.IMessage.IBuilder{
protected override bool _HasAllPBJFields{ get {
return true
;
} }
public bool IsInitialized { get {
return super.IsInitialized&&_HasAllPBJFields;
} }
protected _PBJ_Internal.TimeSync.Builder super;
public override Google.ProtocolBuffers.IBuilder _PBJISuper { get { return super; } }
public _PBJ_Internal.TimeSync.Builder _PBJSuper{ get { return super;} }
public Builder() {super = new _PBJ_Internal.TimeSync.Builder();}
public Builder(_PBJ_Internal.TimeSync.Builder other) {
super=other;
}
public Builder Clone() {return new Builder(super.Clone());}
public Builder MergeFrom(TimeSync prototype) { super.MergeFrom(prototype._PBJSuper);return this;}
public Builder Clear() {super.Clear();return this;}
public TimeSync BuildPartial() {return new TimeSync(super.BuildPartial());}
public TimeSync Build() {if (_HasAllPBJFields) return new TimeSync(super.Build());return null;}
public pbd::MessageDescriptor DescriptorForType {
get { return TimeSync.Descriptor; } }
public Builder ClearClientTime() { super.ClearClientTime();return this;}
public const int ClientTimeFieldTag=9;
public bool HasClientTime{ get {return super.HasClientTime&&PBJ._PBJ.ValidateTime(super.ClientTime);} }
public PBJ.Time ClientTime{ get {
if (HasClientTime) {
return PBJ._PBJ.CastTime(super.ClientTime);
} else {
return PBJ._PBJ.CastTime();
}
}
set {
super.ClientTime=(PBJ._PBJ.Construct(value));
}
}
public Builder ClearServerTime() { super.ClearServerTime();return this;}
public const int ServerTimeFieldTag=10;
public bool HasServerTime{ get {return super.HasServerTime&&PBJ._PBJ.ValidateTime(super.ServerTime);} }
public PBJ.Time ServerTime{ get {
if (HasServerTime) {
return PBJ._PBJ.CastTime(super.ServerTime);
} else {
return PBJ._PBJ.CastTime();
}
}
set {
super.ServerTime=(PBJ._PBJ.Construct(value));
}
}
public Builder ClearSyncRound() { super.ClearSyncRound();return this;}
public const int SyncRoundFieldTag=11;
public bool HasSyncRound{ get {return super.HasSyncRound&&PBJ._PBJ.ValidateUint64(super.SyncRound);} }
public ulong SyncRound{ get {
if (HasSyncRound) {
return PBJ._PBJ.CastUint64(super.SyncRound);
} else {
return PBJ._PBJ.CastUint64();
}
}
set {
super.SyncRound=(PBJ._PBJ.Construct(value));
}
}
public Builder ClearReturnOptions() { super.ClearReturnOptions();return this;}
public const int ReturnOptionsFieldTag=14;
public bool HasReturnOptions { get {
if (!super.HasReturnOptions) return false;
return PBJ._PBJ.ValidateFlags(super.ReturnOptions,(ulong)Types.ReturnOptions.REPLY_RELIABLE|(ulong)Types.ReturnOptions.REPLY_ORDERED);
} }
public uint ReturnOptions{ get {
if (HasReturnOptions) {
return (uint)PBJ._PBJ.CastFlags(super.ReturnOptions,(ulong)Types.ReturnOptions.REPLY_RELIABLE|(ulong)Types.ReturnOptions.REPLY_ORDERED);
} else {
return (uint)PBJ._PBJ.CastFlags((ulong)Types.ReturnOptions.REPLY_RELIABLE|(ulong)Types.ReturnOptions.REPLY_ORDERED);
}
}
set {
super.ReturnOptions=((value));
}
}
public Builder ClearRoundTrip() { super.ClearRoundTrip();return this;}
public const int RoundTripFieldTag=2561;
public bool HasRoundTrip{ get {return super.HasRoundTrip&&PBJ._PBJ.ValidateTime(super.RoundTrip);} }
public PBJ.Time RoundTrip{ get {
if (HasRoundTrip) {
return PBJ._PBJ.CastTime(super.RoundTrip);
} else {
return PBJ._PBJ.CastTime();
}
}
set {
super.RoundTrip=(PBJ._PBJ.Construct(value));
}
}
}
}
}

View File

@@ -0,0 +1,139 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
// THIS MODULE USES CODE FROM SIRIKATA, THE SIRIKATA LICENSE IS BELOW
/*
Sirikata is Licensed using the revised BSD license.
If you have any questions, contact Patrick Horn at <patrick.horn@gmail.com>
Copyright (c) 2008, the Sirikata developers (see AUTHORS file for credit).
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
* Neither the name of Sirikata nor the names of its contributors may
be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using Nini.Config;
using OpenMetaverse;
using OpenSim.Client.Sirikata.ClientStack;
using OpenSim.Framework;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Client.Sirikata
{
class SirikataModule : IRegionModule
{
private bool m_enabled = false;
private TcpListener m_listener;
private bool m_running = true;
private List<Scene> m_scenes = new List<Scene>();
private Dictionary<UUID,SirikataClientView> m_clients = new Dictionary<UUID, SirikataClientView>();
#region Implementation of IRegionModule
public void Initialise(Scene scene, IConfigSource source)
{
lock (m_scenes)
m_scenes.Add(scene);
}
public void PostInitialise()
{
if (!m_enabled)
return;
m_listener = new TcpListener(IPAddress.Any, 5943);
}
private void ListenLoop()
{
while (m_running)
{
m_listener.BeginAcceptTcpClient(AcceptSocket, m_listener);
}
}
private void AcceptSocket(IAsyncResult ar)
{
TcpListener listener = (TcpListener) ar.AsyncState;
TcpClient client = listener.EndAcceptTcpClient(ar);
SirikataClientView clientView = new SirikataClientView(client);
lock (m_clients)
m_clients.Add(clientView.SessionId, clientView);
}
public void Close()
{
}
public string Name
{
get { return "Sirikata ClientStack Module"; }
}
public bool IsSharedModule
{
get { return true; }
}
#endregion
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,133 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Text;
using Nini.Config;
using OpenMetaverse;
using OpenSim.Client.VWoHTTP.ClientStack;
using OpenSim.Framework;
using OpenSim.Framework.Servers;
using OpenSim.Framework.Servers.HttpServer;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
namespace OpenSim.Client.VWoHTTP
{
class VWoHTTPModule : IRegionModule, IHttpAgentHandler
{
private bool m_disabled = true;
private IHttpServer m_httpd;
private readonly List<Scene> m_scenes = new List<Scene>();
private Dictionary<UUID, VWHClientView> m_clients = new Dictionary<UUID, VWHClientView>();
#region Implementation of IRegionModule
public void Initialise(Scene scene, IConfigSource source)
{
if (m_disabled)
return;
m_scenes.Add(scene);
m_httpd = MainServer.Instance;
}
public void PostInitialise()
{
if (m_disabled)
return;
m_httpd.AddAgentHandler("vwohttp", this);
}
public void Close()
{
if (m_disabled)
return;
m_httpd.RemoveAgentHandler("vwohttp", this);
}
public string Name
{
get { return "VWoHTTP ClientStack"; }
}
public bool IsSharedModule
{
get { return true; }
}
#endregion
#region Implementation of IHttpAgentHandler
public bool Handle(OSHttpRequest req, OSHttpResponse resp)
{
string[] urlparts = req.Url.AbsolutePath.Split(new char[] {'/'}, StringSplitOptions.RemoveEmptyEntries);
if (urlparts.Length < 2)
return false;
if (urlparts[1] == "connect")
{
UUID sessID = UUID.Random();
VWHClientView client = new VWHClientView(sessID, UUID.Random(), "VWoHTTPClient", m_scenes[0]);
m_clients.Add(sessID, client);
return true;
}
else
{
if (urlparts.Length < 3)
return false;
UUID sessionID;
if (!UUID.TryParse(urlparts[1], out sessionID))
return false;
if (!m_clients.ContainsKey(sessionID))
return false;
return m_clients[sessionID].ProcessInMsg(req, resp);
}
}
public bool Match(OSHttpRequest req, OSHttpResponse resp)
{
return req.Url.ToString().Contains("vwohttp");
}
#endregion
}
}

View File

@@ -29,11 +29,9 @@ using Nini.Config;
using log4net;
using System.Reflection;
using System;
using System.IO;
using System.Xml;
using System.Collections.Generic;
using OpenSim.Server.Base;
using OpenSim.Framework;
using OpenSim.Framework.Console;
using OpenMetaverse;
@@ -75,18 +73,9 @@ namespace OpenSim.ConsoleClient
Requester.MakeRequest("http://"+m_Host+":"+m_Port.ToString()+"/StartSession/", String.Format("USER={0}&PASS={1}", m_User, m_Pass), LoginReply);
string pidFile = serverConfig.GetString("PIDFile", String.Empty);
int res = m_Server.Run();
while (m_Server.Running)
{
System.Threading.Thread.Sleep(500);
// MainConsole.Instance.Prompt();
}
if (pidFile != String.Empty)
File.Delete(pidFile);
Environment.Exit(0);
Environment.Exit(res);
return 0;
}
@@ -94,14 +83,13 @@ namespace OpenSim.ConsoleClient
private static void SendCommand(string module, string[] cmd)
{
string sendCmd = "";
string[] cmdlist = new string[cmd.Length - 1];
sendCmd = cmd[0];
if (cmd.Length > 1)
{
Array.Copy(cmd, 1, cmdlist, 0, cmd.Length - 1);
sendCmd += " \"" + String.Join("\" \"", cmdlist) + "\"";
sendCmd = cmd[0];
Array.Copy(cmd, 1, cmd, 0, cmd.Length-1);
Array.Resize(ref cmd, cmd.Length-1);
sendCmd += "\"" + String.Join("\" \"", cmd) + "\"";
}
Requester.MakeRequest("http://"+m_Host+":"+m_Port.ToString()+"/SessionCommand/", String.Format("ID={0}&COMMAND={1}", m_SessionID, sendCmd), CommandReply);
@@ -195,27 +183,16 @@ namespace OpenSim.ConsoleClient
while (lines.Count > 100)
lines.RemoveAt(0);
string prompt = String.Empty;
foreach (string l in lines)
{
string[] parts = l.Split(new char[] {':'}, 3);
if (parts.Length != 3)
continue;
if (parts[2].StartsWith("+++") || parts[2].StartsWith("-++"))
prompt = parts[2];
else
MainConsole.Instance.Output(parts[2].Trim(), parts[1]);
MainConsole.Instance.Output(parts[2].Trim(), parts[1]);
}
Requester.MakeRequest(requestUrl, requestData, ReadResponses);
if (prompt.StartsWith("+++"))
MainConsole.Instance.ReadLine(prompt.Substring(3), true, true);
else if (prompt.StartsWith("-++"))
SendCommand(String.Empty, new string[] { MainConsole.Instance.ReadLine(prompt.Substring(3), false, true) });
}
public static void CommandReply(string requestUrl, string requestData, string replyData)

View File

@@ -50,7 +50,7 @@ namespace OpenSim.ConsoleClient
request.ContentType = "application/x-www-form-urlencoded";
byte[] buffer = Encoding.ASCII.GetBytes(data);
byte[] buffer = new System.Text.ASCIIEncoding().GetBytes(data);
int length = (int) buffer.Length;
request.ContentLength = length;

View File

@@ -40,4 +40,15 @@ namespace OpenSim.Data
void Initialise(string connect);
bool Delete(string id);
}
public class AssetDataInitialiser : PluginInitialiserBase
{
private string connect;
public AssetDataInitialiser (string s) { connect = s; }
public override void Initialise (IPlugin plugin)
{
IAssetDataPlugin p = plugin as IAssetDataPlugin;
p.Initialise (connect);
}
}
}

View File

@@ -34,7 +34,7 @@ namespace OpenSim.Data
{
public class FriendsData
{
public string PrincipalID;
public UUID PrincipalID;
public string Friend;
public Dictionary<string, string> Data;
}
@@ -46,8 +46,6 @@ namespace OpenSim.Data
{
bool Store(FriendsData data);
bool Delete(UUID ownerID, string friend);
bool Delete(string ownerID, string friend);
FriendsData[] GetFriends(UUID principalID);
FriendsData[] GetFriends(string principalID);
}
}

View File

@@ -155,4 +155,15 @@ namespace OpenSim.Data
/// </returns>
List<InventoryItemBase> fetchActiveGestures(UUID avatarID);
}
public class InventoryDataInitialiser : PluginInitialiserBase
{
private string connect;
public InventoryDataInitialiser (string s) { connect = s; }
public override void Initialise (IPlugin plugin)
{
IInventoryDataPlugin p = plugin as IInventoryDataPlugin;
p.Initialise (connect);
}
}
}

View File

@@ -37,30 +37,10 @@ namespace OpenSim.Data
public UUID RegionID;
public UUID ScopeID;
public string RegionName;
/// <summary>
/// The position in meters of this region.
/// </summary>
public int posX;
/// <summary>
/// The position in meters of this region.
/// </summary>
public int posY;
public int sizeX;
public int sizeY;
/// <summary>
/// Return the x-coordinate of this region.
/// </summary>
public int coordX { get { return posX / (int)Constants.RegionSize; } }
/// <summary>
/// Return the y-coordinate of this region.
/// </summary>
public int coordY { get { return posY / (int)Constants.RegionSize; } }
public Dictionary<string, object> Data;
}
@@ -82,7 +62,6 @@ namespace OpenSim.Data
List<RegionData> GetDefaultRegions(UUID scopeID);
List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y);
List<RegionData> GetHyperlinks(UUID scopeID);
}
[Flags]
@@ -99,26 +78,4 @@ namespace OpenSim.Data
Authenticate = 256, // Require authentication
Hyperlink = 512 // Record represents a HG link
}
public class RegionDataDistanceCompare : IComparer<RegionData>
{
private Vector2 m_origin;
public RegionDataDistanceCompare(int x, int y)
{
m_origin = new Vector2(x, y);
}
public int Compare(RegionData regionA, RegionData regionB)
{
Vector2 vectorA = new Vector2(regionA.posX, regionA.posY);
Vector2 vectorB = new Vector2(regionB.posX, regionB.posY);
return Math.Sign(VectorDistance(m_origin, vectorA) - VectorDistance(m_origin, vectorB));
}
private float VectorDistance(Vector2 x, Vector2 y)
{
return (x - y).Length();
}
}
}

View File

@@ -40,11 +40,6 @@ namespace OpenSim.Data
public UUID folderID;
public UUID agentID;
public UUID parentFolderID;
public XInventoryFolder Clone()
{
return (XInventoryFolder)MemberwiseClone();
}
}
public class XInventoryItem
@@ -56,7 +51,7 @@ namespace OpenSim.Data
public int inventoryNextPermissions;
public int inventoryCurrentPermissions;
public int invType;
public string creatorID;
public UUID creatorID;
public int inventoryBasePermissions;
public int inventoryEveryOnePermissions;
public int salePrice;
@@ -69,11 +64,6 @@ namespace OpenSim.Data
public UUID avatarID;
public UUID parentFolderID;
public int inventoryGroupPermissions;
public XInventoryItem Clone()
{
return (XInventoryItem)MemberwiseClone();
}
}
public interface IXInventoryData
@@ -84,38 +74,9 @@ namespace OpenSim.Data
bool StoreFolder(XInventoryFolder folder);
bool StoreItem(XInventoryItem item);
/// <summary>
/// Delete folders where field == val
/// </summary>
/// <param name="field"></param>
/// <param name="val"></param>
/// <returns>true if the delete was successful, false if it was not</returns>
bool DeleteFolders(string field, string val);
/// <summary>
/// Delete folders where field1 == val1, field2 == val2...
/// </summary>
/// <param name="fields"></param>
/// <param name="vals"></param>
/// <returns>true if the delete was successful, false if it was not</returns>
bool DeleteFolders(string[] fields, string[] vals);
/// <summary>
/// Delete items where field == val
/// </summary>
/// <param name="field"></param>
/// <param name="val"></param>
/// <returns>true if the delete was successful, false if it was not</returns>
bool DeleteItems(string field, string val);
/// <summary>
/// Delete items where field1 == val1, field2 == val2...
/// </summary>
/// <param name="fields"></param>
/// <param name="vals"></param>
/// <returns>true if the delete was successful, false if it was not</returns>
bool DeleteItems(string[] fields, string[] vals);
bool MoveItem(string id, string newParent);
XInventoryItem[] GetActiveGestures(UUID principalID);
int GetAssetPermissions(UUID principalID, UUID assetID);

View File

@@ -121,16 +121,15 @@ namespace OpenSim.Data.MSSQL
if (reader.Read())
{
AssetBase asset = new AssetBase(
DBGuid.FromDB(reader["id"]),
new UUID((Guid)reader["id"]),
(string)reader["name"],
Convert.ToSByte(reader["assetType"]),
reader["creatorid"].ToString()
String.Empty
);
// Region Main
asset.Description = (string)reader["description"];
asset.Local = Convert.ToBoolean(reader["local"]);
asset.Temporary = Convert.ToBoolean(reader["temporary"]);
asset.Flags = (AssetFlags)(Convert.ToInt32(reader["asset_flags"]));
asset.Data = (byte[])reader["data"];
return asset;
}
@@ -145,19 +144,26 @@ namespace OpenSim.Data.MSSQL
/// <param name="asset">the asset</param>
override public void StoreAsset(AssetBase asset)
{
string sql =
@"IF EXISTS(SELECT * FROM assets WHERE id=@id)
UPDATE assets set name = @name, description = @description, assetType = @assetType,
local = @local, temporary = @temporary, creatorid = @creatorid, data = @data
WHERE id=@id
ELSE
INSERT INTO assets
([id], [name], [description], [assetType], [local],
[temporary], [create_time], [access_time], [creatorid], [asset_flags], [data])
VALUES
(@id, @name, @description, @assetType, @local,
@temporary, @create_time, @access_time, @creatorid, @asset_flags, @data)";
if (ExistsAsset(asset.FullID))
UpdateAsset(asset);
else
InsertAsset(asset);
}
private void InsertAsset(AssetBase asset)
{
if (ExistsAsset(asset.FullID))
{
return;
}
string sql = @"INSERT INTO assets
([id], [name], [description], [assetType], [local],
[temporary], [create_time], [access_time], [data])
VALUES
(@id, @name, @description, @assetType, @local,
@temporary, @create_time, @access_time, @data)";
string assetName = asset.Name;
if (asset.Name.Length > 64)
@@ -185,8 +191,6 @@ namespace OpenSim.Data.MSSQL
command.Parameters.Add(m_database.CreateParameter("temporary", asset.Temporary));
command.Parameters.Add(m_database.CreateParameter("access_time", now));
command.Parameters.Add(m_database.CreateParameter("create_time", now));
command.Parameters.Add(m_database.CreateParameter("asset_flags", (int)asset.Flags));
command.Parameters.Add(m_database.CreateParameter("creatorid", asset.Metadata.CreatorID));
command.Parameters.Add(m_database.CreateParameter("data", asset.Data));
conn.Open();
try
@@ -195,11 +199,57 @@ namespace OpenSim.Data.MSSQL
}
catch(Exception e)
{
m_log.Error("[ASSET DB]: Error storing item :" + e.Message);
m_log.Error("[ASSET DB]: Error inserting item :" + e.Message);
}
}
}
/// <summary>
/// Update asset in m_database
/// </summary>
/// <param name="asset">the asset</param>
private void UpdateAsset(AssetBase asset)
{
string sql = @"UPDATE assets set id = @id, name = @name, description = @description, assetType = @assetType,
local = @local, temporary = @temporary, data = @data
WHERE id = @keyId;";
string assetName = asset.Name;
if (asset.Name.Length > 64)
{
assetName = asset.Name.Substring(0, 64);
m_log.Warn("[ASSET DB]: Name field truncated from " + asset.Name.Length + " to " + assetName.Length + " characters on update");
}
string assetDescription = asset.Description;
if (asset.Description.Length > 64)
{
assetDescription = asset.Description.Substring(0, 64);
m_log.Warn("[ASSET DB]: Description field truncated from " + asset.Description.Length + " to " + assetDescription.Length + " characters on update");
}
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand command = new SqlCommand(sql, conn))
{
command.Parameters.Add(m_database.CreateParameter("id", asset.FullID));
command.Parameters.Add(m_database.CreateParameter("name", assetName));
command.Parameters.Add(m_database.CreateParameter("description", assetDescription));
command.Parameters.Add(m_database.CreateParameter("assetType", asset.Type));
command.Parameters.Add(m_database.CreateParameter("local", asset.Local));
command.Parameters.Add(m_database.CreateParameter("temporary", asset.Temporary));
command.Parameters.Add(m_database.CreateParameter("data", asset.Data));
command.Parameters.Add(m_database.CreateParameter("@keyId", asset.FullID));
conn.Open();
try
{
command.ExecuteNonQuery();
}
catch (Exception e)
{
m_log.Error(e.ToString());
}
}
}
// Commented out since currently unused - this probably should be called in GetAsset()
// private void UpdateAccessTime(AssetBase asset)
@@ -245,34 +295,26 @@ namespace OpenSim.Data.MSSQL
public override List<AssetMetadata> FetchAssetMetadataSet(int start, int count)
{
List<AssetMetadata> retList = new List<AssetMetadata>(count);
string sql = @"WITH OrderedAssets AS
(
SELECT id, name, description, assetType, temporary, creatorid,
RowNumber = ROW_NUMBER() OVER (ORDER BY id)
FROM assets
)
SELECT *
FROM OrderedAssets
WHERE RowNumber BETWEEN @start AND @stop;";
string sql = @"SELECT (name,description,assetType,temporary,id), Row = ROW_NUMBER()
OVER (ORDER BY (some column to order by))
WHERE Row >= @Start AND Row < @Start + @Count";
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(m_database.CreateParameter("start", start));
cmd.Parameters.Add(m_database.CreateParameter("stop", start + count - 1));
cmd.Parameters.Add(m_database.CreateParameter("count", count));
conn.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
AssetMetadata metadata = new AssetMetadata();
metadata.FullID = DBGuid.FromDB(reader["id"]);
metadata.FullID = new UUID((Guid)reader["id"]);
metadata.Name = (string)reader["name"];
metadata.Description = (string)reader["description"];
metadata.Type = Convert.ToSByte(reader["assetType"]);
metadata.Temporary = Convert.ToBoolean(reader["temporary"]);
metadata.CreatorID = (string)reader["creatorid"];
retList.Add(metadata);
}
}
}

View File

@@ -43,7 +43,7 @@ namespace OpenSim.Data.MSSQL
public class MSSQLAvatarData : MSSQLGenericTableHandler<AvatarBaseData>,
IAvatarData
{
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public MSSQLAvatarData(string connectionString, string realm) :
base(connectionString, realm, "Avatar")

View File

@@ -37,11 +37,11 @@ using OpenSim.Region.Framework.Interfaces;
namespace OpenSim.Data.MSSQL
{
public class MSSQLEstateStore : IEstateDataStore
public class MSSQLEstateData : IEstateDataStore
{
private const string _migrationStore = "EstateStore";
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly ILog _Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private MSSQLManager _Database;
private string m_connectionString;
@@ -50,15 +50,6 @@ namespace OpenSim.Data.MSSQL
#region Public methods
public MSSQLEstateStore()
{
}
public MSSQLEstateStore(string connectionString)
{
Initialise(connectionString);
}
/// <summary>
/// Initialises the estatedata class.
/// </summary>
@@ -72,12 +63,7 @@ namespace OpenSim.Data.MSSQL
}
//Migration settings
using (SqlConnection conn = new SqlConnection(m_connectionString))
{
conn.Open();
Migration m = new Migration(conn, GetType().Assembly, "EstateStore");
m.Update();
}
_Database.CheckMigration(_migrationStore);
//Interesting way to get parameters! Maybe implement that also with other types
Type t = typeof(EstateSettings);
@@ -115,30 +101,22 @@ namespace OpenSim.Data.MSSQL
{
foreach (string name in FieldList)
{
FieldInfo f = _FieldMap[name];
object v = reader[name];
if (f.FieldType == typeof(bool))
if (_FieldMap[name].GetValue(es) is bool)
{
f.SetValue(es, Convert.ToInt32(v) != 0);
int v = Convert.ToInt32(reader[name]);
if (v != 0)
_FieldMap[name].SetValue(es, true);
else
_FieldMap[name].SetValue(es, false);
}
else if (f.FieldType == typeof(UUID))
else if (_FieldMap[name].GetValue(es) is UUID)
{
f.SetValue(es, new UUID((Guid)v)); // uuid);
}
else if (f.FieldType == typeof(string))
{
f.SetValue(es, v.ToString());
}
else if (f.FieldType == typeof(UInt32))
{
f.SetValue(es, Convert.ToUInt32(v));
}
else if (f.FieldType == typeof(Single))
{
f.SetValue(es, Convert.ToSingle(v));
_FieldMap[name].SetValue(es, new UUID((Guid)reader[name])); // uuid);
}
else
f.SetValue(es, v);
{
es.EstateID = Convert.ToUInt32(reader["EstateID"].ToString());
}
}
}
else
@@ -148,10 +126,55 @@ namespace OpenSim.Data.MSSQL
}
}
if (insertEstate && create)
{
DoCreate(es);
LinkRegion(regionID, (int)es.EstateID);
List<string> names = new List<string>(FieldList);
names.Remove("EstateID");
sql = string.Format("insert into estate_settings ({0}) values ( @{1})", String.Join(",", names.ToArray()), String.Join(", @", names.ToArray()));
//_Log.Debug("[DB ESTATE]: SQL: " + sql);
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand insertCommand = new SqlCommand(sql, conn))
{
insertCommand.CommandText = sql + " SET @ID = SCOPE_IDENTITY()";
foreach (string name in names)
{
insertCommand.Parameters.Add(_Database.CreateParameter("@" + name, _FieldMap[name].GetValue(es)));
}
SqlParameter idParameter = new SqlParameter("@ID", SqlDbType.Int);
idParameter.Direction = ParameterDirection.Output;
insertCommand.Parameters.Add(idParameter);
conn.Open();
insertCommand.ExecuteNonQuery();
es.EstateID = Convert.ToUInt32(idParameter.Value);
}
sql = "INSERT INTO [estate_map] ([RegionID] ,[EstateID]) VALUES (@RegionID, @EstateID)";
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(_Database.CreateParameter("@RegionID", regionID));
cmd.Parameters.Add(_Database.CreateParameter("@EstateID", es.EstateID));
// This will throw on dupe key
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception e)
{
_Log.DebugFormat("[ESTATE DB]: Error inserting regionID and EstateID in estate_map: {0}", e);
}
}
//TODO check if this is needed??
es.Save();
}
LoadBanList(es);
@@ -165,53 +188,6 @@ namespace OpenSim.Data.MSSQL
return es;
}
public EstateSettings CreateNewEstate()
{
EstateSettings es = new EstateSettings();
es.OnSave += StoreEstateSettings;
DoCreate(es);
LoadBanList(es);
es.EstateManagers = LoadUUIDList(es.EstateID, "estate_managers");
es.EstateAccess = LoadUUIDList(es.EstateID, "estate_users");
es.EstateGroups = LoadUUIDList(es.EstateID, "estate_groups");
return es;
}
private void DoCreate(EstateSettings es)
{
List<string> names = new List<string>(FieldList);
names.Remove("EstateID");
string sql = string.Format("insert into estate_settings ({0}) values ( @{1})", String.Join(",", names.ToArray()), String.Join(", @", names.ToArray()));
//_Log.Debug("[DB ESTATE]: SQL: " + sql);
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand insertCommand = new SqlCommand(sql, conn))
{
insertCommand.CommandText = sql + " SET @ID = SCOPE_IDENTITY()";
foreach (string name in names)
{
insertCommand.Parameters.Add(_Database.CreateParameter("@" + name, _FieldMap[name].GetValue(es)));
}
SqlParameter idParameter = new SqlParameter("@ID", SqlDbType.Int);
idParameter.Direction = ParameterDirection.Output;
insertCommand.Parameters.Add(idParameter);
conn.Open();
insertCommand.ExecuteNonQuery();
es.EstateID = Convert.ToUInt32(idParameter.Value);
}
//TODO check if this is needed??
es.Save();
}
/// <summary>
/// Stores the estate settings.
/// </summary>
@@ -312,264 +288,87 @@ namespace OpenSim.Data.MSSQL
private void SaveBanList(EstateSettings es)
{
//Delete first
string sql = "delete from estateban where EstateID = @EstateID";
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(_Database.CreateParameter("@EstateID", es.EstateID));
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "delete from estateban where EstateID = @EstateID";
cmd.Parameters.AddWithValue("@EstateID", (int)es.EstateID);
cmd.ExecuteNonQuery();
cmd.ExecuteNonQuery();
}
//Insert after
cmd.CommandText = "insert into estateban (EstateID, bannedUUID,bannedIp, bannedIpHostMask, bannedNameMask) values ( @EstateID, @bannedUUID, '','','' )";
cmd.Parameters.AddWithValue("@bannedUUID", Guid.Empty);
foreach (EstateBan b in es.EstateBans)
{
cmd.Parameters["@bannedUUID"].Value = b.BannedUserID.Guid;
cmd.ExecuteNonQuery();
}
//Insert after
sql = "insert into estateban (EstateID, bannedUUID) values ( @EstateID, @bannedUUID )";
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
foreach (EstateBan b in es.EstateBans)
{
cmd.Parameters.Add(_Database.CreateParameter("@EstateID", es.EstateID));
cmd.Parameters.Add(_Database.CreateParameter("@bannedUUID", b.BannedUserID));
conn.Open();
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
}
}
private void SaveUUIDList(uint estateID, string table, UUID[] data)
{
//Delete first
string sql = string.Format("delete from {0} where EstateID = @EstateID", table);
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.Parameters.AddWithValue("@EstateID", (int)estateID);
cmd.CommandText = string.Format("delete from {0} where EstateID = @EstateID", table);
cmd.ExecuteNonQuery();
cmd.Parameters.Add(_Database.CreateParameter("@EstateID", estateID));
cmd.ExecuteNonQuery();
}
cmd.CommandText = string.Format("insert into {0} (EstateID, uuid) values ( @EstateID, @uuid )", table);
cmd.Parameters.AddWithValue("@uuid", Guid.Empty);
foreach (UUID uuid in data)
sql = string.Format("insert into {0} (EstateID, uuid) values ( @EstateID, @uuid )", table);
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(_Database.CreateParameter("@EstateID", estateID));
bool createParamOnce = true;
foreach (UUID uuid in data)
{
if (createParamOnce)
{
cmd.Parameters["@uuid"].Value = uuid.Guid; //.ToString(); //TODO check if this works
cmd.ExecuteNonQuery();
cmd.Parameters.Add(_Database.CreateParameter("@uuid", uuid));
createParamOnce = false;
}
else
cmd.Parameters["@uuid"].Value = uuid.Guid; //.ToString(); //TODO check if this works
conn.Open();
cmd.ExecuteNonQuery();
}
}
}
public EstateSettings LoadEstateSettings(int estateID)
{
EstateSettings es = new EstateSettings();
string sql = "select estate_settings." + String.Join(",estate_settings.", FieldList) + " from estate_settings where EstateID = @EstateID";
using (SqlConnection conn = new SqlConnection(m_connectionString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@EstateID", (int)estateID);
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.Read())
{
foreach (string name in FieldList)
{
FieldInfo f = _FieldMap[name];
object v = reader[name];
if (f.FieldType == typeof(bool))
{
f.SetValue(es, Convert.ToInt32(v) != 0);
}
else if (f.FieldType == typeof(UUID))
{
f.SetValue(es, new UUID((Guid)v)); // uuid);
}
else if (f.FieldType == typeof(string))
{
f.SetValue(es, v.ToString());
}
else if (f.FieldType == typeof(UInt32))
{
f.SetValue(es, Convert.ToUInt32(v));
}
else if (f.FieldType == typeof(Single))
{
f.SetValue(es, Convert.ToSingle(v));
}
else
f.SetValue(es, v);
}
}
}
}
}
LoadBanList(es);
es.EstateManagers = LoadUUIDList(es.EstateID, "estate_managers");
es.EstateAccess = LoadUUIDList(es.EstateID, "estate_users");
es.EstateGroups = LoadUUIDList(es.EstateID, "estate_groups");
//Set event
es.OnSave += StoreEstateSettings;
return es;
}
public List<EstateSettings> LoadEstateSettingsAll()
{
List<EstateSettings> allEstateSettings = new List<EstateSettings>();
List<int> allEstateIds = GetEstatesAll();
foreach (int estateId in allEstateIds)
allEstateSettings.Add(LoadEstateSettings(estateId));
return allEstateSettings;
return new EstateSettings();
}
public List<int> GetEstates(string search)
{
List<int> result = new List<int>();
string sql = "select estateID from estate_settings where EstateName = @EstateName";
using (SqlConnection conn = new SqlConnection(m_connectionString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@EstateName", search);
using (IDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
result.Add(Convert.ToInt32(reader["EstateID"]));
}
reader.Close();
}
}
}
return result;
}
public List<int> GetEstatesAll()
{
List<int> result = new List<int>();
string sql = "select estateID from estate_settings";
using (SqlConnection conn = new SqlConnection(m_connectionString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
using (IDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
result.Add(Convert.ToInt32(reader["EstateID"]));
}
reader.Close();
}
}
}
return result;
}
public List<int> GetEstatesByOwner(UUID ownerID)
{
List<int> result = new List<int>();
string sql = "select estateID from estate_settings where EstateOwner = @EstateOwner";
using (SqlConnection conn = new SqlConnection(m_connectionString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@EstateOwner", ownerID);
using (IDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
result.Add(Convert.ToInt32(reader["EstateID"]));
}
reader.Close();
}
}
}
return result;
return new List<int>();
}
public bool LinkRegion(UUID regionID, int estateID)
{
string deleteSQL = "delete from estate_map where RegionID = @RegionID";
string insertSQL = "insert into estate_map values (@RegionID, @EstateID)";
using (SqlConnection conn = new SqlConnection(m_connectionString))
{
conn.Open();
SqlTransaction transaction = conn.BeginTransaction();
try
{
using (SqlCommand cmd = new SqlCommand(deleteSQL, conn))
{
cmd.Transaction = transaction;
cmd.Parameters.AddWithValue("@RegionID", regionID.Guid);
cmd.ExecuteNonQuery();
}
using (SqlCommand cmd = new SqlCommand(insertSQL, conn))
{
cmd.Transaction = transaction;
cmd.Parameters.AddWithValue("@RegionID", regionID.Guid);
cmd.Parameters.AddWithValue("@EstateID", estateID);
int ret = cmd.ExecuteNonQuery();
if (ret != 0)
transaction.Commit();
else
transaction.Rollback();
return (ret != 0);
}
}
catch (Exception ex)
{
m_log.Error("[REGION DB]: LinkRegion failed: " + ex.Message);
transaction.Rollback();
}
}
return false;
}
public List<UUID> GetRegions(int estateID)
{
List<UUID> result = new List<UUID>();
string sql = "select RegionID from estate_map where EstateID = @EstateID";
using (SqlConnection conn = new SqlConnection(m_connectionString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@EstateID", estateID);
using (IDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
result.Add(DBGuid.FromDB(reader["RegionID"]));
}
reader.Close();
}
}
}
return result;
return new List<UUID>();
}
public bool DeleteEstate(int estateID)
{
// TODO: Implementation!
return false;
}
#endregion

View File

@@ -51,11 +51,6 @@ namespace OpenSim.Data.MSSQL
}
public bool Delete(UUID principalID, string friend)
{
return Delete(principalID.ToString(), friend);
}
public bool Delete(string principalID, string friend)
{
using (SqlConnection conn = new SqlConnection(m_ConnectionString))
using (SqlCommand cmd = new SqlCommand())
@@ -72,11 +67,6 @@ namespace OpenSim.Data.MSSQL
}
public FriendsData[] GetFriends(UUID principalID)
{
return GetFriends(principalID.ToString());
}
public FriendsData[] GetFriends(string principalID)
{
using (SqlConnection conn = new SqlConnection(m_ConnectionString))
using (SqlCommand cmd = new SqlCommand())
@@ -89,11 +79,5 @@ namespace OpenSim.Data.MSSQL
return DoQuery(cmd);
}
}
public FriendsData[] GetFriends(Guid principalID)
{
return GetFriends(principalID.ToString());
}
}
}

View File

@@ -40,8 +40,8 @@ namespace OpenSim.Data.MSSQL
{
public class MSSQLGenericTableHandler<T> where T : class, new()
{
// private static readonly ILog m_log =
// LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly ILog m_log =
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
protected string m_ConnectionString;
protected MSSQLManager m_database; //used for parameter type translation
@@ -56,15 +56,15 @@ namespace OpenSim.Data.MSSQL
string realm, string storeName)
{
m_Realm = realm;
m_ConnectionString = connectionString;
if (storeName != String.Empty)
{
Assembly assem = GetType().Assembly;
m_ConnectionString = connectionString;
using (SqlConnection conn = new SqlConnection(m_ConnectionString))
{
conn.Open();
Migration m = new Migration(conn, GetType().Assembly, storeName);
Migration m = new Migration(conn, assem, storeName);
m.Update();
}
@@ -168,13 +168,14 @@ namespace OpenSim.Data.MSSQL
protected T[] DoQuery(SqlCommand cmd)
{
List<T> result = new List<T>();
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader == null)
return new T[0];
CheckColumnNames(reader);
CheckColumnNames(reader);
List<T> result = new List<T>();
while (reader.Read())
{
@@ -261,15 +262,6 @@ namespace OpenSim.Data.MSSQL
{
names.Add(fi.Name);
values.Add("@" + fi.Name);
// Temporarily return more information about what field is unexpectedly null for
// http://opensimulator.org/mantis/view.php?id=5403. This might be due to a bug in the
// InventoryTransferModule or we may be required to substitute a DBNull here.
if (fi.GetValue(row) == null)
throw new NullReferenceException(
string.Format(
"[MSSQL GENERIC TABLE HANDLER]: Trying to store field {0} for {1} which is unexpectedly null",
fi.Name, row));
if (constraintFields.Count > 0 && constraintFields.Contains(fi.Name))
{
constraints.Add(new KeyValuePair<string, string>(fi.Name, fi.GetValue(row).ToString()));
@@ -343,33 +335,16 @@ namespace OpenSim.Data.MSSQL
}
}
public virtual bool Delete(string field, string key)
public virtual bool Delete(string field, string val)
{
return Delete(new string[] { field }, new string[] { key });
}
public virtual bool Delete(string[] fields, string[] keys)
{
if (fields.Length != keys.Length)
return false;
List<string> terms = new List<string>();
using (SqlConnection conn = new SqlConnection(m_ConnectionString))
using (SqlCommand cmd = new SqlCommand())
{
for (int i = 0; i < fields.Length; i++)
{
cmd.Parameters.Add(m_database.CreateParameter(fields[i], keys[i]));
terms.Add("[" + fields[i] + "] = @" + fields[i]);
}
string where = String.Join(" AND ", terms.ToArray());
string query = String.Format("DELETE FROM {0} WHERE {1}", m_Realm, where);
string deleteCommand = String.Format("DELETE FROM {0} WHERE [{1}] = @{1}", m_Realm, field);
cmd.CommandText = deleteCommand;
cmd.Parameters.Add(m_database.CreateParameter(field, val));
cmd.Connection = conn;
cmd.CommandText = query;
conn.Open();
if (cmd.ExecuteNonQuery() > 0)

View File

@@ -43,7 +43,7 @@ namespace OpenSim.Data.MSSQL
public class MSSQLGridUserData : MSSQLGenericTableHandler<GridUserData>,
IGridUserData
{
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public MSSQLGridUserData(string connectionString, string realm) :
base(connectionString, realm, "GridUserStore")

View File

@@ -111,9 +111,6 @@ namespace OpenSim.Data.MSSQL
/// <returns>A list of folder objects</returns>
public List<InventoryFolderBase> getUserRootFolders(UUID user)
{
if (user == UUID.Zero)
return new List<InventoryFolderBase>();
return getInventoryFolders(UUID.Zero, user);
}
@@ -187,19 +184,7 @@ namespace OpenSim.Data.MSSQL
//Note maybe change this to use a Dataset that loading in all folders of a user and then go throw it that way.
//Note this is changed so it opens only one connection to the database and not everytime it wants to get data.
/* NOTE: the implementation below is very inefficient (makes a separate request to get subfolders for
* every found folder, recursively). Inventory code for other DBs has been already rewritten to get ALL
* inventory for a specific user at once.
*
* Meanwhile, one little thing is corrected: getFolderHierarchy(UUID.Zero) doesn't make sense and should never
* be used, so check for that and return an empty list.
*/
List<InventoryFolderBase> folders = new List<InventoryFolderBase>();
if (parentID == UUID.Zero)
return folders;
string sql = "SELECT * FROM inventoryfolders WHERE parentFolderID = @parentID";
using (SqlConnection conn = new SqlConnection(m_connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
@@ -264,12 +249,13 @@ namespace OpenSim.Data.MSSQL
/// <param name="folder">Folder to update</param>
public void updateInventoryFolder(InventoryFolderBase folder)
{
string sql = @"UPDATE inventoryfolders SET agentID = @agentID,
string sql = @"UPDATE inventoryfolders SET folderID = @folderID,
agentID = @agentID,
parentFolderID = @parentFolderID,
folderName = @folderName,
type = @type,
version = @version
WHERE folderID = @folderID";
WHERE folderID = @keyFolderID";
string folderName = folder.Name;
if (folderName.Length > 64)
@@ -286,6 +272,7 @@ namespace OpenSim.Data.MSSQL
cmd.Parameters.Add(database.CreateParameter("folderName", folderName));
cmd.Parameters.Add(database.CreateParameter("type", folder.Type));
cmd.Parameters.Add(database.CreateParameter("version", folder.Version));
cmd.Parameters.Add(database.CreateParameter("@keyFolderID", folder.ID));
conn.Open();
try
{
@@ -309,7 +296,7 @@ namespace OpenSim.Data.MSSQL
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(database.CreateParameter("parentFolderID", folder.ParentID));
cmd.Parameters.Add(database.CreateParameter("folderID", folder.ID));
cmd.Parameters.Add(database.CreateParameter("@folderID", folder.ID));
conn.Open();
try
{
@@ -502,7 +489,8 @@ namespace OpenSim.Data.MSSQL
/// <param name="item">Inventory item to update</param>
public void updateInventoryItem(InventoryItemBase item)
{
string sql = @"UPDATE inventoryitems SET assetID = @assetID,
string sql = @"UPDATE inventoryitems SET inventoryID = @inventoryID,
assetID = @assetID,
assetType = @assetType,
parentFolderID = @parentFolderID,
avatarID = @avatarID,
@@ -514,14 +502,13 @@ namespace OpenSim.Data.MSSQL
creatorID = @creatorID,
inventoryBasePermissions = @inventoryBasePermissions,
inventoryEveryOnePermissions = @inventoryEveryOnePermissions,
inventoryGroupPermissions = @inventoryGroupPermissions,
salePrice = @salePrice,
saleType = @saleType,
creationDate = @creationDate,
groupID = @groupID,
groupOwned = @groupOwned,
flags = @flags
WHERE inventoryID = @inventoryID";
WHERE inventoryID = @keyInventoryID";
string itemName = item.Name;
if (item.Name.Length > 64)
@@ -550,16 +537,16 @@ namespace OpenSim.Data.MSSQL
command.Parameters.Add(database.CreateParameter("inventoryNextPermissions", item.NextPermissions));
command.Parameters.Add(database.CreateParameter("inventoryCurrentPermissions", item.CurrentPermissions));
command.Parameters.Add(database.CreateParameter("invType", item.InvType));
command.Parameters.Add(database.CreateParameter("creatorID", item.CreatorId));
command.Parameters.Add(database.CreateParameter("creatorID", item.CreatorIdAsUuid));
command.Parameters.Add(database.CreateParameter("inventoryBasePermissions", item.BasePermissions));
command.Parameters.Add(database.CreateParameter("inventoryEveryOnePermissions", item.EveryOnePermissions));
command.Parameters.Add(database.CreateParameter("inventoryGroupPermissions", item.GroupPermissions));
command.Parameters.Add(database.CreateParameter("salePrice", item.SalePrice));
command.Parameters.Add(database.CreateParameter("saleType", item.SaleType));
command.Parameters.Add(database.CreateParameter("creationDate", item.CreationDate));
command.Parameters.Add(database.CreateParameter("groupID", item.GroupID));
command.Parameters.Add(database.CreateParameter("groupOwned", item.GroupOwned));
command.Parameters.Add(database.CreateParameter("flags", item.Flags));
command.Parameters.Add(database.CreateParameter("keyInventoryID", item.ID));
conn.Open();
try
{
@@ -745,9 +732,9 @@ namespace OpenSim.Data.MSSQL
try
{
InventoryFolderBase folder = new InventoryFolderBase();
folder.Owner = DBGuid.FromDB(reader["agentID"]);
folder.ParentID = DBGuid.FromDB(reader["parentFolderID"]);
folder.ID = DBGuid.FromDB(reader["folderID"]);
folder.Owner = new UUID((Guid)reader["agentID"]);
folder.ParentID = new UUID((Guid)reader["parentFolderID"]);
folder.ID = new UUID((Guid)reader["folderID"]);
folder.Name = (string)reader["folderName"];
folder.Type = (short)reader["type"];
folder.Version = Convert.ToUInt16(reader["version"]);
@@ -773,24 +760,24 @@ namespace OpenSim.Data.MSSQL
{
InventoryItemBase item = new InventoryItemBase();
item.ID = DBGuid.FromDB(reader["inventoryID"]);
item.AssetID = DBGuid.FromDB(reader["assetID"]);
item.ID = new UUID((Guid)reader["inventoryID"]);
item.AssetID = new UUID((Guid)reader["assetID"]);
item.AssetType = Convert.ToInt32(reader["assetType"].ToString());
item.Folder = DBGuid.FromDB(reader["parentFolderID"]);
item.Owner = DBGuid.FromDB(reader["avatarID"]);
item.Folder = new UUID((Guid)reader["parentFolderID"]);
item.Owner = new UUID((Guid)reader["avatarID"]);
item.Name = reader["inventoryName"].ToString();
item.Description = reader["inventoryDescription"].ToString();
item.NextPermissions = Convert.ToUInt32(reader["inventoryNextPermissions"]);
item.CurrentPermissions = Convert.ToUInt32(reader["inventoryCurrentPermissions"]);
item.InvType = Convert.ToInt32(reader["invType"].ToString());
item.CreatorId = reader["creatorID"].ToString();
item.CreatorId = ((Guid)reader["creatorID"]).ToString();
item.BasePermissions = Convert.ToUInt32(reader["inventoryBasePermissions"]);
item.EveryOnePermissions = Convert.ToUInt32(reader["inventoryEveryOnePermissions"]);
item.GroupPermissions = Convert.ToUInt32(reader["inventoryGroupPermissions"]);
item.SalePrice = Convert.ToInt32(reader["salePrice"]);
item.SaleType = Convert.ToByte(reader["saleType"]);
item.CreationDate = Convert.ToInt32(reader["creationDate"]);
item.GroupID = DBGuid.FromDB(reader["groupID"]);
item.GroupID = new UUID((Guid)reader["groupID"]);
item.GroupOwned = Convert.ToBoolean(reader["groupOwned"]);
item.Flags = Convert.ToUInt32(reader["flags"]);
@@ -813,7 +800,7 @@ namespace OpenSim.Data.MSSQL
{
try
{
using (SqlCommand command = new SqlCommand("DELETE FROM inventoryfolders WHERE folderID=@folderID and type=-1", connection))
using (SqlCommand command = new SqlCommand("DELETE FROM inventoryfolders WHERE folderID=@folderID", connection))
{
command.Parameters.Add(database.CreateParameter("folderID", folderID));

View File

@@ -41,7 +41,7 @@ namespace OpenSim.Data.MSSQL
/// </summary>
public class MSSQLManager
{
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
/// <summary>
/// Connection string for ADO.net
@@ -104,11 +104,6 @@ namespace OpenSim.Data.MSSQL
{
return SqlDbType.BigInt;
}
if (type == typeof(DateTime))
{
return SqlDbType.DateTime;
}
return SqlDbType.VarChar;
}
@@ -185,6 +180,8 @@ namespace OpenSim.Data.MSSQL
return parameter;
}
private static readonly Dictionary<string, string> emptyDictionary = new Dictionary<string, string>();
/// <summary>
/// Checks if we need to do some migrations to the database
/// </summary>

View File

@@ -29,19 +29,16 @@ using System;
using System.Data;
using System.Data.Common;
using System.Reflection;
using System.Data.SqlClient;
namespace OpenSim.Data.MSSQL
{
public class MSSQLMigration : Migration
{
public MSSQLMigration(DbConnection conn, Assembly assem, string type)
: base(conn, assem, type)
public MSSQLMigration(DbConnection conn, Assembly assem, string type) : base(conn, assem, type)
{
}
public MSSQLMigration(DbConnection conn, Assembly assem, string subtype, string type)
: base(conn, assem, subtype, type)
public MSSQLMigration(DbConnection conn, Assembly assem, string subtype, string type) : base(conn, assem, subtype, type)
{
}
@@ -64,36 +61,10 @@ namespace OpenSim.Data.MSSQL
}
catch
{
// Return -1 to indicate table does not exist
return -1;
// Something went wrong, so we're version 0
}
}
return version;
}
protected override void ExecuteScript(DbConnection conn, string[] script)
{
if (!(conn is SqlConnection))
{
base.ExecuteScript(conn, script);
return;
}
foreach (string sql in script)
{
try
{
using (SqlCommand cmd = new SqlCommand(sql, (SqlConnection)conn))
{
cmd.ExecuteNonQuery();
}
}
catch (Exception)
{
throw new Exception(sql);
}
}
}
}
}

View File

@@ -43,7 +43,7 @@ namespace OpenSim.Data.MSSQL
public class MSSQLPresenceData : MSSQLGenericTableHandler<PresenceData>,
IPresenceData
{
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public MSSQLPresenceData(string connectionString, string realm) :
base(connectionString, realm, "Presence")

View File

@@ -70,7 +70,6 @@ namespace OpenSim.Data.MSSQL
string sql = "select * from ["+m_Realm+"] where regionName like @regionName";
if (scopeID != UUID.Zero)
sql += " and ScopeID = @scopeID";
sql += " order by regionName";
using (SqlConnection conn = new SqlConnection(m_ConnectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
@@ -311,26 +310,7 @@ namespace OpenSim.Data.MSSQL
public List<RegionData> GetDefaultRegions(UUID scopeID)
{
return Get((int)RegionFlags.DefaultRegion, scopeID);
}
public List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y)
{
List<RegionData> regions = Get((int)RegionFlags.FallbackRegion, scopeID);
RegionDataDistanceCompare distanceComparer = new RegionDataDistanceCompare(x, y);
regions.Sort(distanceComparer);
return regions;
}
public List<RegionData> GetHyperlinks(UUID scopeID)
{
return Get((int)RegionFlags.Hyperlink, scopeID);
}
private List<RegionData> Get(int regionFlags, UUID scopeID)
{
string sql = "SELECT * FROM [" + m_Realm + "] WHERE (flags & " + regionFlags.ToString() + ") <> 0";
string sql = "SELECT * FROM [" + m_Realm + "] WHERE (flags & 1) <> 0";
if (scopeID != UUID.Zero)
sql += " AND ScopeID = @scopeID";
@@ -341,6 +321,23 @@ namespace OpenSim.Data.MSSQL
conn.Open();
return RunCommand(cmd);
}
}
public List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y)
{
string sql = "SELECT * FROM [" + m_Realm + "] WHERE (flags & 2) <> 0";
if (scopeID != UUID.Zero)
sql += " AND ScopeID = @scopeID";
using (SqlConnection conn = new SqlConnection(m_ConnectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.Add(m_database.CreateParameter("@scopeID", scopeID));
conn.Open();
// TODO: distance-sort results
return RunCommand(cmd);
}
}
}
}

View File

@@ -218,27 +218,23 @@ namespace OpenSim.Data.MSSQL
if (words.Length > 2)
return new UserAccountData[0];
string sql = "";
using (SqlConnection conn = new SqlConnection(m_ConnectionString))
using (SqlCommand cmd = new SqlCommand())
{
if (words.Length == 1)
{
sql = String.Format("select * from {0} where ([ScopeID]=@ScopeID or [ScopeID]='00000000-0000-0000-0000-000000000000') and ([FirstName] like @search or [LastName] like @search)", m_Realm);
cmd.CommandText = String.Format("select * from {0} where ([ScopeID]=@ScopeID or [ScopeID]='00000000-0000-0000-0000-000000000000') and ([FirstName] like @search or [LastName] like @search)", m_Realm);
cmd.Parameters.Add(m_database.CreateParameter("@scopeID", scopeID));
cmd.Parameters.Add(m_database.CreateParameter("@search", "%" + words[0] + "%"));
cmd.Parameters.Add(m_database.CreateParameter("@search", "%" + words[0] + "%"));
}
else
{
sql = String.Format("select * from {0} where ([ScopeID]=@ScopeID or [ScopeID]='00000000-0000-0000-0000-000000000000') and ([FirstName] like @searchFirst or [LastName] like @searchLast)", m_Realm);
cmd.Parameters.Add(m_database.CreateParameter("@searchFirst", "%" + words[0] + "%"));
cmd.Parameters.Add(m_database.CreateParameter("@searchLast", "%" + words[1] + "%"));
cmd.Parameters.Add(m_database.CreateParameter("@ScopeID", scopeID.ToString()));
cmd.CommandText = String.Format("select * from {0} where ([ScopeID]=@ScopeID or [ScopeID]='00000000-0000-0000-0000-000000000000') and ([FirstName] like @searchFirst or [LastName] like @searchLast)", m_Realm);
cmd.Parameters.Add(m_database.CreateParameter("@searchFirst", "%" + words[0] + "%"));
cmd.Parameters.Add(m_database.CreateParameter("@searchLast", "%" + words[1] + "%"));
cmd.Parameters.Add(m_database.CreateParameter("@ScopeID", scopeID.ToString()));
}
cmd.Connection = conn;
cmd.CommandText = sql;
conn.Open();
return DoQuery(cmd);
}
}

View File

@@ -40,8 +40,8 @@ namespace OpenSim.Data.MSSQL
{
public class MSSQLXInventoryData : IXInventoryData
{
// private static readonly ILog m_log = LogManager.GetLogger(
// MethodBase.GetCurrentMethod().DeclaringType);
private static readonly ILog m_log = LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType);
private MSSQLGenericTableHandler<XInventoryFolder> m_Folders;
private MSSQLItemHandler m_Items;
@@ -66,18 +66,11 @@ namespace OpenSim.Data.MSSQL
public bool StoreFolder(XInventoryFolder folder)
{
if (folder.folderName.Length > 64)
folder.folderName = folder.folderName.Substring(0, 64);
return m_Folders.Store(folder);
}
public bool StoreItem(XInventoryItem item)
{
if (item.inventoryName.Length > 64)
item.inventoryName = item.inventoryName.Substring(0, 64);
if (item.inventoryDescription.Length > 128)
item.inventoryDescription = item.inventoryDescription.Substring(0, 128);
return m_Items.Store(item);
}
@@ -85,19 +78,12 @@ namespace OpenSim.Data.MSSQL
{
return m_Folders.Delete(field, val);
}
public bool DeleteFolders(string[] fields, string[] vals)
{
return m_Folders.Delete(fields, vals);
}
public bool DeleteItems(string field, string val)
{
return m_Items.Delete(field, val);
}
public bool DeleteItems(string[] fields, string[] vals)
{
return m_Items.Delete(fields, vals);
}
public bool MoveItem(string id, string newParent)
{
return m_Items.MoveItem(id, newParent);
@@ -176,27 +162,5 @@ namespace OpenSim.Data.MSSQL
}
}
public override bool Store(XInventoryItem item)
{
if (!base.Store(item))
return false;
string sql = "update inventoryfolders set version=version+1 where folderID = @folderID";
using (SqlConnection conn = new SqlConnection(m_ConnectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
conn.Open();
cmd.Parameters.AddWithValue("@folderID", item.parentFolderID.ToString());
try
{
cmd.ExecuteNonQuery();
}
catch (Exception)
{
return false;
}
}
return true;
}
}
}

View File

@@ -0,0 +1,13 @@
CREATE TABLE [assets] (
[id] [varchar](36) NOT NULL,
[name] [varchar](64) NOT NULL,
[description] [varchar](64) NOT NULL,
[assetType] [tinyint] NOT NULL,
[local] [tinyint] NOT NULL,
[temporary] [tinyint] NOT NULL,
[data] [image] NOT NULL,
PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

View File

@@ -1,5 +1,3 @@
:VERSION 1
BEGIN TRANSACTION
CREATE TABLE [auth] (
@@ -16,17 +14,4 @@ CREATE TABLE [tokens] (
[validity] [datetime] NOT NULL )
ON [PRIMARY]
COMMIT
:VERSION 2
BEGIN TRANSACTION
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[users]') AND type in (N'U'))
INSERT INTO auth (UUID, passwordHash, passwordSalt, webLoginKey, accountType) SELECT [UUID] AS UUID, [passwordHash] AS passwordHash, [passwordSalt] AS passwordSalt, [webLoginKey] AS webLoginKey, 'UserAccount' as [accountType] FROM users;
COMMIT
COMMIT

View File

@@ -0,0 +1,15 @@
BEGIN TRANSACTION
CREATE TABLE [Avatars] (
[PrincipalID] uniqueidentifier NOT NULL,
[Name] varchar(32) NOT NULL,
[Value] varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY CLUSTERED
(
[PrincipalID] ASC, [Name] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
COMMIT

View File

@@ -0,0 +1,85 @@
BEGIN TRANSACTION
CREATE TABLE [dbo].[estate_managers](
[EstateID] [int] NOT NULL,
[uuid] [varchar](36) NOT NULL,
CONSTRAINT [PK_estate_managers] PRIMARY KEY CLUSTERED
(
[EstateID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY];
CREATE TABLE [dbo].[estate_groups](
[EstateID] [int] NOT NULL,
[uuid] [varchar](36) NOT NULL,
CONSTRAINT [PK_estate_groups] PRIMARY KEY CLUSTERED
(
[EstateID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY];
CREATE TABLE [dbo].[estate_users](
[EstateID] [int] NOT NULL,
[uuid] [varchar](36) NOT NULL,
CONSTRAINT [PK_estate_users] PRIMARY KEY CLUSTERED
(
[EstateID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY];
CREATE TABLE [dbo].[estateban](
[EstateID] [int] NOT NULL,
[bannedUUID] [varchar](36) NOT NULL,
[bannedIp] [varchar](16) NOT NULL,
[bannedIpHostMask] [varchar](16) NOT NULL,
[bannedNameMask] [varchar](64) NULL DEFAULT (NULL),
CONSTRAINT [PK_estateban] PRIMARY KEY CLUSTERED
(
[EstateID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY];
CREATE TABLE [dbo].[estate_settings](
[EstateID] [int] IDENTITY(1,100) NOT NULL,
[EstateName] [varchar](64) NULL DEFAULT (NULL),
[AbuseEmailToEstateOwner] [bit] NOT NULL,
[DenyAnonymous] [bit] NOT NULL,
[ResetHomeOnTeleport] [bit] NOT NULL,
[FixedSun] [bit] NOT NULL,
[DenyTransacted] [bit] NOT NULL,
[BlockDwell] [bit] NOT NULL,
[DenyIdentified] [bit] NOT NULL,
[AllowVoice] [bit] NOT NULL,
[UseGlobalTime] [bit] NOT NULL,
[PricePerMeter] [int] NOT NULL,
[TaxFree] [bit] NOT NULL,
[AllowDirectTeleport] [bit] NOT NULL,
[RedirectGridX] [int] NOT NULL,
[RedirectGridY] [int] NOT NULL,
[ParentEstateID] [int] NOT NULL,
[SunPosition] [float] NOT NULL,
[EstateSkipScripts] [bit] NOT NULL,
[BillableFactor] [float] NOT NULL,
[PublicAccess] [bit] NOT NULL,
[AbuseEmail] [varchar](255) NOT NULL,
[EstateOwner] [varchar](36) NOT NULL,
[DenyMinors] [bit] NOT NULL,
CONSTRAINT [PK_estate_settings] PRIMARY KEY CLUSTERED
(
[EstateID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY];
CREATE TABLE [dbo].[estate_map](
[RegionID] [varchar](36) NOT NULL DEFAULT ('00000000-0000-0000-0000-000000000000'),
[EstateID] [int] NOT NULL,
CONSTRAINT [PK_estate_map] PRIMARY KEY CLUSTERED
(
[RegionID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY];
COMMIT

View File

@@ -0,0 +1,11 @@
BEGIN TRANSACTION
CREATE TABLE [Friends] (
[PrincipalID] uniqueidentifier NOT NULL,
[Friend] varchar(255) NOT NULL,
[Flags] char(16) NOT NULL DEFAULT '0',
[Offered] varchar(32) NOT NULL DEFAULT 0)
ON [PRIMARY]
COMMIT

View File

@@ -0,0 +1,37 @@
BEGIN TRANSACTION
CREATE TABLE [dbo].[regions](
[regionHandle] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[regionName] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[uuid] [varchar](255) COLLATE Latin1_General_CI_AS NOT NULL,
[regionRecvKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[regionSecret] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[regionSendKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[regionDataURI] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[serverIP] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[serverPort] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[serverURI] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[locX] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[locY] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[locZ] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[eastOverrideHandle] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[westOverrideHandle] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[southOverrideHandle] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[northOverrideHandle] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[regionAssetURI] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[regionAssetRecvKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[regionAssetSendKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[regionUserURI] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[regionUserRecvKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[regionUserSendKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[regionMapTexture] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[serverHttpPort] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[serverRemotingPort] [varchar](255) COLLATE Latin1_General_CI_AS NULL,
[owner_uuid] [varchar](36) COLLATE Latin1_General_CI_AS NULL,
PRIMARY KEY CLUSTERED
(
[uuid] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
COMMIT

View File

@@ -0,0 +1,64 @@
BEGIN TRANSACTION
CREATE TABLE [inventoryfolders] (
[folderID] [varchar](36) NOT NULL default '',
[agentID] [varchar](36) default NULL,
[parentFolderID] [varchar](36) default NULL,
[folderName] [varchar](64) default NULL,
[type] [smallint] NOT NULL default 0,
[version] [int] NOT NULL default 0,
PRIMARY KEY CLUSTERED
(
[folderID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE NONCLUSTERED INDEX [owner] ON [inventoryfolders]
(
[agentID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
CREATE NONCLUSTERED INDEX [parent] ON [inventoryfolders]
(
[parentFolderID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
CREATE TABLE [inventoryitems] (
[inventoryID] [varchar](36) NOT NULL default '',
[assetID] [varchar](36) default NULL,
[assetType] [int] default NULL,
[parentFolderID] [varchar](36) default NULL,
[avatarID] [varchar](36) default NULL,
[inventoryName] [varchar](64) default NULL,
[inventoryDescription] [varchar](128) default NULL,
[inventoryNextPermissions] [int] default NULL,
[inventoryCurrentPermissions] [int] default NULL,
[invType] [int] default NULL,
[creatorID] [varchar](36) default NULL,
[inventoryBasePermissions] [int] NOT NULL default 0,
[inventoryEveryOnePermissions] [int] NOT NULL default 0,
[salePrice] [int] default NULL,
[saleType] [tinyint] default NULL,
[creationDate] [int] default NULL,
[groupID] [varchar](36) default NULL,
[groupOwned] [bit] default NULL,
[flags] [int] default NULL,
PRIMARY KEY CLUSTERED
(
[inventoryID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE NONCLUSTERED INDEX [owner] ON [inventoryitems]
(
[avatarID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
CREATE NONCLUSTERED INDEX [folder] ON [inventoryitems]
(
[parentFolderID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
COMMIT

View File

@@ -1,5 +1,3 @@
:VERSION 1
BEGIN TRANSACTION
CREATE TABLE [logs] (

View File

@@ -0,0 +1,19 @@
BEGIN TRANSACTION
CREATE TABLE [Presence] (
[UserID] varchar(255) NOT NULL,
[RegionID] uniqueidentifier NOT NULL,
[SessionID] uniqueidentifier NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000',
[SecureSessionID] uniqueidentifier NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000',
[Online] char(5) NOT NULL DEFAULT 'false',
[Login] char(16) NOT NULL DEFAULT '0',
[Logout] char(16) NOT NULL DEFAULT '0',
[Position] char(64) NOT NULL DEFAULT '<0,0,0>',
[LookAt] char(64) NOT NULL DEFAULT '<0,0,0>',
[HomeRegionID] uniqueidentifier NOT NULL,
[HomePosition] CHAR(64) NOT NULL DEFAULT '<0,0,0>',
[HomeLookAt] CHAR(64) NOT NULL DEFAULT '<0,0,0>',
)
ON [PRIMARY]
COMMIT

View File

@@ -0,0 +1,161 @@
CREATE TABLE [dbo].[prims](
[UUID] [varchar](255) NOT NULL,
[RegionUUID] [varchar](255) NULL,
[ParentID] [int] NULL,
[CreationDate] [int] NULL,
[Name] [varchar](255) NULL,
[SceneGroupID] [varchar](255) NULL,
[Text] [varchar](255) NULL,
[Description] [varchar](255) NULL,
[SitName] [varchar](255) NULL,
[TouchName] [varchar](255) NULL,
[ObjectFlags] [int] NULL,
[CreatorID] [varchar](255) NULL,
[OwnerID] [varchar](255) NULL,
[GroupID] [varchar](255) NULL,
[LastOwnerID] [varchar](255) NULL,
[OwnerMask] [int] NULL,
[NextOwnerMask] [int] NULL,
[GroupMask] [int] NULL,
[EveryoneMask] [int] NULL,
[BaseMask] [int] NULL,
[PositionX] [float] NULL,
[PositionY] [float] NULL,
[PositionZ] [float] NULL,
[GroupPositionX] [float] NULL,
[GroupPositionY] [float] NULL,
[GroupPositionZ] [float] NULL,
[VelocityX] [float] NULL,
[VelocityY] [float] NULL,
[VelocityZ] [float] NULL,
[AngularVelocityX] [float] NULL,
[AngularVelocityY] [float] NULL,
[AngularVelocityZ] [float] NULL,
[AccelerationX] [float] NULL,
[AccelerationY] [float] NULL,
[AccelerationZ] [float] NULL,
[RotationX] [float] NULL,
[RotationY] [float] NULL,
[RotationZ] [float] NULL,
[RotationW] [float] NULL,
[SitTargetOffsetX] [float] NULL,
[SitTargetOffsetY] [float] NULL,
[SitTargetOffsetZ] [float] NULL,
[SitTargetOrientW] [float] NULL,
[SitTargetOrientX] [float] NULL,
[SitTargetOrientY] [float] NULL,
[SitTargetOrientZ] [float] NULL,
PRIMARY KEY CLUSTERED
(
[UUID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[primshapes](
[UUID] [varchar](255) NOT NULL,
[Shape] [int] NULL,
[ScaleX] [float] NULL,
[ScaleY] [float] NULL,
[ScaleZ] [float] NULL,
[PCode] [int] NULL,
[PathBegin] [int] NULL,
[PathEnd] [int] NULL,
[PathScaleX] [int] NULL,
[PathScaleY] [int] NULL,
[PathShearX] [int] NULL,
[PathShearY] [int] NULL,
[PathSkew] [int] NULL,
[PathCurve] [int] NULL,
[PathRadiusOffset] [int] NULL,
[PathRevolutions] [int] NULL,
[PathTaperX] [int] NULL,
[PathTaperY] [int] NULL,
[PathTwist] [int] NULL,
[PathTwistBegin] [int] NULL,
[ProfileBegin] [int] NULL,
[ProfileEnd] [int] NULL,
[ProfileCurve] [int] NULL,
[ProfileHollow] [int] NULL,
[State] [int] NULL,
[Texture] [image] NULL,
[ExtraParams] [image] NULL,
PRIMARY KEY CLUSTERED
(
[UUID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE TABLE [dbo].[primitems](
[itemID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[primID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[assetID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[parentFolderID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[invType] [int] NULL,
[assetType] [int] NULL,
[name] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[description] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[creationDate] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[creatorID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ownerID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[lastOwnerID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[groupID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[nextPermissions] [int] NULL,
[currentPermissions] [int] NULL,
[basePermissions] [int] NULL,
[everyonePermissions] [int] NULL,
[groupPermissions] [int] NULL,
PRIMARY KEY CLUSTERED
(
[itemID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[terrain](
[RegionUUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Revision] [int] NULL,
[Heightfield] [image] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE TABLE [dbo].[land](
[UUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[RegionUUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[LocalLandID] [int] NULL,
[Bitmap] [image] NULL,
[Name] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Description] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[OwnerUUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[IsGroupOwned] [int] NULL,
[Area] [int] NULL,
[AuctionID] [int] NULL,
[Category] [int] NULL,
[ClaimDate] [int] NULL,
[ClaimPrice] [int] NULL,
[GroupUUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[SalePrice] [int] NULL,
[LandStatus] [int] NULL,
[LandFlags] [int] NULL,
[LandingType] [int] NULL,
[MediaAutoScale] [int] NULL,
[MediaTextureUUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[MediaURL] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[MusicURL] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[PassHours] [float] NULL,
[PassPrice] [int] NULL,
[SnapshotUUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[UserLocationX] [float] NULL,
[UserLocationY] [float] NULL,
[UserLocationZ] [float] NULL,
[UserLookAtX] [float] NULL,
[UserLookAtY] [float] NULL,
[UserLookAtZ] [float] NULL,
PRIMARY KEY CLUSTERED
(
[UUID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE TABLE [dbo].[landaccesslist](
[LandUUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[AccessUUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Flags] [int] NULL
) ON [PRIMARY]

View File

@@ -0,0 +1,14 @@
CREATE TABLE [UserAccounts] (
[PrincipalID] uniqueidentifier NOT NULL,
[ScopeID] uniqueidentifier NOT NULL,
[FirstName] [varchar](64) NOT NULL,
[LastName] [varchar](64) NOT NULL,
[Email] [varchar](64) NULL,
[ServiceURLs] [text] NULL,
[Created] [int] default NULL,
PRIMARY KEY CLUSTERED
(
[PrincipalID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

View File

@@ -0,0 +1,112 @@
CREATE TABLE [users] (
[UUID] [varchar](36) NOT NULL default '',
[username] [varchar](32) NOT NULL,
[lastname] [varchar](32) NOT NULL,
[passwordHash] [varchar](32) NOT NULL,
[passwordSalt] [varchar](32) NOT NULL,
[homeRegion] [bigint] default NULL,
[homeLocationX] [float] default NULL,
[homeLocationY] [float] default NULL,
[homeLocationZ] [float] default NULL,
[homeLookAtX] [float] default NULL,
[homeLookAtY] [float] default NULL,
[homeLookAtZ] [float] default NULL,
[created] [int] NOT NULL,
[lastLogin] [int] NOT NULL,
[userInventoryURI] [varchar](255) default NULL,
[userAssetURI] [varchar](255) default NULL,
[profileCanDoMask] [int] default NULL,
[profileWantDoMask] [int] default NULL,
[profileAboutText] [ntext],
[profileFirstText] [ntext],
[profileImage] [varchar](36) default NULL,
[profileFirstImage] [varchar](36) default NULL,
[webLoginKey] [varchar](36) default NULL,
PRIMARY KEY CLUSTERED
(
[UUID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE NONCLUSTERED INDEX [usernames] ON [users]
(
[username] ASC,
[lastname] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
CREATE TABLE [agents] (
[UUID] [varchar](36) NOT NULL,
[sessionID] [varchar](36) NOT NULL,
[secureSessionID] [varchar](36) NOT NULL,
[agentIP] [varchar](16) NOT NULL,
[agentPort] [int] NOT NULL,
[agentOnline] [tinyint] NOT NULL,
[loginTime] [int] NOT NULL,
[logoutTime] [int] NOT NULL,
[currentRegion] [varchar](36) NOT NULL,
[currentHandle] [bigint] NOT NULL,
[currentPos] [varchar](64) NOT NULL,
PRIMARY KEY CLUSTERED
(
[UUID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE NONCLUSTERED INDEX [session] ON [agents]
(
[sessionID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
CREATE NONCLUSTERED INDEX [ssession] ON [agents]
(
[secureSessionID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
CREATE TABLE [dbo].[userfriends](
[ownerID] [varchar](50) COLLATE Latin1_General_CI_AS NOT NULL,
[friendID] [varchar](50) COLLATE Latin1_General_CI_AS NOT NULL,
[friendPerms] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[datetimestamp] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
) ON [PRIMARY]
CREATE TABLE [avatarappearance] (
[Owner] [varchar](36) NOT NULL,
[Serial] int NOT NULL,
[Visual_Params] [image] NOT NULL,
[Texture] [image] NOT NULL,
[Avatar_Height] float NOT NULL,
[Body_Item] [varchar](36) NOT NULL,
[Body_Asset] [varchar](36) NOT NULL,
[Skin_Item] [varchar](36) NOT NULL,
[Skin_Asset] [varchar](36) NOT NULL,
[Hair_Item] [varchar](36) NOT NULL,
[Hair_Asset] [varchar](36) NOT NULL,
[Eyes_Item] [varchar](36) NOT NULL,
[Eyes_Asset] [varchar](36) NOT NULL,
[Shirt_Item] [varchar](36) NOT NULL,
[Shirt_Asset] [varchar](36) NOT NULL,
[Pants_Item] [varchar](36) NOT NULL,
[Pants_Asset] [varchar](36) NOT NULL,
[Shoes_Item] [varchar](36) NOT NULL,
[Shoes_Asset] [varchar](36) NOT NULL,
[Socks_Item] [varchar](36) NOT NULL,
[Socks_Asset] [varchar](36) NOT NULL,
[Jacket_Item] [varchar](36) NOT NULL,
[Jacket_Asset] [varchar](36) NOT NULL,
[Gloves_Item] [varchar](36) NOT NULL,
[Gloves_Asset] [varchar](36) NOT NULL,
[Undershirt_Item] [varchar](36) NOT NULL,
[Undershirt_Asset] [varchar](36) NOT NULL,
[Underpants_Item] [varchar](36) NOT NULL,
[Underpants_Asset] [varchar](36) NOT NULL,
[Skirt_Item] [varchar](36) NOT NULL,
[Skirt_Asset] [varchar](36) NOT NULL,
PRIMARY KEY CLUSTERED (
[Owner]
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

View File

@@ -0,0 +1,29 @@
BEGIN TRANSACTION
CREATE TABLE Tmp_assets
(
id varchar(36) NOT NULL,
name varchar(64) NOT NULL,
description varchar(64) NOT NULL,
assetType tinyint NOT NULL,
local bit NOT NULL,
temporary bit NOT NULL,
data image NOT NULL
) ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
IF EXISTS(SELECT * FROM assets)
EXEC('INSERT INTO Tmp_assets (id, name, description, assetType, local, temporary, data)
SELECT id, name, description, assetType, CONVERT(bit, local), CONVERT(bit, temporary), data FROM assets WITH (HOLDLOCK TABLOCKX)')
DROP TABLE assets
EXECUTE sp_rename N'Tmp_assets', N'assets', 'OBJECT'
ALTER TABLE dbo.assets ADD CONSTRAINT
PK__assets__id PRIMARY KEY CLUSTERED
(
id
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
COMMIT

View File

@@ -0,0 +1,6 @@
BEGIN TRANSACTION
INSERT INTO auth (UUID, passwordHash, passwordSalt, webLoginKey, accountType) SELECT [UUID] AS UUID, [passwordHash] AS passwordHash, [passwordSalt] AS passwordSalt, [webLoginKey] AS webLoginKey, 'UserAccount' as [accountType] FROM users;
COMMIT

View File

@@ -0,0 +1,25 @@
BEGIN TRANSACTION
ALTER TABLE dbo.estate_managers DROP CONSTRAINT PK_estate_managers
CREATE NONCLUSTERED INDEX IX_estate_managers ON dbo.estate_managers
(
EstateID
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
ALTER TABLE dbo.estate_groups DROP CONSTRAINT PK_estate_groups
CREATE NONCLUSTERED INDEX IX_estate_groups ON dbo.estate_groups
(
EstateID
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
ALTER TABLE dbo.estate_users DROP CONSTRAINT PK_estate_users
CREATE NONCLUSTERED INDEX IX_estate_users ON dbo.estate_users
(
EstateID
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
COMMIT

View File

@@ -0,0 +1,6 @@
BEGIN TRANSACTION
INSERT INTO Friends (PrincipalID, Friend, Flags, Offered) SELECT [ownerID], [friendID], [friendPerms], 0 FROM userfriends;
COMMIT

View File

@@ -0,0 +1,49 @@
BEGIN TRANSACTION
CREATE TABLE Tmp_regions
(
uuid varchar(36) COLLATE Latin1_General_CI_AS NOT NULL,
regionHandle bigint NULL,
regionName varchar(20) NULL,
regionRecvKey varchar(128) NULL,
regionSendKey varchar(128) NULL,
regionSecret varchar(128) NULL,
regionDataURI varchar(128) NULL,
serverIP varchar(64) NULL,
serverPort int NULL,
serverURI varchar(255) NULL,
locX int NULL,
locY int NULL,
locZ int NULL,
eastOverrideHandle bigint NULL,
westOverrideHandle bigint NULL,
southOverrideHandle bigint NULL,
northOverrideHandle bigint NULL,
regionAssetURI varchar(255) NULL,
regionAssetRecvKey varchar(128) NULL,
regionAssetSendKey varchar(128) NULL,
regionUserURI varchar(255) NULL,
regionUserRecvKey varchar(128) NULL,
regionUserSendKey varchar(128) NULL,
regionMapTexture varchar(36) NULL,
serverHttpPort int NULL,
serverRemotingPort int NULL,
owner_uuid varchar(36) NULL,
originUUID varchar(36) NOT NULL DEFAULT ('00000000-0000-0000-0000-000000000000')
) ON [PRIMARY]
IF EXISTS(SELECT * FROM regions)
EXEC('INSERT INTO Tmp_regions (uuid, regionHandle, regionName, regionRecvKey, regionSendKey, regionSecret, regionDataURI, serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey, regionMapTexture, serverHttpPort, serverRemotingPort, owner_uuid)
SELECT CONVERT(varchar(36), uuid), CONVERT(bigint, regionHandle), CONVERT(varchar(20), regionName), CONVERT(varchar(128), regionRecvKey), CONVERT(varchar(128), regionSendKey), CONVERT(varchar(128), regionSecret), CONVERT(varchar(128), regionDataURI), CONVERT(varchar(64), serverIP), CONVERT(int, serverPort), serverURI, CONVERT(int, locX), CONVERT(int, locY), CONVERT(int, locZ), CONVERT(bigint, eastOverrideHandle), CONVERT(bigint, westOverrideHandle), CONVERT(bigint, southOverrideHandle), CONVERT(bigint, northOverrideHandle), regionAssetURI, CONVERT(varchar(128), regionAssetRecvKey), CONVERT(varchar(128), regionAssetSendKey), regionUserURI, CONVERT(varchar(128), regionUserRecvKey), CONVERT(varchar(128), regionUserSendKey), CONVERT(varchar(36), regionMapTexture), CONVERT(int, serverHttpPort), CONVERT(int, serverRemotingPort), owner_uuid FROM regions')
DROP TABLE regions
EXECUTE sp_rename N'Tmp_regions', N'regions', 'OBJECT'
ALTER TABLE regions ADD CONSTRAINT
PK__regions__uuid PRIMARY KEY CLUSTERED
(
uuid
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
COMMIT

View File

@@ -0,0 +1,5 @@
BEGIN TRANSACTION
ALTER TABLE inventoryitems ADD inventoryGroupPermissions INTEGER NOT NULL default 0
COMMIT

View File

@@ -0,0 +1,6 @@
BEGIN TRANSACTION
CREATE UNIQUE INDEX SessionID ON Presence(SessionID);
CREATE INDEX UserID ON Presence(UserID);
COMMIT

View File

@@ -0,0 +1,50 @@
BEGIN TRANSACTION
CREATE TABLE regionban (
[regionUUID] VARCHAR(36) NOT NULL,
[bannedUUID] VARCHAR(36) NOT NULL,
[bannedIp] VARCHAR(16) NOT NULL,
[bannedIpHostMask] VARCHAR(16) NOT NULL)
create table [dbo].[regionsettings] (
[regionUUID] [varchar](36) not null,
[block_terraform] [bit] not null,
[block_fly] [bit] not null,
[allow_damage] [bit] not null,
[restrict_pushing] [bit] not null,
[allow_land_resell] [bit] not null,
[allow_land_join_divide] [bit] not null,
[block_show_in_search] [bit] not null,
[agent_limit] [int] not null,
[object_bonus] [float] not null,
[maturity] [int] not null,
[disable_scripts] [bit] not null,
[disable_collisions] [bit] not null,
[disable_physics] [bit] not null,
[terrain_texture_1] [varchar](36) not null,
[terrain_texture_2] [varchar](36) not null,
[terrain_texture_3] [varchar](36) not null,
[terrain_texture_4] [varchar](36) not null,
[elevation_1_nw] [float] not null,
[elevation_2_nw] [float] not null,
[elevation_1_ne] [float] not null,
[elevation_2_ne] [float] not null,
[elevation_1_se] [float] not null,
[elevation_2_se] [float] not null,
[elevation_1_sw] [float] not null,
[elevation_2_sw] [float] not null,
[water_height] [float] not null,
[terrain_raise_limit] [float] not null,
[terrain_lower_limit] [float] not null,
[use_estate_sun] [bit] not null,
[fixed_sun] [bit] not null,
[sun_position] [float] not null,
[covenant] [varchar](36) default NULL,
[Sandbox] [bit] NOT NULL,
PRIMARY KEY CLUSTERED
(
[regionUUID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
COMMIT

View File

@@ -0,0 +1,12 @@
BEGIN TRANSACTION
INSERT INTO UserAccounts (PrincipalID, ScopeID, FirstName, LastName, Email, ServiceURLs, Created) SELECT [UUID] AS PrincipalID, '00000000-0000-0000-0000-000000000000' AS ScopeID,
username AS FirstName,
lastname AS LastName,
email as Email, (
'AssetServerURI=' +
userAssetURI + ' InventoryServerURI=' + userInventoryURI + ' GatewayURI= HomeURI=') AS ServiceURLs,
created as Created FROM users;
COMMIT

View File

@@ -0,0 +1,9 @@
BEGIN TRANSACTION
ALTER TABLE users ADD homeRegionID varchar(36) NOT NULL default '00000000-0000-0000-0000-000000000000';
ALTER TABLE users ADD userFlags int NOT NULL default 0;
ALTER TABLE users ADD godLevel int NOT NULL default 0;
ALTER TABLE users ADD customType varchar(32) not null default '';
ALTER TABLE users ADD partner varchar(36) not null default '00000000-0000-0000-0000-000000000000';
COMMIT

View File

@@ -0,0 +1,6 @@
BEGIN TRANSACTION
ALTER TABLE assets add create_time integer default 0
ALTER TABLE assets add access_time integer default 0
COMMIT

View File

@@ -0,0 +1,25 @@
BEGIN TRANSACTION
CREATE TABLE dbo.Tmp_estateban
(
EstateID int NOT NULL,
bannedUUID varchar(36) NOT NULL,
bannedIp varchar(16) NULL,
bannedIpHostMask varchar(16) NULL,
bannedNameMask varchar(64) NULL
) ON [PRIMARY]
IF EXISTS(SELECT * FROM dbo.estateban)
EXEC('INSERT INTO dbo.Tmp_estateban (EstateID, bannedUUID, bannedIp, bannedIpHostMask, bannedNameMask)
SELECT EstateID, bannedUUID, bannedIp, bannedIpHostMask, bannedNameMask FROM dbo.estateban')
DROP TABLE dbo.estateban
EXECUTE sp_rename N'dbo.Tmp_estateban', N'estateban', 'OBJECT'
CREATE NONCLUSTERED INDEX IX_estateban ON dbo.estateban
(
EstateID
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
COMMIT

View File

@@ -0,0 +1,22 @@
BEGIN TRANSACTION
CREATE NONCLUSTERED INDEX IX_regions_name ON dbo.regions
(
regionName
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
CREATE NONCLUSTERED INDEX IX_regions_handle ON dbo.regions
(
regionHandle
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
CREATE NONCLUSTERED INDEX IX_regions_override ON dbo.regions
(
eastOverrideHandle,
westOverrideHandle,
southOverrideHandle,
northOverrideHandle
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
COMMIT

View File

@@ -0,0 +1,38 @@
/* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/
BEGIN TRANSACTION
CREATE TABLE dbo.Tmp_inventoryfolders
(
folderID uniqueidentifier NOT NULL DEFAULT ('00000000-0000-0000-0000-000000000000'),
agentID uniqueidentifier NULL DEFAULT (NULL),
parentFolderID uniqueidentifier NULL DEFAULT (NULL),
folderName varchar(64) NULL DEFAULT (NULL),
type smallint NOT NULL DEFAULT ((0)),
version int NOT NULL DEFAULT ((0))
) ON [PRIMARY]
IF EXISTS(SELECT * FROM dbo.inventoryfolders)
EXEC('INSERT INTO dbo.Tmp_inventoryfolders (folderID, agentID, parentFolderID, folderName, type, version)
SELECT CONVERT(uniqueidentifier, folderID), CONVERT(uniqueidentifier, agentID), CONVERT(uniqueidentifier, parentFolderID), folderName, type, version FROM dbo.inventoryfolders WITH (HOLDLOCK TABLOCKX)')
DROP TABLE dbo.inventoryfolders
EXECUTE sp_rename N'dbo.Tmp_inventoryfolders', N'inventoryfolders', 'OBJECT'
ALTER TABLE dbo.inventoryfolders ADD CONSTRAINT
PK__inventor__C2FABFB3173876EA PRIMARY KEY CLUSTERED
(
folderID
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
CREATE NONCLUSTERED INDEX owner ON dbo.inventoryfolders
(
agentID
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
CREATE NONCLUSTERED INDEX parent ON dbo.inventoryfolders
(
parentFolderID
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
COMMIT

View File

@@ -0,0 +1,67 @@
BEGIN TRANSACTION
CREATE TABLE dbo.Tmp_prims
(
UUID varchar(36) NOT NULL,
RegionUUID varchar(36) NULL,
ParentID int NULL,
CreationDate int NULL,
Name varchar(255) NULL,
SceneGroupID varchar(36) NULL,
Text varchar(255) NULL,
Description varchar(255) NULL,
SitName varchar(255) NULL,
TouchName varchar(255) NULL,
ObjectFlags int NULL,
CreatorID varchar(36) NULL,
OwnerID varchar(36) NULL,
GroupID varchar(36) NULL,
LastOwnerID varchar(36) NULL,
OwnerMask int NULL,
NextOwnerMask int NULL,
GroupMask int NULL,
EveryoneMask int NULL,
BaseMask int NULL,
PositionX float(53) NULL,
PositionY float(53) NULL,
PositionZ float(53) NULL,
GroupPositionX float(53) NULL,
GroupPositionY float(53) NULL,
GroupPositionZ float(53) NULL,
VelocityX float(53) NULL,
VelocityY float(53) NULL,
VelocityZ float(53) NULL,
AngularVelocityX float(53) NULL,
AngularVelocityY float(53) NULL,
AngularVelocityZ float(53) NULL,
AccelerationX float(53) NULL,
AccelerationY float(53) NULL,
AccelerationZ float(53) NULL,
RotationX float(53) NULL,
RotationY float(53) NULL,
RotationZ float(53) NULL,
RotationW float(53) NULL,
SitTargetOffsetX float(53) NULL,
SitTargetOffsetY float(53) NULL,
SitTargetOffsetZ float(53) NULL,
SitTargetOrientW float(53) NULL,
SitTargetOrientX float(53) NULL,
SitTargetOrientY float(53) NULL,
SitTargetOrientZ float(53) NULL
) ON [PRIMARY]
IF EXISTS(SELECT * FROM dbo.prims)
EXEC('INSERT INTO dbo.Tmp_prims (UUID, RegionUUID, ParentID, CreationDate, Name, SceneGroupID, Text, Description, SitName, TouchName, ObjectFlags, CreatorID, OwnerID, GroupID, LastOwnerID, OwnerMask, NextOwnerMask, GroupMask, EveryoneMask, BaseMask, PositionX, PositionY, PositionZ, GroupPositionX, GroupPositionY, GroupPositionZ, VelocityX, VelocityY, VelocityZ, AngularVelocityX, AngularVelocityY, AngularVelocityZ, AccelerationX, AccelerationY, AccelerationZ, RotationX, RotationY, RotationZ, RotationW, SitTargetOffsetX, SitTargetOffsetY, SitTargetOffsetZ, SitTargetOrientW, SitTargetOrientX, SitTargetOrientY, SitTargetOrientZ)
SELECT CONVERT(varchar(36), UUID), CONVERT(varchar(36), RegionUUID), ParentID, CreationDate, Name, CONVERT(varchar(36), SceneGroupID), Text, Description, SitName, TouchName, ObjectFlags, CONVERT(varchar(36), CreatorID), CONVERT(varchar(36), OwnerID), CONVERT(varchar(36), GroupID), CONVERT(varchar(36), LastOwnerID), OwnerMask, NextOwnerMask, GroupMask, EveryoneMask, BaseMask, PositionX, PositionY, PositionZ, GroupPositionX, GroupPositionY, GroupPositionZ, VelocityX, VelocityY, VelocityZ, AngularVelocityX, AngularVelocityY, AngularVelocityZ, AccelerationX, AccelerationY, AccelerationZ, RotationX, RotationY, RotationZ, RotationW, SitTargetOffsetX, SitTargetOffsetY, SitTargetOffsetZ, SitTargetOrientW, SitTargetOrientX, SitTargetOrientY, SitTargetOrientZ FROM dbo.prims WITH (HOLDLOCK TABLOCKX)')
DROP TABLE dbo.prims
EXECUTE sp_rename N'dbo.Tmp_prims', N'prims', 'OBJECT'
ALTER TABLE dbo.prims ADD CONSTRAINT
PK__prims__10566F31 PRIMARY KEY CLUSTERED
(
UUID
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
COMMIT

View File

@@ -0,0 +1,9 @@
BEGIN TRANSACTION
CREATE UNIQUE INDEX PrincipalID ON UserAccounts(PrincipalID);
CREATE INDEX Email ON UserAccounts(Email);
CREATE INDEX FirstName ON UserAccounts(FirstName);
CREATE INDEX LastName ON UserAccounts(LastName);
CREATE INDEX Name ON UserAccounts(FirstName,LastName);
COMMIT

View File

@@ -0,0 +1,15 @@
BEGIN TRANSACTION
CREATE TABLE [avatarattachments] (
[UUID] varchar(36) NOT NULL
, [attachpoint] int NOT NULL
, [item] varchar(36) NOT NULL
, [asset] varchar(36) NOT NULL)
CREATE NONCLUSTERED INDEX IX_avatarattachments ON dbo.avatarattachments
(
UUID
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
COMMIT

Some files were not shown because too many files have changed in this diff Show More