1 : //
2 : // Automatically generated by ipdlc.
3 : // Edit at your own risk
4 : //
5 :
6 :
7 : #include "mozilla/jsipc/PContextWrapperChild.h"
8 :
9 : #include "mozilla/ipc/PTestShellChild.h"
10 : #include "mozilla/jsipc/PObjectWrapperChild.h"
11 :
12 : typedef IPC::Message Message;
13 : typedef mozilla::ipc::RPCChannel Channel;
14 : typedef mozilla::ipc::RPCChannel::RPCListener ChannelListener;
15 : typedef base::ProcessHandle ProcessHandle;
16 : typedef mozilla::ipc::AsyncChannel AsyncChannel;
17 : typedef mozilla::ipc::SharedMemory SharedMemory;
18 : typedef mozilla::ipc::Trigger Trigger;
19 : typedef mozilla::ipc::ActorHandle ActorHandle;
20 : typedef mozilla::ipc::Shmem Shmem;
21 : using mozilla::ipc::PTestShellChild;
22 : using mozilla::jsipc::PObjectWrapperChild;
23 :
24 : namespace mozilla {
25 : namespace jsipc {
26 :
27 :
28 : void
29 0 : PContextWrapperChild::ActorDestroy(ActorDestroyReason why)
30 : {
31 0 : }
32 :
33 0 : PContextWrapperChild::PContextWrapperChild() :
34 : mId(0),
35 0 : mState(PContextWrapper::__Dead)
36 : {
37 0 : MOZ_COUNT_CTOR(PContextWrapperChild);
38 0 : }
39 :
40 0 : PContextWrapperChild::~PContextWrapperChild()
41 : {
42 0 : MOZ_COUNT_DTOR(PContextWrapperChild);
43 0 : }
44 :
45 : PTestShellChild*
46 0 : PContextWrapperChild::Manager()
47 : {
48 0 : return static_cast<PTestShellChild*>(mManager);
49 : }
50 :
51 : void
52 0 : PContextWrapperChild::ManagedPObjectWrapperChild(InfallibleTArray<PObjectWrapperChild*>& aArr) const
53 : {
54 0 : aArr = mManagedPObjectWrapperChild;
55 0 : }
56 :
57 : const InfallibleTArray<PObjectWrapperChild*>&
58 0 : PContextWrapperChild::ManagedPObjectWrapperChild() const
59 : {
60 0 : return mManagedPObjectWrapperChild;
61 : }
62 :
63 : PContextWrapper::State
64 0 : PContextWrapperChild::state()
65 : {
66 0 : return mState;
67 : }
68 :
69 : bool
70 0 : PContextWrapperChild::Send__delete__(PContextWrapperChild* actor)
71 : {
72 0 : if ((!(actor))) {
73 0 : return false;
74 : }
75 :
76 0 : if ((!(actor))) {
77 0 : return false;
78 : }
79 :
80 0 : PContextWrapper::Msg___delete__* __msg = new PContextWrapper::Msg___delete__();
81 :
82 0 : (actor)->Write(actor, __msg, false);
83 :
84 0 : (__msg)->set_routing_id((actor)->mId);
85 :
86 :
87 0 : if (mozilla::ipc::LoggingEnabled()) {
88 0 : (__msg)->Log("[PContextWrapperChild] Sending ", stderr);
89 : }
90 0 : if ((!(PContextWrapper::Transition((actor)->mState, Trigger(Trigger::Recv, PContextWrapper::Msg___delete____ID), (&((actor)->mState)))))) {
91 0 : NS_WARNING("bad state transition!");
92 : }
93 :
94 0 : bool __sendok = ((actor)->mChannel)->Send(__msg);
95 :
96 0 : (actor)->DestroySubtree(Deletion);
97 0 : (actor)->DeallocSubtree();
98 0 : ((actor)->mManager)->RemoveManagee(PContextWrapperMsgStart, actor);
99 0 : return __sendok;
100 : }
101 :
102 : PObjectWrapperChild*
103 0 : PContextWrapperChild::SendPObjectWrapperConstructor(const bool& makeGlobal)
104 : {
105 0 : return SendPObjectWrapperConstructor(AllocPObjectWrapper(makeGlobal), makeGlobal);
106 : }
107 :
108 : PObjectWrapperChild*
109 0 : PContextWrapperChild::SendPObjectWrapperConstructor(
110 : PObjectWrapperChild* actor,
111 : const bool& makeGlobal)
112 : {
113 0 : if ((!(actor))) {
114 0 : return 0;
115 : }
116 0 : (actor)->mId = Register(actor);
117 0 : (actor)->mManager = this;
118 0 : (actor)->mChannel = mChannel;
119 0 : (mManagedPObjectWrapperChild).InsertElementSorted(actor);
120 0 : (actor)->mState = mozilla::jsipc::PObjectWrapper::__Start;
121 :
122 0 : PContextWrapper::Msg_PObjectWrapperConstructor* __msg = new PContextWrapper::Msg_PObjectWrapperConstructor();
123 :
124 0 : Write(actor, __msg, false);
125 0 : Write(makeGlobal, __msg);
126 :
127 0 : (__msg)->set_routing_id(mId);
128 :
129 :
130 0 : if (mozilla::ipc::LoggingEnabled()) {
131 0 : (__msg)->Log("[PContextWrapperChild] Sending ", stderr);
132 : }
133 0 : if ((!(PContextWrapper::Transition(mState, Trigger(Trigger::Recv, PContextWrapper::Msg_PObjectWrapperConstructor__ID), (&(mState)))))) {
134 0 : NS_WARNING("bad state transition!");
135 : }
136 :
137 0 : bool __sendok = (mChannel)->Send(__msg);
138 0 : if ((!(__sendok))) {
139 0 : (actor)->DestroySubtree(FailedConstructor);
140 0 : (actor)->DeallocSubtree();
141 0 : ((actor)->mManager)->RemoveManagee(PObjectWrapperMsgStart, actor);
142 0 : return 0;
143 : }
144 0 : return actor;
145 : }
146 :
147 : int32
148 0 : PContextWrapperChild::Register(ChannelListener* aRouted)
149 : {
150 0 : return (mManager)->Register(aRouted);
151 : }
152 :
153 : int32
154 0 : PContextWrapperChild::RegisterID(
155 : ChannelListener* aRouted,
156 : int32 aId)
157 : {
158 0 : return (mManager)->RegisterID(aRouted, aId);
159 : }
160 :
161 : ChannelListener*
162 0 : PContextWrapperChild::Lookup(int32 aId)
163 : {
164 0 : return (mManager)->Lookup(aId);
165 : }
166 :
167 : void
168 0 : PContextWrapperChild::Unregister(int32 aId)
169 : {
170 0 : return (mManager)->Unregister(aId);
171 : }
172 :
173 : void
174 0 : PContextWrapperChild::RemoveManagee(
175 : int32 aProtocolId,
176 : ChannelListener* aListener)
177 : {
178 0 : switch (aProtocolId) {
179 : case PObjectWrapperMsgStart:
180 : {
181 0 : PObjectWrapperChild* actor = static_cast<PObjectWrapperChild*>(aListener);
182 0 : NS_ABORT_IF_FALSE(((mManagedPObjectWrapperChild).NoIndex) != ((mManagedPObjectWrapperChild).BinaryIndexOf(actor)), "actor not managed by this!");
183 :
184 0 : (mManagedPObjectWrapperChild).RemoveElementSorted(actor);
185 0 : DeallocPObjectWrapper(actor);
186 0 : return;
187 : }
188 : default:
189 : {
190 0 : NS_RUNTIMEABORT("unreached");
191 0 : return;
192 : }
193 : }
194 : }
195 :
196 : Shmem::SharedMemory*
197 0 : PContextWrapperChild::CreateSharedMemory(
198 : size_t aSize,
199 : Shmem::SharedMemory::SharedMemoryType type,
200 : bool unsafe,
201 : Shmem::id_t* aId)
202 : {
203 0 : return (mManager)->CreateSharedMemory(aSize, type, unsafe, aId);
204 : }
205 :
206 : bool
207 0 : PContextWrapperChild::AdoptSharedMemory(
208 : Shmem::SharedMemory* segment,
209 : Shmem::id_t* aId)
210 : {
211 0 : return (mManager)->AdoptSharedMemory(segment, aId);
212 : }
213 :
214 : Shmem::SharedMemory*
215 0 : PContextWrapperChild::LookupSharedMemory(Shmem::id_t aId)
216 : {
217 0 : return (mManager)->LookupSharedMemory(aId);
218 : }
219 :
220 : bool
221 0 : PContextWrapperChild::IsTrackingSharedMemory(Shmem::SharedMemory* segment)
222 : {
223 0 : return (mManager)->IsTrackingSharedMemory(segment);
224 : }
225 :
226 : bool
227 0 : PContextWrapperChild::DestroySharedMemory(Shmem& aShmem)
228 : {
229 0 : return (mManager)->DestroySharedMemory(aShmem);
230 : }
231 :
232 : ProcessHandle
233 0 : PContextWrapperChild::OtherProcess() const
234 : {
235 0 : return (mManager)->OtherProcess();
236 : }
237 :
238 : AsyncChannel*
239 0 : PContextWrapperChild::GetIPCChannel()
240 : {
241 0 : return mChannel;
242 : }
243 :
244 : PContextWrapperChild::Result
245 0 : PContextWrapperChild::OnMessageReceived(const Message& __msg)
246 : {
247 0 : switch ((__msg).type()) {
248 : case PContextWrapper::Reply___delete____ID:
249 : {
250 0 : return MsgProcessed;
251 : }
252 : case PContextWrapper::Reply_PObjectWrapperConstructor__ID:
253 : {
254 0 : return MsgProcessed;
255 : }
256 : default:
257 : {
258 0 : return MsgNotKnown;
259 : }
260 : }
261 : }
262 :
263 : PContextWrapperChild::Result
264 0 : PContextWrapperChild::OnMessageReceived(
265 : const Message& __msg,
266 : Message*& __reply)
267 : {
268 0 : return MsgNotKnown;
269 : }
270 :
271 : PContextWrapperChild::Result
272 0 : PContextWrapperChild::OnCallReceived(
273 : const Message& __msg,
274 : Message*& __reply)
275 : {
276 0 : return MsgNotKnown;
277 : }
278 :
279 : void
280 0 : PContextWrapperChild::OnProcessingError(Result code)
281 : {
282 0 : NS_RUNTIMEABORT("`OnProcessingError' called on non-toplevel actor");
283 0 : }
284 :
285 : bool
286 0 : PContextWrapperChild::OnReplyTimeout()
287 : {
288 0 : NS_RUNTIMEABORT("`OnReplyTimeout' called on non-toplevel actor");
289 0 : return false;
290 : }
291 :
292 : void
293 0 : PContextWrapperChild::OnChannelClose()
294 : {
295 0 : NS_RUNTIMEABORT("`OnClose' called on non-toplevel actor");
296 0 : }
297 :
298 : void
299 0 : PContextWrapperChild::OnChannelError()
300 : {
301 0 : NS_RUNTIMEABORT("`OnError' called on non-toplevel actor");
302 0 : }
303 :
304 : void
305 0 : PContextWrapperChild::OnChannelConnected(int32 pid)
306 : {
307 0 : NS_RUNTIMEABORT("'OnConnected' called on non-toplevel actor");
308 0 : }
309 :
310 : bool
311 0 : PContextWrapperChild::AllocShmem(
312 : size_t aSize,
313 : Shmem::SharedMemory::SharedMemoryType aType,
314 : Shmem* aMem)
315 : {
316 : Shmem::id_t aId;
317 0 : nsAutoPtr<Shmem::SharedMemory> rawmem(CreateSharedMemory(aSize, aType, false, (&(aId))));
318 0 : if ((!(rawmem))) {
319 0 : return false;
320 : }
321 :
322 0 : (*(aMem)) = Shmem(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead(), (rawmem).forget(), aId);
323 0 : return true;
324 : }
325 :
326 : bool
327 0 : PContextWrapperChild::AllocUnsafeShmem(
328 : size_t aSize,
329 : Shmem::SharedMemory::SharedMemoryType aType,
330 : Shmem* aMem)
331 : {
332 : Shmem::id_t aId;
333 0 : nsAutoPtr<Shmem::SharedMemory> rawmem(CreateSharedMemory(aSize, aType, true, (&(aId))));
334 0 : if ((!(rawmem))) {
335 0 : return false;
336 : }
337 :
338 0 : (*(aMem)) = Shmem(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead(), (rawmem).forget(), aId);
339 0 : return true;
340 : }
341 :
342 : bool
343 0 : PContextWrapperChild::AdoptShmem(
344 : Shmem& aMem,
345 : Shmem* aOutMem)
346 : {
347 0 : Shmem::SharedMemory* rawmem = (aMem).Segment(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead());
348 0 : if (((!(rawmem))) || (IsTrackingSharedMemory(rawmem))) {
349 0 : NS_RUNTIMEABORT("bad Shmem");
350 : }
351 :
352 : Shmem::id_t aId;
353 0 : if ((!(AdoptSharedMemory(rawmem, (&(aId)))))) {
354 0 : return false;
355 : }
356 :
357 0 : (*(aOutMem)) = Shmem(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead(), rawmem, aId);
358 0 : return true;
359 : }
360 :
361 : bool
362 0 : PContextWrapperChild::DeallocShmem(Shmem& aMem)
363 : {
364 0 : bool ok = DestroySharedMemory(aMem);
365 0 : (aMem).forget(Shmem::IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead());
366 0 : return ok;
367 : }
368 :
369 : void
370 0 : PContextWrapperChild::FatalError(const char* const msg) const
371 : {
372 : // Virtual method to prevent inlining.
373 : // This give us better error reporting.
374 : // See bug 589371
375 :
376 0 : NS_ERROR("IPDL error:");
377 0 : NS_ERROR(msg);
378 :
379 0 : NS_RUNTIMEABORT("[PContextWrapperChild] abort()ing as a result");
380 0 : }
381 :
382 : void
383 0 : PContextWrapperChild::DestroySubtree(ActorDestroyReason why)
384 : {
385 : // Unregister from our manager.
386 0 : Unregister(mId);
387 0 : mId = 1;
388 :
389 0 : ActorDestroyReason subtreewhy = (((why) == (Deletion)) || ((why) == (FailedConstructor)) ? AncestorDeletion : why);
390 :
391 : {
392 : // Recursively shutting down PObjectWrapper kids
393 0 : InfallibleTArray<PObjectWrapperChild*> kids = mManagedPObjectWrapperChild;
394 0 : for (uint32 i = 0; (i) < ((kids).Length()); (++(i))) {
395 0 : (kids[i])->DestroySubtree(subtreewhy);
396 : }
397 : }
398 :
399 : // Finally, destroy "us".
400 0 : ActorDestroy(why);
401 0 : }
402 :
403 : void
404 0 : PContextWrapperChild::DeallocSubtree()
405 : {
406 : {
407 : // Recursively deleting PObjectWrapper kids
408 0 : InfallibleTArray<PObjectWrapperChild*>& kids = mManagedPObjectWrapperChild;
409 0 : for (uint32 i = 0; (i) < ((kids).Length()); (++(i))) {
410 0 : (kids[i])->DeallocSubtree();
411 : }
412 :
413 0 : for (uint32 i = 0; (i) < ((kids).Length()); (++(i))) {
414 0 : DeallocPObjectWrapper(kids[i]);
415 : }
416 0 : (mManagedPObjectWrapperChild).Clear();
417 : }
418 0 : }
419 :
420 : void
421 0 : PContextWrapperChild::Write(
422 : PObjectWrapperChild* __v,
423 : Message* __msg,
424 : bool __nullable)
425 : {
426 : int32 id;
427 0 : if ((!(__v))) {
428 0 : if ((!(__nullable))) {
429 0 : NS_RUNTIMEABORT("NULL actor value passed to non-nullable param");
430 : }
431 0 : id = 0;
432 : }
433 : else {
434 0 : id = (__v)->mId;
435 0 : if ((1) == (id)) {
436 0 : NS_RUNTIMEABORT("actor has been |delete|d");
437 : }
438 : }
439 :
440 0 : Write(id, __msg);
441 0 : }
442 :
443 : bool
444 0 : PContextWrapperChild::Read(
445 : PObjectWrapperChild** __v,
446 : const Message* __msg,
447 : void** __iter,
448 : bool __nullable)
449 : {
450 : int32 id;
451 0 : if ((!(Read((&(id)), __msg, __iter)))) {
452 0 : return false;
453 : }
454 0 : if (((1) == (id)) || (((0) == (id)) && ((!(__nullable))))) {
455 0 : return false;
456 : }
457 :
458 0 : if ((0) == (id)) {
459 0 : (*(__v)) = 0;
460 : }
461 : else {
462 0 : (*(__v)) = static_cast<PObjectWrapperChild*>(Lookup(id));
463 0 : if ((!((*(__v))))) {
464 0 : return false;
465 : }
466 : }
467 0 : return true;
468 : }
469 :
470 : void
471 0 : PContextWrapperChild::Write(
472 : PContextWrapperChild* __v,
473 : Message* __msg,
474 : bool __nullable)
475 : {
476 : int32 id;
477 0 : if ((!(__v))) {
478 0 : if ((!(__nullable))) {
479 0 : NS_RUNTIMEABORT("NULL actor value passed to non-nullable param");
480 : }
481 0 : id = 0;
482 : }
483 : else {
484 0 : id = (__v)->mId;
485 0 : if ((1) == (id)) {
486 0 : NS_RUNTIMEABORT("actor has been |delete|d");
487 : }
488 : }
489 :
490 0 : Write(id, __msg);
491 0 : }
492 :
493 : bool
494 0 : PContextWrapperChild::Read(
495 : PContextWrapperChild** __v,
496 : const Message* __msg,
497 : void** __iter,
498 : bool __nullable)
499 : {
500 : int32 id;
501 0 : if ((!(Read((&(id)), __msg, __iter)))) {
502 0 : return false;
503 : }
504 0 : if (((1) == (id)) || (((0) == (id)) && ((!(__nullable))))) {
505 0 : return false;
506 : }
507 :
508 0 : if ((0) == (id)) {
509 0 : (*(__v)) = 0;
510 : }
511 : else {
512 0 : (*(__v)) = static_cast<PContextWrapperChild*>(Lookup(id));
513 0 : if ((!((*(__v))))) {
514 0 : return false;
515 : }
516 : }
517 0 : return true;
518 : }
519 :
520 :
521 :
522 : } // namespace jsipc
523 : } // namespace mozilla
|